public boolean decorateAbstractClass ( ) throws DeploymentException { ClassPool pool = component . getClassPool ( ) ; ProfileAbstractClassDescriptor abstractClass = component . getDescriptor ( ) . getProfileAbstractClass ( ) ; if ( abstractClass == null ) { return false ; } String abstractClassName = abstractClass . getProfileAbstractClassName ( ) ; try { ctClass = pool . get ( abstractClassName ) ; } catch ( NotFoundException nfe ) { throw new DeploymentException ( "Could not find Abstract Class: " + abstractClassName , nfe ) ; } decorateClassJNDIAddToEnvironmentCalls ( ) ; if ( isAbstractClassDecorated ) { try { String deployDir = component . getDeploymentDir ( ) . getAbsolutePath ( ) ; ctClass . writeFile ( deployDir ) ; ctClass . detach ( ) ; // the file on disk is now in sync with the latest in-memory version if ( logger . isDebugEnabled ( ) ) { logger . debug ( "Modified Abstract Class " + ctClass . getName ( ) + " generated in the following path " + deployDir ) ; } } catch ( Throwable e ) { throw new SLEEException ( e . getMessage ( ) , e ) ; } finally { ctClass . defrost ( ) ; } return true ; } else { return false ; } }
Decorate the abstract Class