public SerializableClassRegistry run() { return SerializableClassRegistry.getInstance(); } });
/** * {@inheritDoc} This implementation will attempt to create a new constructor if one is not available. */ protected <T> Constructor<T> getNewConstructor(final Class<T> clazz) { return registry.lookup(clazz).getNoInitConstructor(); } }
public SerializableClassDescriptor run() { final SerializableClassRegistry reg = SerializableClassRegistry.getInstance(); final SerializableClass serializableClass = reg.lookup(subject); final SerializableField[] fields = serializableClass.getFields(); final boolean hasWriteObject = serializableClass.hasWriteObject(); try { return new BasicSerializableClassDescriptor(serializableClass, superDescriptor, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); } } });
private static void cleanUpLoader(ClassLoader loader, Set<ClassLoader> encounteredLoaders, Set<Class<?>> encounteredClasses) throws Exception { if (loader instanceof CpsGroovyShell.TimingLoader) { cleanUpLoader(loader.getParent(), encounteredLoaders, encounteredClasses); return; } if (!(loader instanceof GroovyClassLoader)) { LOGGER.log(Level.FINER, "ignoring {0}", loader); return; } if (!encounteredLoaders.add(loader)) { return; } cleanUpLoader(loader.getParent(), encounteredLoaders, encounteredClasses); LOGGER.log(Level.FINER, "found {0}", String.valueOf(loader)); SerializableClassRegistry.getInstance().release(loader); cleanUpGlobalClassValue(loader); GroovyClassLoader gcl = (GroovyClassLoader) loader; for (Class<?> clazz : gcl.getLoadedClasses()) { if (encounteredClasses.add(clazz)) { LOGGER.log(Level.FINER, "found {0}", clazz.getName()); Introspector.flushFromCaches(clazz); cleanUpGlobalClassSet(clazz); cleanUpObjectStreamClassCaches(clazz); cleanUpLoader(clazz.getClassLoader(), encounteredLoaders, encounteredClasses); } } gcl.clearCache(); }
public void undeploy(final DeploymentUnit context) { final Module module = context.getAttachment(Attachments.MODULE); if (module != null) { REGISTRY.release(module.getClassLoader()); } } }
public SerializableClassDescriptor run() { final SerializableClassRegistry reg = SerializableClassRegistry.getInstance(); final SerializableClass serializableClass = reg.lookup(subject); final SerializableField[] fields = serializableClass.getFields(); final boolean hasWriteObject = serializableClass.hasWriteObject(); try { return new BasicSerializableClassDescriptor(serializableClass, superDescriptor, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); } } });
public void undeploy(final DeploymentUnit context) { final Module module = context.getAttachment(Attachments.MODULE); if (module != null) { REGISTRY.release(module.getClassLoader()); } } }
public SerializableClassRegistry run() { return SerializableClassRegistry.getInstance(); } });
/** * Get the constructor to use for a class. Returns {@code null} if no suitable constructor is available. * * @param clazz the class to get a constructor for * @return the constructor, or {@code null} if none is available */ protected <T> Constructor<T> getNewConstructor(final Class<T> clazz) { return registry.lookup(clazz).getNoArgConstructor(); }
public SerializableClassDescriptor run() { final SerializableClassRegistry reg = SerializableClassRegistry.getInstance(); final SerializableClass serializableClass = reg.lookup(subject); final SerializableField[] fields = serializableClass.getFields(); final boolean hasWriteObject = serializableClass.hasWriteObject(); try { return new BasicSerializableClassDescriptor(serializableClass, superDescriptor, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); } } });
public void undeploy(final DeploymentUnit context) { final Module module = context.getAttachment(Attachments.MODULE); if (module != null) { REGISTRY.release(module.getClassLoader()); } } }
/** * Create a new instance. * * @param configuration the configuration to use */ SerializingCloner(final ClonerConfiguration configuration) { final CloneTable delegate = configuration.getCloneTable(); this.delegate = delegate == null ? CloneTable.NULL : delegate; final ObjectResolver objectResolver = configuration.getObjectResolver(); this.objectResolver = objectResolver == null ? Marshalling.nullObjectResolver() : objectResolver; final ObjectResolver objectPreResolver = configuration.getObjectPreResolver(); this.objectPreResolver = objectPreResolver == null ? Marshalling.nullObjectResolver() : objectPreResolver; final ClassCloner classCloner = configuration.getClassCloner(); this.classCloner = classCloner == null ? ClassCloner.IDENTITY : classCloner; final SerializabilityChecker serializabilityChecker = configuration.getSerializabilityChecker(); this.serializabilityChecker = serializabilityChecker == null ? SerializabilityChecker.DEFAULT : serializabilityChecker; final int bufferSize = configuration.getBufferSize(); this.bufferSize = bufferSize < 1 ? 8192 : bufferSize; registry = SerializableClassRegistry.getInstance(); }
/** * {@inheritDoc} The base implementation uses the class loader returned from {@code getClassLoader()} and * loads the class by name. */ public Class<?> resolveClass(final Unmarshaller unmarshaller, final String name, final long serialVersionUID) throws IOException, ClassNotFoundException { final Class<?> clazz = loadClass(name); if (enforceSerialVersionUid && serialVersionUID != 0L) { final long uid = registry.lookup(clazz).getEffectiveSerialVersionUID(); if (uid != serialVersionUID) { throw new StreamCorruptedException("serialVersionUID does not match!"); } } return clazz; }
public SerializableClassDescriptor run() { final SerializableClassRegistry reg = SerializableClassRegistry.getInstance(); final SerializableClass serializableClass = reg.lookup(subject); final SerializableField[] fields = serializableClass.getFields(); final boolean hasWriteObject = serializableClass.hasWriteObject(); try { return new BasicSerializableClassDescriptor(serializableClass, superDescriptor, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); } } });
public SerializableClassRegistry run() { return SerializableClassRegistry.getInstance(); } });
final Class<?> superclass = clazz.getSuperclass(); if (superclass != null) { final SerializableClass superInfo = REGISTRY.lookup(superclass); final Method otherReadResolve = superInfo.getSerMethods().readResolve; if (readResolve == null && otherReadResolve != null && ! Modifier.isPrivate(otherReadResolve.getModifiers())) {
public SerializableClassDescriptor run() { final SerializableClassRegistry reg = SerializableClassRegistry.getInstance(); final SerializableClass serializableClass = reg.lookup(subject); final SerializableField[] fields = serializableClass.getFields(); final boolean hasWriteObject = serializableClass.hasWriteObject(); try { return new SerializableClassDescriptor(serializableClass, null, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); } } });
public SerializableClassRegistry run() { return SerializableClassRegistry.getInstance(); } });
SerializableClass(Class<?> subject) { this.subject = subject; final IdentityHashMap<Class<?>, Constructor<?>> constructorMap = new IdentityHashMap<Class<?>, Constructor<?>>(); for (Class<?> t = subject.getSuperclass(); t != null; t = t.getSuperclass()) { final SerializableClass lookedUp = REGISTRY.lookup(t); final Constructor<?> constructor = lookedUp.serMethods.getNoArgConstructor(); if (constructor != null) { constructorMap.put(t, JDKSpecific.newConstructorForSerialization(subject, constructor)); } } nonInitConstructors = constructorMap; // private methods serMethods = new JDKSpecific.SerMethods(subject); final ObjectStreamClass objectStreamClass = ObjectStreamClass.lookup(subject); effectiveSerialVersionUID = objectStreamClass == null ? 0L : objectStreamClass.getSerialVersionUID(); // todo find a better solution final HashMap<String, SerializableField> fieldsByName = new HashMap<String, SerializableField>(); for (SerializableField serializableField : fields = getSerializableFields(subject)) { fieldsByName.put(serializableField.getName(), serializableField); } this.fieldsByName = fieldsByName; }
public SerializableClassDescriptor run() { final SerializableClassRegistry reg = SerializableClassRegistry.getInstance(); final SerializableClass serializableClass = reg.lookup(subject); final SerializableField[] fields = serializableClass.getFields(); final boolean hasWriteObject = serializableClass.hasWriteObject(); try { return new BasicSerializableClassDescriptor(serializableClass, superDescriptor, fields, Externalizable.class.isAssignableFrom(subject) ? Protocol.ID_EXTERNALIZABLE_CLASS : hasWriteObject ? Protocol.ID_WRITE_OBJECT_CLASS : Protocol.ID_SERIALIZABLE_CLASS); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); } } });