You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by mc...@apache.org on 2002/09/11 08:57:25 UTC

cvs commit: jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/playground/activation ActivationClient.java TestServant.xinfo

mcconnell    2002/09/10 23:57:24

  Modified:    assembly/lib corbaloc-1.0.jar
               assembly/src/etc/activator client.xml
               assembly/src/java/org/apache/excalibur/merlin/activation
                        Directory.java Directory.xinfo
               assembly/src/java/org/apache/excalibur/merlin/assembly
                        TypeRegistry.java
               assembly/src/java/org/apache/excalibur/merlin/service
                        DefaultRegistry.java Registry.java
               assembly/src/java/org/apache/excalibur/playground/activation
                        ActivationClient.java TestServant.xinfo
  Log:
  Updates to handle service descriptor propergation.
  
  Revision  Changes    Path
  1.6       +190 -101  jakarta-avalon-excalibur/assembly/lib/corbaloc-1.0.jar
  
  	<<Binary file>>
  
  
  1.5       +8 -4      jakarta-avalon-excalibur/assembly/src/etc/activator/client.xml
  
  Index: client.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/etc/activator/client.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- client.xml	9 Sep 2002 13:34:49 -0000	1.4
  +++ client.xml	11 Sep 2002 06:57:24 -0000	1.5
  @@ -21,6 +21,13 @@
        <include name="extensions"/>
      </library>
   
  +   <classpath>
  +     <fileset dir="lib">
  +       <include name="corbaloc-1.0.jar"/>
  +     </fileset>
  +   </classpath>
  +
  +
      <!--
      Defintion of a container within a PSS enhanced ORB folowed by a Property
      service.
  @@ -39,9 +46,6 @@
        -->
   
        <classpath>
  -       <fileset dir="lib">
  -         <include name="corbaloc-1.0.jar"/>
  -       </fileset>
          <fileset dir="build/lib">
            <include name="demo.jar"/>
          </fileset>
  @@ -62,7 +66,7 @@
            class="org.apache.excalibur.playground.activation.ActivationClient" activation="true">
          <categories priority="DEBUG"/>
          <configuration>
  -          <connection url="corbaloc:iiop:1.2@localhost:2056/public/demo"/>
  +          <connection url="corbaloc:iiop:1.2@localhost:2056/public"/>
          </configuration>
        </component>
   
  
  
  
  1.2       +35 -37    jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/activation/Directory.java
  
  Index: Directory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/activation/Directory.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Directory.java	9 Sep 2002 13:44:53 -0000	1.1
  +++ Directory.java	11 Sep 2002 06:57:24 -0000	1.2
  @@ -4,6 +4,7 @@
   import java.io.Serializable;
   import java.net.URL;
   import java.net.MalformedURLException;
  +import java.util.ArrayList;
   
   import org.apache.avalon.framework.context.Context;
   import org.apache.avalon.framework.context.ContextException;
  @@ -25,6 +26,8 @@
   import org.apache.orb.corbaloc.ServiceResolverOperations;
   import org.apache.orb.corbaloc.ServiceResolverPOATie;
   import org.apache.orb.corbaloc.ServiceResolverHelper;
  +import org.apache.orb.corbaloc.Descriptor;
  +import org.apache.orb.corbaloc.DescriptorValue;
   
   import org.openorb.corbaloc.CorbalocService;
   import org.openorb.corbaloc.CorbalocServiceHelper;
  @@ -36,6 +39,7 @@
   import org.apache.excalibur.merlin.service.UnknownServiceException;
   import org.apache.excalibur.merlin.service.InvalidPathException;
   import org.apache.excalibur.merlin.model.Resource;
  +import org.apache.excalibur.meta.info.ServiceDescriptor;
   
   import org.omg.CORBA.Any;
   import org.omg.PortableServer.POA;
  @@ -194,6 +198,7 @@
           getLogger().info("remote: " + m_corbaloc );
       }
   
  +
       //=======================================================================
       // Startable
       //=======================================================================
  @@ -293,7 +298,36 @@
           final String error = 
             "Supplied path is a local service.";
           throw new InvalidReference( path, error );
  -   }
  +    }
  +
  +   /**
  +    * Returns a sequence of services registered with the type.
  +    * @return the set of descriptors 
  +    */
  +    public Descriptor[] getDescriptors()
  +    {
  +        Resource[] resources = m_registry.getResources();
  +        ArrayList list = new ArrayList();
  +        for( int i=0; i<resources.length; i++ )
  +        {
  +            Resource resource = resources[i];
  +            ServiceDescriptor[] services = resource.getServices();
  +            for( int j=0; j<services.length; j++ )
  +            {
  +                final ServiceDescriptor service = services[j];
  +                String protocol = service.getAttribute("avalon:service.protocol", null );
  +                if( protocol != null )
  +                {
  +                    if( protocol.equals("iiop") )
  +                    {
  +                        list.add( new DescriptorValue( service ) );
  +                    }
  +                }
  +            }
  +        }
  +        return (Descriptor[]) list.toArray( new Descriptor[0] );
  +    }
  +
   
       //=======================================================================
       // Disposable
  @@ -308,40 +342,4 @@
           super.dispose();
       }
   
  -    //=======================================================================
  -    // implementation
  -    //=======================================================================
  -    
  -   /**
  -    * Pack a value in an.
  -    * @param any the Any 
  -    * @return Object the any contents as a Java Object
  -    */
  -    private Any putResult( Any any, Object object )
  -    {
  -        if( any == null )
  -        { 
  -            throw new NullPointerException("any");
  -        }
  -        if( object == null )
  -        { 
  -            throw new NullPointerException("object");
  -        }
  -
  -        if( object instanceof org.omg.CORBA.Object )
  -        {
  -            any.insert_Object( (org.omg.CORBA.Object) object );
  -            return any;
  -        }
  -        else if( object instanceof Serializable )
  -        {
  -            any.insert_Value((Serializable) object );
  -            return any;
  -        }
  -        else
  -        {
  -           throw new IllegalStateException( 
  -              "Object type: " + any.type().kind().value() + " unsupported.");
  -        }
  -    }
   }
  
  
  
  1.2       +4 -1      jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/activation/Directory.xinfo
  
  Index: Directory.xinfo
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/activation/Directory.xinfo,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Directory.xinfo	9 Sep 2002 13:44:53 -0000	1.1
  +++ Directory.xinfo	11 Sep 2002 06:57:24 -0000	1.2
  @@ -35,7 +35,10 @@
   
     <services>
       <service>
  -      <reference type="org.apache.orb.corbaloc.ServiceResolverOperations" />
  +      <attributes>
  +        <attribute key="avalon:service.protocol" value="iiop"/>
  +      </attributes>
  +      <reference type="org.apache.orb.corbaloc.ServiceResolver" />
       </service>
       <service>
         <reference type="org.apache.excalibur.merlin.container.Container" />
  
  
  
  1.11      +6 -2      jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/TypeRegistry.java
  
  Index: TypeRegistry.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/TypeRegistry.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- TypeRegistry.java	22 Aug 2002 10:20:09 -0000	1.10
  +++ TypeRegistry.java	11 Sep 2002 06:57:24 -0000	1.11
  @@ -166,7 +166,11 @@
           ServiceDescriptor[] services = type.getServices();
           for( int i=0; i<services.length; i++ )
           {
  -            vector.add( getServiceClass( services[i] ) );
  +            ServiceDescriptor service = services[i];
  +            if( service.getAttribute("avalon:service.protocol","native").equals("native") )
  +            {
  +                vector.add( getServiceClass( services[i] ) );
  +            }
           }
           return (Class[]) vector.toArray( new Class[0] );
       }
  
  
  
  1.2       +43 -21    jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/service/DefaultRegistry.java
  
  Index: DefaultRegistry.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/service/DefaultRegistry.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultRegistry.java	9 Sep 2002 13:44:53 -0000	1.1
  +++ DefaultRegistry.java	11 Sep 2002 06:57:24 -0000	1.2
  @@ -10,6 +10,7 @@
   import java.net.URL;
   import java.net.MalformedURLException;
   import java.util.Map;
  +import java.util.ArrayList;
   import java.util.Hashtable;
   import java.util.Iterator;
   
  @@ -158,13 +159,16 @@
       */
       public void bind( Resource resource )
       {
  -        final String name = resource.getProfile().getName();
  -        if( m_table.get( name ) != null )
  +        synchronized( m_children )
           {
  -            final String error = "Duplicate name: " + name;
  -            throw new IllegalArgumentException( error );
  +            final String name = resource.getProfile().getName();
  +            if( m_children.get( name ) != null )
  +            {
  +                final String error = "Duplicate name: " + name;
  +                throw new IllegalArgumentException( error );
  +            }
  +            m_children.put( name, resource );
           }
  -        m_table.put( name, resource );
       }
   
      /**
  @@ -175,19 +179,22 @@
       */
       public void unbind( Resource resource )
       {
  -        String name = resource.getProfile().getName();
  -        Iterator iterator = m_table.entrySet().iterator();
  -        while( iterator.hasNext() )
  -        {
  -             Resource res = (Resource) iterator.next();
  -             if( res.getProfile().getName().equals( name ) )
  -             {
  -                 m_table.remove( name );
  -                 break;
  -             }
  +        synchronized( m_children )
  +        {
  +            String name = resource.getProfile().getName();
  +            Iterator iterator = m_children.entrySet().iterator();
  +            while( iterator.hasNext() )
  +            {
  +                Resource res = (Resource) iterator.next();
  +                if( res.getProfile().getName().equals( name ) )
  +                {
  +                    m_children.remove( name );
  +                    break;
  +                }
  +            }
  +            final String error = "Unknown resource: " + name;
  +            throw new IllegalArgumentException( error );
           }
  -        final String error = "Unknown resource: " + name;
  -        throw new IllegalArgumentException( error );
       }
   
      /**
  @@ -203,7 +210,7 @@
           if( uri.indexOf("/") > -1 )
           {
               String name = uri.substring( 0, uri.indexOf("/") );
  -            Registry child = (Registry) m_children.get( name );
  +            Registry child = (Registry) m_table.get( name );
               if( child != null )
               {
                   return child.locate( uri.substring( uri.indexOf("/") + 1, uri.length() ) );
  @@ -224,14 +231,14 @@
               if( child != null )
               {
                   //
  -                // then forward the request to the child context
  +                // then forward the request to the child
                   //
   
                   return child.locate("");
               }
               else
               {
  -                Resource resource = (Resource) m_table.get( uri );
  +                Resource resource = (Resource) m_children.get( uri );
                   if( resource != null )
                   {
                       return resource;
  @@ -240,6 +247,21 @@
                   throw new UnknownServiceException( uri, error );
               }
           }
  +    }
  +
  +   /**
  +    * Returns a list of published resources.
  +    * @return the resources
  +    */
  +    public synchronized Resource[] getResources()
  +    {
  +        Object[] children =  m_children.keySet().toArray();
  +        ArrayList list = new ArrayList();
  +        for( int i=0; i<children.length; i++ )
  +        {
  +            list.add( m_children.get( children[i] ) );
  +        }
  +        return (Resource[]) list.toArray( new Resource[0] );
       }
   }
   
  
  
  
  1.2       +7 -1      jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/service/Registry.java
  
  Index: Registry.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/service/Registry.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Registry.java	9 Sep 2002 13:44:53 -0000	1.1
  +++ Registry.java	11 Sep 2002 06:57:24 -0000	1.2
  @@ -61,6 +61,12 @@
       */
       Resource locate( String uri ) throws UnknownServiceException, InvalidPathException;
   
  +   /**
  +    * Returns a list of published resources.
  +    * @return the set of published resources
  +    */
  +    Resource[] getResources( );
  +
   
   }
   
  
  
  
  1.3       +23 -3     jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/playground/activation/ActivationClient.java
  
  Index: ActivationClient.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/playground/activation/ActivationClient.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ActivationClient.java	9 Sep 2002 04:30:48 -0000	1.2
  +++ ActivationClient.java	11 Sep 2002 06:57:24 -0000	1.3
  @@ -17,6 +17,10 @@
   
   import org.omg.CORBA.ORB;
   import org.apache.orb.corbaloc.Handler;
  +import org.apache.orb.corbaloc.ServiceResolver;
  +import org.apache.orb.corbaloc.ServiceResolverHelper;
  +import org.apache.orb.corbaloc.Descriptor;
  +import org.apache.orb.corbaloc.Attribute;
   
   
   /**
  @@ -30,7 +34,7 @@
   
       private Configuration m_config;
   
  -    private TestCase m_object;
  +    private ServiceResolver m_object;
       private String m_path;
       private URL m_url;
       private ORB m_orb;
  @@ -79,9 +83,25 @@
               getLogger().debug("url: " + m_url );
               org.omg.CORBA.Object object = (org.omg.CORBA.Object) connection.getContent();
               getLogger().info("got an object: " + object.getClass().getName() );
  -            m_object = TestCaseHelper.narrow( object );
  -            m_object.test();
  +            m_object = ServiceResolverHelper.narrow( object );
               getLogger().debug("object: " + m_object.getClass().getName() );
  +            Descriptor[] descriptors = m_object.getDescriptors();
  +            getLogger().info("descriptor count: " + descriptors.length );
  +            for( int i=0; i<descriptors.length; i++ )
  +            {
  +                Descriptor descriptor = descriptors[i];
  +                getLogger().info( "type: " + descriptor.getType() + ":" 
  +                  + descriptor.getVersion() );
  +
  +                Attribute[] attributes = descriptor.getAttributes();
  +                for( int j=0; j<attributes.length; j++ )
  +                {
  +                    Attribute attribute = attributes[j];
  +                    getLogger().info(
  +                      "  attribute: " + attribute.getKey()
  +                      +  ", " + attribute.getValue() );
  +                }
  +            }
           }
           catch( Throwable e )
           {
  
  
  
  1.4       +11 -1     jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/playground/activation/TestServant.xinfo
  
  Index: TestServant.xinfo
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/playground/activation/TestServant.xinfo,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestServant.xinfo	10 Sep 2002 23:07:21 -0000	1.3
  +++ TestServant.xinfo	11 Sep 2002 06:57:24 -0000	1.4
  @@ -52,7 +52,17 @@
   
     <services>
       <service> 
  -      <reference type="org.apache.excalibur.playground.activation.TestCaseOperations"/>
  +      <attributes>
  +        <attribute key="avalon:service.protocol" value="iiop"/>
  +        <attribute key="avalon:service.name" value="test-case"/>
  +        <attribute key="avalon:service.title" value="Test Case"/>
  +        <attribute key="avalon:service.summary">
  +          Demonstration of the test-case remote service activation.
  +        </attribute>
  +        <attribute key="avalon:service.description" 
  +          value="http://home.osm.net/doc/merlin/test-case.html"/>
  +      </attributes>
  +      <reference type="org.apache.excalibur.playground.activation.TestCase"/>
       </service> 
     </services>
   
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>