hivemind-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hls...@apache.org
Subject cvs commit: jakarta-hivemind/framework/src/java/org/apache/hivemind/service ClassFabUtils.java
Date Tue, 14 Sep 2004 17:56:51 GMT
hlship      2004/09/14 10:56:51

  Modified:    .        status.xml
               library/src/java/org/apache/hivemind/lib/impl
                        ServicePropertyFactory.java
               framework/src/java/org/apache/hivemind/service/impl
                        LoggingInterceptorFactory.java
               framework/src/java/org/apache/hivemind/service
                        ClassFabUtils.java
  Added:       framework/src/test/org/apache/hivemind/service/impl
                        TestLoggingInterceptorFactory.java
                        TestClassFabUtils.java
  Log:
  HIVEMIND-55: Make fabricated classes work with JDK proxies.
  
  Revision  Changes    Path
  1.2       +97 -0     jakarta-hivemind/framework/src/test/org/apache/hivemind/service/impl/TestLoggingInterceptorFactory.java
  
  
  
  
  1.2       +42 -0     jakarta-hivemind/framework/src/test/org/apache/hivemind/service/impl/TestClassFabUtils.java
  
  
  
  
  1.60      +6 -0      jakarta-hivemind/status.xml
  
  Index: status.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-hivemind/status.xml,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- status.xml	13 Sep 2004 14:48:16 -0000	1.59
  +++ status.xml	14 Sep 2004 17:56:51 -0000	1.60
  @@ -37,6 +37,12 @@
         </action>
       </release>
   
  +   <release version="1.0" date="unreleased">
  +    <action type="fix" dev="HLS" fixes-bug="HIVEMIND-55">
  +      Ensure that the logging interceptor will work properly when wrapping around JDK dynamic
proxies.
  +    </action>
  +   </release>
  +
      <release version="1.0-rc-2" date="Sep 11 2004">
         <action type="add" dev="HLS">
           Add method <code>getSymbolValue()</code> to RegistryInfrastructure
and Module
  
  
  
  1.6       +1 -1      jakarta-hivemind/library/src/java/org/apache/hivemind/lib/impl/ServicePropertyFactory.java
  
  Index: ServicePropertyFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-hivemind/library/src/java/org/apache/hivemind/lib/impl/ServicePropertyFactory.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ServicePropertyFactory.java	13 Sep 2004 14:48:16 -0000	1.5
  +++ ServicePropertyFactory.java	14 Sep 2004 17:56:51 -0000	1.6
  @@ -111,7 +111,7 @@
       {
           cf.addInterface(serviceInterface);
   
  -        Class targetServiceClass = targetService.getClass();
  +        Class targetServiceClass = ClassFabUtils.getInstanceClass(targetService, serviceInterface);
   
           cf.addField("_targetService", targetServiceClass);
   
  
  
  
  1.10      +1 -1      jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/LoggingInterceptorFactory.java
  
  Index: LoggingInterceptorFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/LoggingInterceptorFactory.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- LoggingInterceptorFactory.java	13 Sep 2004 14:48:15 -0000	1.9
  +++ LoggingInterceptorFactory.java	14 Sep 2004 17:56:51 -0000	1.10
  @@ -219,7 +219,7 @@
   
       private void createInfrastructure(InterceptorStack stack, ClassFab classFab)
       {
  -        Class topClass = stack.peek().getClass();
  +        Class topClass = ClassFabUtils.getInstanceClass(stack.peek(), stack.getServiceInterface());
   
           classFab.addField("_log", Log.class);
   
  
  
  
  1.4       +36 -18    jakarta-hivemind/framework/src/java/org/apache/hivemind/service/ClassFabUtils.java
  
  Index: ClassFabUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/service/ClassFabUtils.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ClassFabUtils.java	12 Jun 2004 18:43:41 -0000	1.3
  +++ ClassFabUtils.java	14 Sep 2004 17:56:51 -0000	1.4
  @@ -16,10 +16,11 @@
   
   import java.lang.reflect.Method;
   import java.lang.reflect.Modifier;
  +import java.lang.reflect.Proxy;
   
   /**
    * Static class containing utility methods.
  - *
  + * 
    * @author Howard Lewis Ship
    */
   public class ClassFabUtils
  @@ -33,8 +34,7 @@
       }
   
       /**
  -     * Generates a unique class name, which will be in the
  -     * default package.
  +     * Generates a unique class name, which will be in the default package.
        */
   
       public static synchronized String generateClassName(String baseName)
  @@ -43,11 +43,10 @@
       }
   
       /**
  -     * Javassist needs the class name to be as it appears in source code, even for arrays.
  -     * Invoking getName() on a Class instance representing an array returns the internal
  -     * format (i.e, "[...;" or something).  This returns it as it would appear in
  -     * Java code.
  -     *
  +     * Javassist needs the class name to be as it appears in source code, even
  +     * for arrays. Invoking getName() on a Class instance representing an array
  +     * returns the internal format (i.e, "[...;" or something). This returns it
  +     * as it would appear in Java code.
        */
       public static String getJavaClassName(Class inputClass)
       {
  @@ -58,9 +57,9 @@
       }
   
       /**
  -     * Returns true if the method is the standard toString() method.
  -     * Very few interfaces will ever include this method as part of
  -     * the interface, but we have to be sure.
  +     * Returns true if the method is the standard toString() method. Very few
  +     * interfaces will ever include this method as part of the interface, but we
  +     * have to be sure.
        */
       public static boolean isToString(Method method)
       {
  @@ -77,8 +76,10 @@
        * Adds a <code>toString()</code> method to a class that returns a fixed,
        * pre-computed value.
        * 
  -     * @param classFab ClassFab used to construct the new class.
  -     * @param toStringResult fixed result to be returned by the method.
  +     * @param classFab
  +     *            ClassFab used to construct the new class.
  +     * @param toStringResult
  +     *            fixed result to be returned by the method.
        */
       public static void addToStringMethod(ClassFab classFab, String toStringResult)
       {
  @@ -88,10 +89,27 @@
           buffer.append(QUOTE);
           buffer.append(";");
   
  -        classFab.addMethod(
  -            Modifier.PUBLIC,
  -            new MethodSignature(String.class, "toString", null, null),
  -            buffer.toString());
  +        classFab.addMethod(Modifier.PUBLIC, new MethodSignature(String.class, "toString",
null, null), buffer
  +                .toString());
       }
   
  -}
  +    /**
  +     * Returns the class of an instance. However, if the instance is, in fact, a
  +     * JDK proxy, returns the interfaceClass (because JDK proxies do not work
  +     * with Javassist).
  +     * 
  +     * @param instance
  +     *            the object instance to obtain a class from
  +     * @param interfaceClass
  +     *            the interface class to return if the instance is a JDK proxy.
  +     */
  +    public static Class getInstanceClass(Object instance, Class interfaceClass)
  +    {
  +        Class instanceClass = instance.getClass();
  +
  +        if (Proxy.isProxyClass(instanceClass))
  +            return interfaceClass;
  +
  +        return instanceClass;
  +    }
  +}
  \ No newline at end of file
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-cvs-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-cvs-help@jakarta.apache.org


Mime
View raw message