hammant     2003/01/19 23:45:36

  Modified:    altrmi/src/java/org/apache/excalibur/altrmi/generator
                        ProxyGeneratorImpl.java
               altrmi/src/java/org/apache/excalibur/altrmi/generator/ant
                        ProxyGenerationTask.java
               altrmi/src/java/org/apache/excalibur/altrmi/server
                        PublicationDescriptionItem.java
               altrmi/src/java/org/apache/excalibur/altrmi/server/impl/adapters
                        PublicationAdapter.java
               altrmi/src/test/org/apache/excalibur/altrmi/test
                        AbstractHelloTestCase.java TestInterfaceImpl.java
               altrmi/src/test/org/apache/excalibur/altrmi/test/socket
                        CallbackEnabledCustomStreamTestCase.java
  Log:
  toString() and hashCode() supported automatically.
  
  Revision  Changes    Path
  1.20      +18 -2     
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/ProxyGeneratorImpl.java
  
  Index: ProxyGeneratorImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/ProxyGeneratorImpl.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- ProxyGeneratorImpl.java   6 Jan 2003 23:42:11 -0000       1.19
  +++ ProxyGeneratorImpl.java   20 Jan 2003 07:45:36 -0000      1.20
  @@ -19,6 +19,7 @@
   import org.apache.excalibur.altrmi.javacompiler.JavaCompiler;
   import org.apache.excalibur.altrmi.server.PublicationDescriptionItem;
   
  +
   /**
    * Class ProxyGeneratorImpl
    *
  @@ -195,7 +196,22 @@
                   System.out.println( "ProxyGen: Processing interface: " + 
clazz.getName() );
               }
   
  -            Method[] methods = clazz.getMethods();
  +            Method[] methods = null;
  +
  +            try
  +            {
  +                Method ts = Object.class.getMethod("toString", new Class[0]);
  +                Method hc = Object.class.getMethod("hashCode", new Class[0]);
  +                Method[] interfaceMethods = clazz.getMethods();
  +                methods = new Method[interfaceMethods.length +2];
  +                System.arraycopy(interfaceMethods,0,methods, 
0,interfaceMethods.length);
  +                methods[interfaceMethods.length] = ts;
  +                methods[interfaceMethods.length+1] = hc;
  +            }
  +            catch (NoSuchMethodException e)
  +            {
  +                // never!
  +            }
   
               for( int y = 0; y < methods.length; y++ )
               {
  
  
  
  1.2       +1 -2      
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/ant/ProxyGenerationTask.java
  
  Index: ProxyGenerationTask.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/ant/ProxyGenerationTask.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProxyGenerationTask.java  9 Jan 2003 22:55:29 -0000       1.1
  +++ ProxyGenerationTask.java  20 Jan 2003 07:45:36 -0000      1.2
  @@ -260,7 +260,6 @@
               for( int i = 0; i < m_interfacesToExpose.length; i++ )
               {
                   String cn = m_interfacesToExpose[ i ];
  -
                   interfacesToExpose[ i ] = new 
PublicationDescriptionItem(classLoader.loadClass( cn ));
               }
   
  
  
  
  1.10      +8 -1      
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/PublicationDescriptionItem.java
  
  Index: PublicationDescriptionItem.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/PublicationDescriptionItem.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- PublicationDescriptionItem.java   4 Jan 2003 21:31:46 -0000       1.9
  +++ PublicationDescriptionItem.java   20 Jan 2003 07:45:36 -0000      1.10
  @@ -59,6 +59,13 @@
               // attribute jars are missing.
               // This allowed for when there is no Async functionality.
           }
  +        catch (RuntimeException re)
  +        {
  +            if 
(!re.getClass().getName().equals("org.apache.commons.attributes.AttributesException"))
  +            {
  +                throw re;
  +            }
  +        }
       }
   
       public PublicationDescriptionItem(Class facadeClass,
  
  
  
  1.10      +65 -49    
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/adapters/PublicationAdapter.java
  
  Index: PublicationAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/adapters/PublicationAdapter.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- PublicationAdapter.java   5 Jan 2003 23:24:45 -0000       1.9
  +++ PublicationAdapter.java   20 Jan 2003 07:45:36 -0000      1.10
  @@ -60,11 +60,11 @@
        * @throws PublicationException if a problem during publication.
        *
        */
  -    public void publish( Object impl, String asName, Class interfaceToExpose )
  -        throws PublicationException
  +    public void publish(Object impl, String asName, Class interfaceToExpose)
  +            throws PublicationException
       {
  -        publish( impl, asName,
  -                 new PublicationDescription( interfaceToExpose ) );
  +        publish(impl, asName,
  +                new PublicationDescription(interfaceToExpose));
       }
   
       /**
  @@ -77,74 +77,90 @@
        * @throws PublicationException if a problem during publication.
        *
        */
  -    public void publish( Object impl, String asName,
  -        PublicationDescription publicationDescription ) throws PublicationException
  +    public void publish(Object impl, String asName,
  +                        PublicationDescription publicationDescription) throws 
