public static void clearModifiedExpandos() { for (Iterator<ClassInfo> itr = modifiedExpandos.iterator(); itr.hasNext(); ) { ClassInfo info = itr.next(); itr.remove(); info.setStrongMetaClass(null); } }
@Override public void finalizeReference() { setStrongMetaClass(null); cachedClassRef.clear(); artifactClassLoader.clear(); }
public void setNewMopMethods(List<MetaMethod> arr) { final MetaClass metaClass = classInfo.getStrongMetaClass(); if (metaClass != null) { if (metaClass.getClass() == MetaClassImpl.class) { classInfo.setStrongMetaClass(null); updateSetNewMopMethods(arr); classInfo.setStrongMetaClass(new MetaClassImpl(metaClass.getTheClass())); return; } if (metaClass.getClass() == ExpandoMetaClass.class) { classInfo.setStrongMetaClass(null); updateSetNewMopMethods(arr); ExpandoMetaClass newEmc = new ExpandoMetaClass(metaClass.getTheClass()); newEmc.initialize(); classInfo.setStrongMetaClass(newEmc); return; } throw new GroovyRuntimeException("Can't add methods to class " + getTheClass().getName() + ". Strong custom meta class already set."); } classInfo.setWeakMetaClass(null); updateSetNewMopMethods(arr); }
/** * if oldMc is null, newMc will replace whatever meta class was used before. * if oldMc is not null, then newMc will be used only if he stored mc is * the same as oldMc */ private void setMetaClass(Class theClass, MetaClass oldMc, MetaClass newMc) { final ClassInfo info = ClassInfo.getClassInfo(theClass); MetaClass mc = null; info.lock(); try { mc = info.getStrongMetaClass(); info.setStrongMetaClass(newMc); } finally { info.unlock(); } if ((oldMc == null && mc != newMc) || (oldMc != null && mc != newMc && mc != oldMc)) { fireConstantMetaClassUpdate(null, theClass, mc, newMc); } }
if (metaClass != null) { if (metaClass.getClass() == MetaClassImpl.class) { classInfo.setStrongMetaClass(null); List<MetaMethod> res = new ArrayList<MetaMethod>(); Collections.addAll(res, classInfo.newMetaMethods); MetaClassImpl answer = new MetaClassImpl(((MetaClassImpl)metaClass).getRegistry(),metaClass.getTheClass()); answer.initialize(); classInfo.setStrongMetaClass(answer); return; classInfo.setStrongMetaClass(null); updateAddNewMopMethods(arr); ExpandoMetaClass newEmc = new ExpandoMetaClass(metaClass.getTheClass()); classInfo.setStrongMetaClass(newEmc); return;
private MetaClass getMetaClassUnderLock() { MetaClass answer = getStrongMetaClass(); if (answer!=null) return answer; answer = getWeakMetaClass(); final MetaClassRegistry metaClassRegistry = GroovySystem.getMetaClassRegistry(); MetaClassRegistry.MetaClassCreationHandle mccHandle = metaClassRegistry.getMetaClassCreationHandler(); if (isValidWeakMetaClass(answer, mccHandle)) { return answer; } answer = mccHandle.create(classRef.get(), metaClassRegistry); answer.initialize(); if (GroovySystem.isKeepJavaMetaClasses()) { setStrongMetaClass(answer); } else { setWeakMetaClass(answer); } return answer; }
ClassInfo.getClassInfo(ExpandoMetaClass.class).setStrongMetaClass(emcMetaClass);
public static void clearModifiedExpandos() { for (Iterator<ClassInfo> it = modifiedExpandos.iterator(); it.hasNext(); ) { ClassInfo info = it.next(); it.remove(); info.setStrongMetaClass(null); } }
public static void clearModifiedExpandos() { for (Iterator<ClassInfo> it = modifiedExpandos.iterator(); it.hasNext(); ) { ClassInfo info = it.next(); it.remove(); info.setStrongMetaClass(null); } }
public static void clearModifiedExpandos() { for (Iterator<ClassInfo> it = modifiedExpandos.iterator(); it.hasNext(); ) { ClassInfo info = it.next(); it.remove(); info.setStrongMetaClass(null); } }
public void finalizeRef() { setStrongMetaClass(null); cachedClassRef.clear(); artifactClassLoader.clear(); super.finalizeRef(); }
public void finalizeRef() { setStrongMetaClass(null); cachedClassRef.clear(); artifactClassLoader.clear(); super.finalizeRef(); }
public void finalizeRef() { setStrongMetaClass(null); cachedClassRef.clear(); artifactClassLoader.clear(); super.finalizeRef(); }
public void setNewMopMethods(List<MetaMethod> arr) { final MetaClass metaClass = classInfo.getStrongMetaClass(); if (metaClass != null) { if (metaClass.getClass() == MetaClassImpl.class) { classInfo.setStrongMetaClass(null); updateSetNewMopMethods(arr); classInfo.setStrongMetaClass(new MetaClassImpl(metaClass.getTheClass())); return; } if (metaClass.getClass() == ExpandoMetaClass.class) { classInfo.setStrongMetaClass(null); updateSetNewMopMethods(arr); ExpandoMetaClass newEmc = new ExpandoMetaClass(metaClass.getTheClass()); newEmc.initialize(); classInfo.setStrongMetaClass(newEmc); return; } throw new GroovyRuntimeException("Can't add methods to class " + getTheClass().getName() + ". Strong custom meta class already set."); } classInfo.setWeakMetaClass(null); updateSetNewMopMethods(arr); }
public void setNewMopMethods(List arr) { final MetaClass metaClass = classInfo.getStrongMetaClass(); if (metaClass != null) { if (metaClass.getClass() == MetaClassImpl.class) { classInfo.setStrongMetaClass(null); updateSetNewMopMethods(arr); classInfo.setStrongMetaClass(new MetaClassImpl(metaClass.getTheClass())); return; } if (metaClass.getClass() == ExpandoMetaClass.class) { classInfo.setStrongMetaClass(null); updateSetNewMopMethods(arr); ExpandoMetaClass newEmc = new ExpandoMetaClass(metaClass.getTheClass()); newEmc.initialize(); classInfo.setStrongMetaClass(newEmc); return; } throw new GroovyRuntimeException("Can't add methods to class " + getTheClass().getName() + ". Strong custom meta class already set."); } classInfo.setWeakMetaClass(null); updateSetNewMopMethods(arr); }
public void setNewMopMethods(List arr) { final MetaClass metaClass = classInfo.getStrongMetaClass(); if (metaClass != null) { if (metaClass.getClass() == MetaClassImpl.class) { classInfo.setStrongMetaClass(null); updateSetNewMopMethods(arr); classInfo.setStrongMetaClass(new MetaClassImpl(metaClass.getTheClass())); return; } if (metaClass.getClass() == ExpandoMetaClass.class) { classInfo.setStrongMetaClass(null); updateSetNewMopMethods(arr); ExpandoMetaClass newEmc = new ExpandoMetaClass(metaClass.getTheClass()); newEmc.initialize(); classInfo.setStrongMetaClass(newEmc); return; } throw new GroovyRuntimeException("Can't add methods to class " + getTheClass().getName() + ". Strong custom meta class already set."); } classInfo.setWeakMetaClass(null); updateSetNewMopMethods(arr); }
/** * if oldMc is null, newMc will replace whatever meta class was used before. * if oldMc is not null, then newMc will be used only if he stored mc is * the same as oldMc */ private void setMetaClass(Class theClass, MetaClass oldMc, MetaClass newMc) { final ClassInfo info = ClassInfo.getClassInfo(theClass); MetaClass mc = null; info.lock(); try { mc = info.getStrongMetaClass(); info.setStrongMetaClass(newMc); } finally { info.unlock(); } if ((oldMc == null && mc != newMc) || (oldMc != null && mc != newMc && mc != oldMc)) { fireConstantMetaClassUpdate(null, theClass, mc, newMc); } }
/** * if oldMc is null, newMc will replace whatever meta class was used before. * if oldMc is not null, then newMc will be used only if he stored mc is * the same as oldMc */ private void setMetaClass(Class theClass, MetaClass oldMc, MetaClass newMc) { final ClassInfo info = ClassInfo.getClassInfo(theClass); MetaClass mc = null; info.lock(); try { if (oldMc!=null) mc=info.getStrongMetaClass(); // mc==null means that mc will be null too, so the // condition is always fulfilled. if (mc==oldMc) info.setStrongMetaClass(newMc); } finally { info.unlock(); } if (oldMc!=mc) fireConstantMetaClassUpdate(theClass,newMc); }
/** * if oldMc is null, newMc will replace whatever meta class was used before. * if oldMc is not null, then newMc will be used only if he stored mc is * the same as oldMc */ private void setMetaClass(Class theClass, MetaClass oldMc, MetaClass newMc) { final ClassInfo info = ClassInfo.getClassInfo(theClass); MetaClass mc = null; info.lock(); try { if (oldMc!=null) mc=info.getStrongMetaClass(); // mc==null means that mc will be null too, so the // condition is always fulfilled. if (mc==oldMc) info.setStrongMetaClass(newMc); } finally { info.unlock(); } if (oldMc!=mc) fireConstantMetaClassUpdate(theClass,newMc); }
private MetaClass getMetaClassUnderLock() { MetaClass answer; answer = getMetaClassForClass(); if (answer != null) return answer; final MetaClassRegistry metaClassRegistry = GroovySystem.getMetaClassRegistry(); answer = metaClassRegistry.getMetaClassCreationHandler() .create(get(), metaClassRegistry); answer.initialize(); if (GroovySystem.isKeepJavaMetaClasses()) { setStrongMetaClass(answer); } else { setWeakMetaClass(answer); } return answer; }