neeme       2003/06/04 01:31:08

  Modified:    fortress/src/java/org/apache/avalon/fortress/impl/factory
                        BCELWrapperGenerator.java
  Log:
  fix synchronization problems when calling BCEL
  
  Revision  Changes    Path
  1.9       +19 -20    
avalon-excalibur/fortress/src/java/org/apache/avalon/fortress/impl/factory/BCELWrapperGenerator.java
  
  Index: BCELWrapperGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-excalibur/fortress/src/java/org/apache/avalon/fortress/impl/factory/BCELWrapperGenerator.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- BCELWrapperGenerator.java 2 Jun 2003 14:44:46 -0000       1.8
  +++ BCELWrapperGenerator.java 4 Jun 2003 08:31:08 -0000       1.9
  @@ -245,29 +245,28 @@
           final String wrapperClassName =
               classToWrap.getName() + WRAPPER_CLASS_SUFFIX;
   
  -        // Create BCEL class generator
  -        m_classGenerator =
  -            new ClassGen(
  -                wrapperClassName,
  -                WRAPPER_SUPERCLASS_NAME,
  -                null,
  -                Constants.ACC_FINAL
  -            |Constants.ACC_PUBLIC
  -            |Constants.ACC_SUPER,
  -                extractInterfaceNames( interfacesToImplement ) );
  -
  -        // Initialize method-field generator
  -        m_codeGenerator.init(
  -            wrapperClassName,
  -            WRAPPER_SUPERCLASS_NAME,
  -            javaClassToWrap,
  -            m_classGenerator );
  -
  -        final byte[] byteCode = buildWrapper( javaInterfacesToImplement );
  -
           Class generatedClass;
           synchronized ( m_bcelClassLoader )
           {
  +            // Create BCEL class generator
  +            m_classGenerator =
  +                new ClassGen(
  +                    wrapperClassName,
  +                    WRAPPER_SUPERCLASS_NAME,
  +                    null,
  +                    Constants.ACC_FINAL
  +                |Constants.ACC_PUBLIC
  +                |Constants.ACC_SUPER,
  +                    extractInterfaceNames( interfacesToImplement ) );
  +
  +            // Initialize method-field generator
  +            m_codeGenerator.init(
  +                wrapperClassName,
  +                WRAPPER_SUPERCLASS_NAME,
  +                javaClassToWrap,
  +                m_classGenerator );
  +
  +            final byte[] byteCode = buildWrapper( javaInterfacesToImplement );
               m_bcelClassLoader.setByteCode( byteCode );
               generatedClass = m_bcelClassLoader.loadClass( wrapperClassName );
               m_bcelClassLoader.clearByteCode();
  
  
  

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

Reply via email to