/*
* File : LogRelation.java
* Created : Nov 29, 2005
* By : TuxPaper
*
* Copyright (C) 2005, 2006 Aelitis SAS, All rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details ( see the LICENSE file ).
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* AELITIS, SAS au capital de 46,603.30 euros,
* 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France.
*/
package org.gudy.azureus2.core3.logging;
/**
* @author TuxPaper
*
*/
public class LogRelation {
/**
* A short description of what your class holds that can be printed by the logger
*
* @return
*/
public String getRelationText() {
return toString();
}
protected final String propogatedRelationText(Object o) {
if (o instanceof LogRelation)
return ((LogRelation)o).getRelationText();
return null;
}
/**
* Query this class for a reference to another class that it may hold
*
* @param c Class desired
* @return If found, the class desired. Otherwise, null.
*/
public Object[] getQueryableInterfaces() {
return null;
}
public final Object queryForClass(Class c) {
return queryForClass(c, getQueryableInterfaces());
}
private boolean running = false;
protected final Object queryForClass(Class c, Object[] queryObjects) {
if (running || queryObjects == null)
return null;
try {
running = true;
if (c.isInstance(this))
return this;
// Check if any of the objects are of c
for (int i = 0; i < queryObjects.length; i++) {
if (c.isInstance(queryObjects[i]))
return queryObjects[i];
}
// Query each object that is LogRelation
for (int i = 0; i < queryObjects.length; i++) {
if (queryObjects[i] instanceof LogRelation) {
Object obj = ((LogRelation) queryObjects[i]).queryForClass(c,
((LogRelation) queryObjects[i]).getQueryableInterfaces());
if (obj != null)
return obj;
}
}
return null;
} finally {
running = false;
}
}
}
|