Okay, attached is a version of AbstractInstrumentable that extends
AbstractLoggable, and a patch for the instrument package build that
is neccessary for the new dependency.
> This would add a new dependency from the instrument package
> to framework, though. Is that a problem for anybody?
>
> Ryan Shaw wrote:
>
> > I have no problem if whoever checks it in wants to add that.
> >
> > Peter Royal wrote:
> >
> > > On Wednesday 17 April 2002 09:37 pm, Ryan Shaw wrote:
> > > > Attached is a utility class to ease the implementation
> > > > of Instrumentables, in the tradition of AbstractLogEnabled.
> > >
> > > It would be nice if it extended AbstractLogEnabled, so you don't have to
> > > choose :)
> > > -pete
> > >
> > > --
> > > peter royal -> [EMAIL PROTECTED]
> > >
> > > --
> > > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> > > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> > >
> > >
> >
> > --
> > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> >
> >
>
> --
> To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
>
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.avalon.excalibur.instrument;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
/**
* Utility class to ease the construction of components that can be instrumented.
* Subclasses must override either <code>getChildInstrumentables</code> or
* <code>getInstruments</code>, or both, to be of any use.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Ryan Shaw</a>
*/
public abstract class AbstractInstrumentable extends AbstractLogEnabled
{
private String m_name;
/**
* Any Object which implements Instrumentable can also make use of other
* Instrumentable child objects. This method is used to tell the
* InstrumentManager about them.
*
* @return An array of child Instrumentables. This method should never
* return null. If there are no child Instrumentables, then
* EMPTY_INSTRUMENTABLE_ARRAY can be returned.
*/
public Instrumentable[] getChildInstrumentables()
{
return Instrumentable.EMPTY_INSTRUMENTABLE_ARRAY;
}
/**
* Obtain a reference to all the Instruments that the Instrumentable object
* wishes to expose. All sampling is done directly through the
* Instruments as opposed to the Instrumentable interface.
*
* @return An array of the Instruments available for profiling. Should
* never be null. If there are no Instruments, then
* EMPTY_INSTRUMENT_ARRAY can be returned. This should never be
* the case though unless there are child Instrumentables with
* Instruments.
*/
public Instrument[] getInstruments()
{
return Instrumentable.EMPTY_INSTRUMENT_ARRAY;
}
/**
* Gets the name of the Instrumentable.
*
* @return The name used to identify a Instrumentable.
*/
public String getInstrumentableName()
{
return m_name;
}
/**
* Sets the name for the Instrumentable. The Instrumentable Name is used
* to uniquely identify the Instrumentable during the configuration of
* the InstrumentManager and to gain access to an InstrumentableDescriptor
* through the InstrumentManager. The value should be a string which does
* not contain spaces or periods.
* <p>
* This value may be set by a parent Instrumentable, or by the
* InstrumentManager using the value of the 'instrumentable' attribute in
* the configuration of the component.
*
* @param name The name used to identify a Instrumentable.
*/
public void setInstrumentableName(String name)
{
m_name = name;
}
}
Index: build.xml
===================================================================
RCS file: /home/cvspublic/jakarta-avalon-excalibur/instrument/build.xml,v
retrieving revision 1.12
diff -u -r1.12 build.xml
--- build.xml 8 Apr 2002 12:15:41 -0000 1.12
+++ build.xml 18 Apr 2002 02:07:58 -0000
@@ -13,6 +13,7 @@
<path id="project.class.path">
<pathelement path="${java.class.path}"/>
<pathelement location="${build.classes}"/>
+ <pathelement location="${avalon-framework.jar}"/>
<pathelement location="${junit.jar}"/>
<pathelement location="${checkstyle.jar}"/>
</path>
Index: default.properties
===================================================================
RCS file: /home/cvspublic/jakarta-avalon-excalibur/instrument/default.properties,v
retrieving revision 1.3
diff -u -r1.3 default.properties
--- default.properties 8 Apr 2002 10:32:10 -0000 1.3
+++ default.properties 18 Apr 2002 02:07:58 -0000
@@ -13,6 +13,12 @@
# --------------------------------------------------
# REQUIRED LIBRARIES
# --------------------------------------------------
+
+# ----- Avalon Framework, version 4.1 or later -----
+avalon-framework.home=${basedir}/../../jakarta-avalon
+avalon-framework.lib=${avalon-framework.home}/build/lib
+avalon-framework.jar=${avalon-framework.lib}/avalon-framework.jar
+
# --------------------------------------------------
# Settings used to configure compile environment
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>