/* * 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; } } }