crafterm    2003/01/17 03:31:18

  Modified:    src/scratchpad/src/org/apache/cocoon/webservices/instrument
                        DeploymentDescriptor.wsdd
                        InstrumentationService.java
                        InstrumentationServiceImpl.java
  Log:
  * Implemented getSampleNames(). This allows one to obtain a list of available
    instrument samples, eg. for browsing purposes.
  
  Revision  Changes    Path
  1.2       +1 -1      
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/webservices/instrument/DeploymentDescriptor.wsdd
  
  Index: DeploymentDescriptor.wsdd
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/webservices/instrument/DeploymentDescriptor.wsdd,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DeploymentDescriptor.wsdd 8 Nov 2002 17:39:19 -0000       1.1
  +++ DeploymentDescriptor.wsdd 17 Jan 2003 11:31:17 -0000      1.2
  @@ -5,7 +5,7 @@
     <parameter name="role" 
value="org.apache.cocoon.webservices.instrument.InstrumentationService"/>
     <parameter name="className" 
value="org.apache.cocoon.webservices.instrument.InstrumentationService"/>
     <parameter name="handlerClass" 
value="org.apache.cocoon.components.axis.providers.AvalonProvider"/>
  -  <parameter name="allowedMethods" value="getSampleSnapshot"/>
  +  <parameter name="allowedMethods" value="getSampleSnapshot getSampleNames"/>
    </service>
   
   </deployment>
  
  
  
  1.2       +8 -1      
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/webservices/instrument/InstrumentationService.java
  
  Index: InstrumentationService.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/webservices/instrument/InstrumentationService.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InstrumentationService.java       8 Nov 2002 17:39:19 -0000       1.1
  +++ InstrumentationService.java       17 Jan 2003 11:31:17 -0000      1.2
  @@ -98,4 +98,11 @@
        */
       int[] getSampleSnapshot(String path)
           throws Exception;
  +
  +    /**
  +     * Obtains an array of instrumentable sample names
  +     *
  +     * @return a {@link String[]} array of sample names
  +     */
  +    String[] getSampleNames();
   }
  
  
  
  1.2       +59 -13    
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/webservices/instrument/InstrumentationServiceImpl.java
  
  Index: InstrumentationServiceImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/webservices/instrument/InstrumentationServiceImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InstrumentationServiceImpl.java   8 Nov 2002 17:39:19 -0000       1.1
  +++ InstrumentationServiceImpl.java   17 Jan 2003 11:31:17 -0000      1.2
  @@ -50,10 +50,15 @@
   */
   package org.apache.cocoon.webservices.instrument;
   
  +import java.util.ArrayList;
  +import java.util.List;
  +
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.excalibur.instrument.InstrumentManager;
   import org.apache.excalibur.instrument.manager.DefaultInstrumentManager;
   import org.apache.excalibur.instrument.manager.interfaces.InstrumentableDescriptor;
  +import org.apache.excalibur.instrument.manager.interfaces.InstrumentDescriptor;
  +import 
org.apache.excalibur.instrument.manager.interfaces.InstrumentSampleDescriptor;
   
   /**
    * Implementation of {@link InstrumentationService} component. This component
  @@ -65,8 +70,8 @@
   public final class InstrumentationServiceImpl extends AbstractLogEnabled
       implements InstrumentationService {
   
  -    // empty integer array, used if a sample is request, but no manager exists.
       private static final int[] EMPTY_INT_ARRAY = {};
  +    private static final String[] EMPTY_STRING_ARRAY = {};
   
       // instrument manager reference
        private DefaultInstrumentManager m_iManager;
  @@ -129,12 +134,11 @@
           throws Exception {
   
           // ensure we have an instrument manager available
  -        if (m_iManager == null) {
  -            if (getLogger().isWarnEnabled())
  -                getLogger().warn(
  -                    "No instrument manager available," +
  -                    "please enable instrumentation in your web.xml"
  -                );
  +        if (!haveInstrumentManager()) {
  +            getLogger().warn(
  +               "No instrument manager available," +
  +               "please enable instrumentation in your web.xml"
  +            );
               return EMPTY_INT_ARRAY;
           }
   
  @@ -144,12 +148,54 @@
       }
   
       /**
  -     * REVISIT: this is currently unused, but might be good for browsing
  -     * instrument samples in the future.
  +     * Obtain a list of available samples, useful for browsing
  +     * available samples.
  +     *
  +     * @return an {@link String}[] array of sample names
  +     */
  +    public String[] getSampleNames() {
  +
  +        // ensure we have an instrument manager available
  +        if (!haveInstrumentManager()) {
  +            getLogger().warn(
  +                "No instrument manager available," +
  +                "please enable instrumentation in your web.xml"
  +            );
  +            return EMPTY_STRING_ARRAY;
  +        }
  +
  +        // list all instrumentables
  +        final InstrumentableDescriptor[] descriptors =
  +            m_iManager.getInstrumentableDescriptors();
  +        final List names = new ArrayList();
  +
  +        for (int i = 0; i < descriptors.length; ++i) {
  +
  +            // list all instruments 
  +            InstrumentDescriptor[] insts =
  +                descriptors[i].getInstrumentDescriptors();
  +
  +            for (int k = 0; k < insts.length; ++k) {
  +
  +                // list all samples
  +                InstrumentSampleDescriptor[] samples =
  +                    insts[k].getInstrumentSampleDescriptors();
  +
  +                for (int j = 0; j < samples.length; ++j) {
  +                    names.add(samples[j].getName());
  +                }
  +            }
  +        }
  +
  +        return (String[])names.toArray(new String[]{});
  +    }
  +
  +    /**
  +     * Helper method to determine if a valid instrument manager is available
        *
  -     * @return an {@link InstrumentableDescriptor}[] value
  +     * @return true if an instrument manager is present, false otherwise
        */
  -    public InstrumentableDescriptor[] getInstrumentableDescriptors() {
  -        return m_iManager.getInstrumentableDescriptors();
  +    private boolean haveInstrumentManager() {
  +        return (m_iManager != null);
       }
   }
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to