Author: curtisr7 Date: Tue Mar 5 16:09:21 2013 New Revision: 1452872 URL: http://svn.apache.org/r1452872 Log: OPENJPA-2346: Minor performance improvement to MetaDataRepository.
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?rev=1452872&r1=1452871&r2=1452872&view=diff ============================================================================== --- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java (original) +++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java Tue Mar 5 16:09:21 2013 @@ -39,8 +39,8 @@ import org.apache.openjpa.conf.OpenJPACo import org.apache.openjpa.enhance.DynamicPersistenceCapable; import org.apache.openjpa.enhance.PCEnhancer; import org.apache.openjpa.enhance.PCRegistry; -import org.apache.openjpa.enhance.PersistenceCapable; import org.apache.openjpa.enhance.PCRegistry.RegisterClassListener; +import org.apache.openjpa.enhance.PersistenceCapable; import org.apache.openjpa.event.LifecycleEventManager; import org.apache.openjpa.lib.conf.Configurable; import org.apache.openjpa.lib.conf.Configuration; @@ -394,6 +394,8 @@ public class MetaDataRepository implemen } private ClassMetaData getMetaDataInternal(Class<?> cls, ClassLoader envLoader, boolean mustExist) { + ClassMetaData meta = getMetaDataInternal(cls, envLoader); + if (meta == null) { if (cls != null && DynamicPersistenceCapable.class.isAssignableFrom(cls)) cls = cls.getSuperclass(); @@ -401,20 +403,20 @@ public class MetaDataRepository implemen // to locate metadata if (cls != null && _implGen != null && _implGen.isImplType(cls)) cls = _implGen.toManagedInterface(cls); + meta = getMetaDataInternal(cls, envLoader); + } + if (meta == null && mustExist) { + if (cls != null && !ImplHelper.isManagedType(_conf, cls)) + throw new MetaDataException(_loc.get("no-meta-notpc", cls)).setFatal(false); - ClassMetaData meta = getMetaDataInternal(cls, envLoader); - if (meta == null && mustExist) { - if (cls != null && !ImplHelper.isManagedType(_conf, cls)) - throw new MetaDataException(_loc.get("no-meta-notpc", cls)).setFatal(false); - - Set<String> pcNames = getPersistentTypeNames(false, envLoader); - if (pcNames != null && pcNames.size() > 0) - throw new MetaDataException(_loc.get("no-meta-types", cls, pcNames)); + Set<String> pcNames = getPersistentTypeNames(false, envLoader); + if (pcNames != null && pcNames.size() > 0) + throw new MetaDataException(_loc.get("no-meta-types", cls, pcNames)); - throw new MetaDataException(_loc.get("no-meta", cls)); - } - resolve(meta); - return meta; + throw new MetaDataException(_loc.get("no-meta", cls)); + } + resolve(meta); + return meta; } /** @@ -1920,8 +1922,8 @@ public class MetaDataRepository implemen public void endConfiguration() { initializeMetaDataFactory(); - if (_implGen == null) - _implGen = new InterfaceImplGenerator(this); + if (_implGen == null) + _implGen = new InterfaceImplGenerator(this); if (_preload == true) { _oids = new HashMap<Class<?>, Class<?>>(); _impls = new HashMap<Class<?>, Collection<Class<?>>>();