/** * Returns true if the passed <code>mdbClass</code> meets the requirements set by the EJB3 spec * about bean implementation classes. The passed <code>mdbClass</code> must not be an interface * and must be public and not final and not abstract. If it passes these requirements then this * method returns true. Else it returns false. * * @param mdbClass The MDB class * @return */ private boolean assertMDBClassValidity(final ClassInfo mdbClass) { final short flags = mdbClass.flags(); final String className = mdbClass.name().toString(); // must *not* be a interface if (Modifier.isInterface(flags)) { EjbLogger.EJB3_LOGGER.mdbClassCannotBeAnInterface(className); return false; } // bean class must be public, must *not* be abstract or final if (!Modifier.isPublic(flags) || Modifier.isAbstract(flags) || Modifier.isFinal(flags)) { EjbLogger.EJB3_LOGGER.mdbClassMustBePublicNonAbstractNonFinal(className); return false; } // valid class return true; }
/** * Makes a dynamic stub class, if it does not already exist. * * @param myClass The class to create a stub for * @return The dynamic stub class */ public static Class<?> makeStubClass(final Class<?> myClass) { final String stubClassName = myClass + "_Stub"; ClassLoader cl = SecurityActions.getContextClassLoader(); if (cl == null) { cl = myClass.getClassLoader(); } if (cl == null) { throw EjbMessages.MESSAGES.couldNotFindClassLoaderForStub(stubClassName); } Class<?> theClass; try { theClass = cl.loadClass(stubClassName); } catch (ClassNotFoundException e) { try { final ClassFile clazz = IIOPStubCompiler.compile(myClass, stubClassName); theClass = clazz.define(cl); } catch (RuntimeException ex) { // there is a possibility that another thread may have defined the same class in the // meantime try { theClass = cl.loadClass(stubClassName); } catch (ClassNotFoundException e1) { EjbLogger.EJB3_LOGGER.dynamicStubCreationFailed(stubClassName, ex); throw ex; } } } return theClass; }
@Override public Boolean run() { boolean deleted = file.delete(); if (!deleted) { EjbLogger.EJB3_LOGGER.cannotDeleteCacheFile( file.isDirectory() ? "directory" : " file", file.getName()); file.deleteOnExit(); } return deleted; }