PublicationException
       {
   
           PublicationDescriptionItem[] interfacesToExpose = 
publicationDescription.getInterfacesToExpose();
           PublicationDescriptionItem[] additionalFacades = 
publicationDescription.getAdditionalFacades();
   
  -        if( m_publishedObjects.containsKey( asName + "_Main" ) )
  +        if (m_publishedObjects.containsKey(asName + "_Main"))
           {
  -            throw new PublicationException( "Service '" + asName + "' already 
published" );
  +            throw new PublicationException("Service '" + asName + "' already 
published");
           }
   
  -        String[] interfaceNames = new String[ interfacesToExpose.length ];
  +        String[] interfaceNames = new String[interfacesToExpose.length];
   
  -        for( int i = 0; i < interfacesToExpose.length; i++ )
  +        for (int i = 0; i < interfacesToExpose.length; i++)
           {
  -            interfaceNames[ i ] = interfacesToExpose[ i 
].getFacadeClass().getName();
  +            interfaceNames[i] = interfacesToExpose[i].getFacadeClass().getName();
           }
   
           // add method maps for main lookup-able service.
           HashMap mainMethodMap = new HashMap();
           DefaultMethodInvocationHandler mainMethodInvocationHandler =
  -            new DefaultMethodInvocationHandler( this, asName + "_Main",
  -                    mainMethodMap, publicationDescription );
  +                new DefaultMethodInvocationHandler(this, asName + "_Main",
  +                        mainMethodMap, publicationDescription);
   
  -        mainMethodInvocationHandler.addImplementationBean( new Long( 0 ), impl );
  +        mainMethodInvocationHandler.addImplementationBean(new Long(0), impl);
   
  -        for( int x = 0; x < interfacesToExpose.length; x++ )
  +        for (int x = 0; x < interfacesToExpose.length; x++)
           {
  -            Method methods[] = interfacesToExpose[ x 
].getFacadeClass().getMethods();
  +            Class clazz = interfacesToExpose[x].getFacadeClass();
   
  -            for( int y = 0; y < methods.length; y++ )
  +            Method methods[] = null;
  +            try
               {
  -                Method method = methods[ y ];
  -                String methodSignature = MethodNameHelper.getMethodSignature( 
method );
  +                Method ts = Object.class.getMethod("toString", new Class[0]);
  +                Method hc = Object.class.getMethod("hashCode", new Class[0]);
  +                Method[] interfaceMethods = clazz.getMethods();
  +                methods = new Method[interfaceMethods.length + 2];
  +                System.arraycopy(interfaceMethods, 0, methods, 0, 
interfaceMethods.length);
  +                methods[interfaceMethods.length] = ts;
  +                methods[interfaceMethods.length + 1] = hc;
  +            }
  +            catch (NoSuchMethodException e)
  +            {
  +                // never!
  +            }
  +
  +            for (int y = 0; y < methods.length; y++)
  +            {
  +                Method method = methods[y];
  +                String methodSignature = 
MethodNameHelper.getMethodSignature(method);
   
  -                if( !mainMethodMap.containsKey( methodSignature.toString() ) )
  +                if (!mainMethodMap.containsKey(methodSignature.toString()))
                   {
  -                    mainMethodMap.put( methodSignature.toString(), methods[ y ] );
  +                    mainMethodMap.put(methodSignature.toString(), methods[y]);
                   }
               }
           }
   
           // as the main service is lookup-able, it has a prexisting impl.
  -        m_publishedObjects.put( asName + "_Main", mainMethodInvocationHandler );
  +        m_publishedObjects.put(asName + "_Main", mainMethodInvocationHandler);
   
           // add method maps for all the additional facades.
  -        for( int x = 0; x < additionalFacades.length; x++ )
  +        for (int x = 0; x < additionalFacades.length; x++)
           {
  -            Method methods[] = additionalFacades[ x ].getFacadeClass().getMethods();
  -            String encodedClassName = MethodNameHelper.encodeClassName( 
additionalFacades[ x ].getFacadeClass().getName() );
  +            Method methods[] = additionalFacades[x].getFacadeClass().getMethods();
  +            String encodedClassName = 
MethodNameHelper.encodeClassName(additionalFacades[x].getFacadeClass().getName());
               HashMap methodMap = new HashMap();
               MethodInvocationHandler methodInvocationHandler =
  -                new DefaultMethodInvocationHandler( this, asName + "_" + 
encodedClassName,
  -                                                    methodMap, 
publicationDescription );
  +                    new DefaultMethodInvocationHandler(this, asName + "_" + 
encodedClassName,
  +                            methodMap, publicationDescription);
   
  -            for( int y = 0; y < methods.length; y++ )
  +            for (int y = 0; y < methods.length; y++)
               {
  -                Method method = methods[ y ];
  -                String methodSignature = MethodNameHelper.getMethodSignature( 
method );
  +                Method method = methods[y];
  +                String methodSignature = 
MethodNameHelper.getMethodSignature(method);
   
  -                if( !methodMap.containsKey( methodSignature.toString() ) )
  +                if (!methodMap.containsKey(methodSignature.toString()))
                   {
  -                    methodMap.put( methodSignature.toString(), methods[ y ] );
  +                    methodMap.put(methodSignature.toString(), methods[y]);
                   }
               }
   
  -            m_publishedObjects.put( asName + "_" + encodedClassName, 
methodInvocationHandler );
  +            m_publishedObjects.put(asName + "_" + encodedClassName, 
methodInvocationHandler);
           }
       }
   
  @@ -157,15 +173,15 @@
        * @throws PublicationException if a problem during publication.
        *
        */
  -    public void unPublish( Object impl, String publishedName ) throws 
PublicationException
  +    public void unPublish(Object impl, String publishedName) throws 
PublicationException
       {
   
  -        if( !m_publishedObjects.containsKey( publishedName + "_Main" ) )
  +        if (!m_publishedObjects.containsKey(publishedName + "_Main"))
           {
  -            throw new PublicationException( "Service '" + publishedName + "' not 
published" );
  +            throw new PublicationException("Service '" + publishedName + "' not 
published");
           }
   
  -        m_publishedObjects.remove( publishedName + "_Main" );
  +        m_publishedObjects.remove(publishedName + "_Main");
       }
   
       /**
  @@ -178,19 +194,19 @@
        * @throws PublicationException if a problem during publication.
        *
        */
  -    public void replacePublished( Object oldImpl, String publishedName, Object 
withImpl )
  -        throws PublicationException
  +    public void replacePublished(Object oldImpl, String publishedName, Object 
withImpl)
  +            throws PublicationException
       {
   
  -        if( !m_publishedObjects.containsKey( publishedName + "_Main" ) )
  +        if (!m_publishedObjects.containsKey(publishedName + "_Main"))
           {
  -            throw new PublicationException( "Service '" + publishedName + "' not 
published" );
  +            throw new PublicationException("Service '" + publishedName + "' not 
published");
           }
   
           MethodInvocationHandler asih =
  -                (MethodInvocationHandler)m_publishedObjects.get( publishedName + 
"_Main" );
  +                (MethodInvocationHandler) m_publishedObjects.get(publishedName + 
"_Main");
   
  -        asih.replaceImplementationBean( oldImpl, withImpl );
  +        asih.replaceImplementationBean(oldImpl, withImpl);
       }
   
       /**
  @@ -203,11 +219,11 @@
        * @return the method invoation handler
        *
        */
  -    public MethodInvocationHandler getMethodInvocationHandler( MethodRequest 
methodRequest,
  -                                                               String objectName )
  +    public MethodInvocationHandler getMethodInvocationHandler(MethodRequest 
methodRequest,
  +                                                              String objectName)
       {
           return (MethodInvocationHandler) m_publishedObjects.get(
  -                methodRequest.getPublishedServiceName() + "_" + objectName );
  +                methodRequest.getPublishedServiceName() + "_" + objectName);
       }
   
       /**
  @@ -219,8 +235,8 @@
        * @return the method invoation handler
        *
        */
  -    public MethodInvocationHandler getMethodInvocationHandler( String publishedName 
)
  +    public MethodInvocationHandler getMethodInvocationHandler(String publishedName)
       {
  -        return (MethodInvocationHandler) m_publishedObjects.get( publishedName );
  +        return (MethodInvocationHandler) m_publishedObjects.get(publishedName);
       }
   }
  
  
  
  1.9       +13 -0     
jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/AbstractHelloTestCase.java
  
  Index: AbstractHelloTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/AbstractHelloTestCase.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- AbstractHelloTestCase.java        21 Dec 2002 23:18:14 -0000      1.8
  +++ AbstractHelloTestCase.java        20 Jan 2003 07:45:36 -0000      1.9
  @@ -200,4 +200,17 @@
   
       }
   
  +    public void testToString() {
  +
  +        // lookup worked ?
  +        assertNotNull(testClient);
  +
  +        // Invoke a method over AltRMI.
  +        String retVal = testClient.toString();
  +
  +        // test our returned result
  +        assertEquals("YeeeeHaaaa", retVal);
  +
  +    }
  +
   }
  
  
  
  1.8       +7 -1      
jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/TestInterfaceImpl.java
  
  Index: TestInterfaceImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/TestInterfaceImpl.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- TestInterfaceImpl.java    26 Aug 2002 21:53:48 -0000      1.7
  +++ TestInterfaceImpl.java    20 Jan 2003 07:45:36 -0000      1.8
  @@ -237,4 +237,10 @@
               testCallBackListener.serverCallingClient2(this);
           }
       }
  +
  +    public String toString()
  +    {
  +        return "YeeeeHaaaa";
  +    }
  +
   }
  
  
  
  1.7       +23 -0     
jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/socket/CallbackEnabledCustomStreamTestCase.java
  
  Index: CallbackEnabledCustomStreamTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/socket/CallbackEnabledCustomStreamTestCase.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- CallbackEnabledCustomStreamTestCase.java  9 Jan 2003 22:55:28 -0000       1.6
  +++ CallbackEnabledCustomStreamTestCase.java  20 Jan 2003 07:45:36 -0000      1.7
  @@ -15,9 +15,12 @@
   import org.apache.excalibur.altrmi.test.TestInterface3;
   import org.apache.excalibur.altrmi.test.TestInterface2;
   import org.apache.excalibur.altrmi.test.AbstractHelloCallBackTestCase;
  +import org.apache.excalibur.altrmi.test.TestCallBackListener;
   import 
org.apache.excalibur.altrmi.server.impl.callback.socket.CallbackEnabledSocketCustomStreamServer;
   import org.apache.excalibur.altrmi.server.PublicationDescription;
   
  +import java.util.HashMap;
  +
   
   /**
    * Test Custom Stream over sockets.
  @@ -55,6 +58,26 @@
           // threads, AltRMI being a client/server thing
           Thread.yield();
       }
  +
  +    public void dont_testCallBack() {
  +
  +        final HashMap results = new HashMap();
  +
  +        testClient.addCallBackListener(new TestCallBackListener() {
  +            public void serverCallingClient(String message)
  +            {
  +                results.put("1", message);
  +            }
  +
  +            public void serverCallingClient2(TestInterface testInterface)
  +            {
  +                results.put("2", testInterface.toString());
  +            }
  +
  +        });
  +
  +    }
  +
   
       protected void tearDown() throws Exception
       {
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to