You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by jr...@apache.org on 2009/09/23 17:07:31 UTC
svn commit: r818134 -
/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
Author: jrbauer
Date: Wed Sep 23 15:07:31 2009
New Revision: 818134
URL: http://svn.apache.org/viewvc?rev=818134&view=rev
Log:
OPENJPA-1325 Defer embeddable population until after class metadata is parsed.
Modified:
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java?rev=818134&r1=818133&r2=818134&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java Wed Sep 23 15:07:31 2009
@@ -114,6 +114,8 @@
// after embeddables are loaded.
private static final Map<Class<?>, ArrayList<MetaDataContext>>
_embeddables = new HashMap<Class<?>, ArrayList<MetaDataContext>>();
+ private static final Map<Class<?>, Integer>
+ _embeddableAccess = new HashMap<Class<?>, Integer>();
static {
_elems.put(ELEM_PKG, ELEM_PKG);
@@ -896,7 +898,7 @@
if (embeddable) {
meta.setEmbeddable();
- addDeferredEmbeddableMetaData(_cls, access);
+ setDeferredEmbeddableAccessType(_cls, access);
}
}
@@ -1955,8 +1957,12 @@
new Class<?>[_embeddables.size()]);
for (int i = classes.length - 1 ; i >= 0; i--) {
try {
+ Integer access = _embeddableAccess.get(classes[i]);
+ if (access == null) {
+ access = AccessCode.UNKNOWN;
+ }
addDeferredEmbeddableMetaData(classes[i],
- AccessCode.UNKNOWN);
+ access);
}
catch (Exception e) {
throw new MetaDataException(
@@ -1996,6 +2002,10 @@
_embeddables.remove(embedType);
}
}
+ protected void setDeferredEmbeddableAccessType(Class<?> embedType,
+ int access) {
+ _embeddableAccess.put(embedType, access);
+ }
/*
* Clear any deferred metadata
@@ -2003,6 +2013,7 @@
@Override
protected void clearDeferredMetaData() {
_embeddables.clear();
+ _embeddableAccess.clear();
}
/*