Revision: 5036
http://datanucleus.svn.sourceforge.net/datanucleus/?rev=5036&view=rev
Author: ebengtso
Date: 2009-02-10 19:05:18 +0000 (Tue, 10 Feb 2009)
Log Message:
-----------
[NUCCORE-176] Metadata initialise methods taking the ClassLoaderResolver as argument
Modified Paths:
--------------
platform/core/trunk/src/java/org/datanucleus/metadata/AbstractClassMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/AbstractConstraintMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/AbstractElementMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/AbstractMemberMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/ArrayMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/ClassMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/CollectionMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/DiscriminatorMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/EmbeddedMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/FetchGroupMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/IdentityMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/InheritanceMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/InterfaceMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/JoinMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/MapMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/MetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/MetaDataManager.java
platform/core/trunk/src/java/org/datanucleus/metadata/OrderMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/PackageMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/PrimaryKeyMetaData.java
platform/core/trunk/src/java/org/datanucleus/metadata/VersionMetaData.java
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/AbstractClassMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/AbstractClassMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/AbstractClassMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -1128,7 +1128,7 @@
* If populate() is going to be used it should be used BEFORE calling this method.
* Subclasses must overwrite this method and invoke this
*/
- public abstract void initialise();
+ public abstract void initialise(ClassLoaderResolver clr);
/**
* Method to initialise all convenience information about member positions and what role
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/AbstractConstraintMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/AbstractConstraintMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/AbstractConstraintMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -20,6 +20,8 @@
import java.util.ArrayList;
import java.util.List;
+import org.datanucleus.ClassLoaderResolver;
+
/**
* Abstract representation of an ORM constraint.
*/
@@ -59,7 +61,7 @@
* Method to initialise the object, creating internal convenience arrays.
* Initialise all sub-objects.
*/
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
if (isInitialised())
{
@@ -77,7 +79,7 @@
for (int i=0; i<memberMetaData.length; i++)
{
memberMetaData[i] = (AbstractMemberMetaData) members.get(i);
- memberMetaData[i].initialise();
+ memberMetaData[i].initialise(clr);
}
}
@@ -92,7 +94,7 @@
for (int i=0; i<columnMetaData.length; i++)
{
columnMetaData[i] = (ColumnMetaData) columns.get(i);
- columnMetaData[i].initialise();
+ columnMetaData[i].initialise(clr);
}
}
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/AbstractElementMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/AbstractElementMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/AbstractElementMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -127,7 +127,7 @@
* Method to initialise the object, creating any convenience arrays needed.
* Initialises all sub-objects.
*/
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
// Cater for user specifying column name, or columns
if (columns.size() == 0 && columnName != null)
@@ -136,7 +136,7 @@
columnMetaData[0] = new ColumnMetaData();
columnMetaData[0].setName(columnName);
columnMetaData[0].parent = this;
- columnMetaData[0].initialise();
+ columnMetaData[0].initialise(clr);
}
else
{
@@ -144,7 +144,7 @@
for (int i=0; i<columnMetaData.length; i++)
{
columnMetaData[i] = columns.get(i);
- columnMetaData[i].initialise();
+ columnMetaData[i].initialise(clr);
}
}
@@ -160,7 +160,7 @@
}
if (indexMetaData != null)
{
- indexMetaData.initialise();
+ indexMetaData.initialise(clr);
}
if (uniqueMetaData == null && unique)
@@ -174,17 +174,17 @@
}
if (uniqueMetaData != null)
{
- uniqueMetaData.initialise();
+ uniqueMetaData.initialise(clr);
}
if (foreignKeyMetaData != null)
{
- foreignKeyMetaData.initialise();
+ foreignKeyMetaData.initialise(clr);
}
if (embeddedMetaData != null)
{
- embeddedMetaData.initialise();
+ embeddedMetaData.initialise(clr);
}
setInitialised();
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/AbstractMemberMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/AbstractMemberMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/AbstractMemberMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -987,7 +987,7 @@
* method if you are going to use populate. It creates the internal
* convenience arrays etc needed for normal operation.
*/
- public synchronized void initialise()
+ public synchronized void initialise(ClassLoaderResolver clr)
{
if (persistenceModifier == FieldPersistenceModifier.NONE)
{
@@ -1002,7 +1002,7 @@
columnMetaData[0] = new ColumnMetaData();
columnMetaData[0].setName(column);
columnMetaData[0].parent = this;
- columnMetaData[0].initialise();
+ columnMetaData[0].initialise(clr);
}
else if (columns.size() == 1 && column != null)
{
@@ -1013,7 +1013,7 @@
{
columnMetaData[0].setName(column);
}
- columnMetaData[0].initialise();
+ columnMetaData[0].initialise(clr);
}
else
{
@@ -1021,34 +1021,34 @@
for (int i=0; i<columnMetaData.length; i++)
{
columnMetaData[i] = columns.get(i);
- columnMetaData[i].initialise();
+ columnMetaData[i].initialise(clr);
}
}
// Initialise all sub-objects
if (container != null)
{
- container.initialise();
+ container.initialise(clr);
}
if (embeddedMetaData != null)
{
- embeddedMetaData.initialise();
+ embeddedMetaData.initialise(clr);
}
if (joinMetaData != null)
{
- joinMetaData.initialise();
+ joinMetaData.initialise(clr);
}
if (elementMetaData != null)
{
- elementMetaData.initialise();
+ elementMetaData.initialise(clr);
}
if (keyMetaData != null)
{
- keyMetaData.initialise();
+ keyMetaData.initialise(clr);
}
if (valueMetaData != null)
{
- valueMetaData.initialise();
+ valueMetaData.initialise(clr);
}
// Interpret the "indexed" value to create our IndexMetaData where it wasn't specified that way
@@ -1063,7 +1063,7 @@
}
if (indexMetaData != null)
{
- indexMetaData.initialise();
+ indexMetaData.initialise(clr);
}
if (uniqueMetaData == null && uniqueConstraint)
{
@@ -1076,16 +1076,16 @@
}
if (uniqueMetaData != null)
{
- uniqueMetaData.initialise();
+ uniqueMetaData.initialise(clr);
}
if (foreignKeyMetaData != null)
{
- foreignKeyMetaData.initialise();
+ foreignKeyMetaData.initialise(clr);
}
if (orderMetaData != null)
{
- orderMetaData.initialise();
+ orderMetaData.initialise(clr);
}
if (hasExtension("cascade-persist"))
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/ArrayMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/ArrayMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/ArrayMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -195,11 +195,11 @@
}
/**
- * Accessor for the Element ClassMetaData
- * @return element ClassMetaData
+ * Initialize the element metadata, if necessary
*/
- public AbstractClassMetaData getElementClassMetaData()
+ public void initialise(final ClassLoaderResolver clr)
{
+ super.initialise(clr);
if (element.classMetaData != null && !element.classMetaData.isInitialised())
{
// Do as PrivilegedAction since uses reflection
@@ -208,11 +208,19 @@
{
public Object run()
{
- element.classMetaData.initialise();
+ element.classMetaData.initialise(clr);
return null;
}
});
}
+ }
+
+ /**
+ * Accessor for the Element ClassMetaData
+ * @return element ClassMetaData
+ */
+ public AbstractClassMetaData getElementClassMetaData()
+ {
return element.classMetaData;
}
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/ClassMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/ClassMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/ClassMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -99,6 +99,8 @@
/** whether the populate method is running **/
private boolean populating = false;
+ /** whether the initialise method is running **/
+ private boolean initialising = false;
// ----------------------------- Constructors ------------------------------
@@ -562,205 +564,213 @@
* Method to initialise the object, creating internal convenience arrays.
* Initialises all sub-objects. populate() should be called BEFORE calling this.
*/
- public synchronized void initialise()
+ public synchronized void initialise(ClassLoaderResolver clr)
{
- if (populating)
+ if (populating || initialising)
{
return;
}
- checkPopulated();
- if (isInitialised())
+ try
{
- return;
- }
-
- if (pcSuperclassMetaData != null)
- {
- // We need our superclass to be initialised before us because we rely on information there
- if (!pcSuperclassMetaData.isInitialised())
+ initialising = true;
+ checkPopulated();
+ if (isInitialised())
{
- pcSuperclassMetaData.initialise();
+ return;
}
- }
- if (NucleusLogger.METADATA.isDebugEnabled())
- {
- NucleusLogger.METADATA.debug(LOCALISER.msg("044076",fullName));
- }
-
- // Validate the objectid-class
- // This must be in initialise() since can be dependent on other classes being populated
- ClassLoaderResolver clr = getMetaDataManager().getOMFContext().getClassLoaderResolver(null);
- validateObjectIdClass(clr);
-
- // Count the fields/properties of the relevant category
- Iterator membersIter = members.iterator();
- int numManaged = 0;
- int numOverridden = 0;
- while (membersIter.hasNext())
- {
- AbstractMemberMetaData fmd = (AbstractMemberMetaData)membersIter.next();
-
- // Initialise the FieldMetaData (and its sub-objects)
- fmd.initialise();
- if (fmd.isJdoField())
+ if (pcSuperclassMetaData != null)
{
- if (fmd.fieldBelongsToClass())
+ // We need our superclass to be initialised before us because we rely on information there
+ if (!pcSuperclassMetaData.isInitialised())
{
- numManaged++;
+ pcSuperclassMetaData.initialise(clr);
}
- else
+ }
+
+ if (NucleusLogger.METADATA.isDebugEnabled())
+ {
+ NucleusLogger.METADATA.debug(LOCALISER.msg("044076",fullName));
+ }
+
+ // Validate the objectid-class
+ // This must be in initialise() since can be dependent on other classes being populated
+ //ClassLoaderResolver clr = getMetaDataManager().getOMFContext().getClassLoaderResolver(null);
+ validateObjectIdClass(clr);
+
+ // Count the fields/properties of the relevant category
+ Iterator membersIter = members.iterator();
+ int numManaged = 0;
+ int numOverridden = 0;
+ while (membersIter.hasNext())
+ {
+ AbstractMemberMetaData fmd = (AbstractMemberMetaData)membersIter.next();
+
+ // Initialise the FieldMetaData (and its sub-objects)
+ fmd.initialise(clr);
+ if (fmd.isJdoField())
{
- numOverridden++;
+ if (fmd.fieldBelongsToClass())
+ {
+ numManaged++;
+ }
+ else
+ {
+ numOverridden++;
+ }
}
}
- }
-
- // Generate the "managed members" list
- managedMembers = new AbstractMemberMetaData[numManaged];
- overriddenMembers = new AbstractMemberMetaData[numOverridden];
-
- membersIter = members.iterator();
- int field_id = 0;
- int overridden_field_id = 0;
- memberPositionsByName = new HashMap();
- while (membersIter.hasNext())
- {
- AbstractMemberMetaData mmd = (AbstractMemberMetaData)membersIter.next();
- if (mmd.isJdoField())
+
+ // Generate the "managed members" list
+ managedMembers = new AbstractMemberMetaData[numManaged];
+ overriddenMembers = new AbstractMemberMetaData[numOverridden];
+
+ membersIter = members.iterator();
+ int field_id = 0;
+ int overridden_field_id = 0;
+ memberPositionsByName = new HashMap();
+ while (membersIter.hasNext())
{
- if (mmd.fieldBelongsToClass())
+ AbstractMemberMetaData mmd = (AbstractMemberMetaData)membersIter.next();
+ if (mmd.isJdoField())
{
- mmd.setFieldId(field_id);
- managedMembers[field_id] = mmd;
- memberPositionsByName.put(mmd.getName(),new Integer(field_id));
- field_id++;
- }
- else
- {
- overriddenMembers[overridden_field_id++] = mmd;
- AbstractMemberMetaData superFmd = pcSuperclassMetaData.getMemberBeingOverridden(mmd.getName());
- if (superFmd != null)
+ if (mmd.fieldBelongsToClass())
{
- // Merge in any additional info not specified in the overridden field
- if (superFmd.isPrimaryKey())
+ mmd.setFieldId(field_id);
+ managedMembers[field_id] = mmd;
+ memberPositionsByName.put(mmd.getName(),new Integer(field_id));
+ field_id++;
+ }
+ else
+ {
+ overriddenMembers[overridden_field_id++] = mmd;
+ AbstractMemberMetaData superFmd = pcSuperclassMetaData.getMemberBeingOverridden(mmd.getName());
+ if (superFmd != null)
{
- mmd.setPrimaryKey(true);
+ // Merge in any additional info not specified in the overridden field
+ if (superFmd.isPrimaryKey())
+ {
+ mmd.setPrimaryKey(true);
+ }
}
}
}
}
- }
-
- if (pcSuperclassMetaData != null)
- {
- if (!pcSuperclassMetaData.isInitialised())
+
+ if (pcSuperclassMetaData != null)
{
- pcSuperclassMetaData.initialise();
+ if (!pcSuperclassMetaData.isInitialised())
+ {
+ pcSuperclassMetaData.initialise(clr);
+ }
+ noOfInheritedManagedMembers = pcSuperclassMetaData.getNoOfInheritedManagedMembers() +
+ pcSuperclassMetaData.getNoOfManagedMembers();
}
- noOfInheritedManagedMembers = pcSuperclassMetaData.getNoOfInheritedManagedMembers() +
- pcSuperclassMetaData.getNoOfManagedMembers();
- }
-
- // Set up the various convenience arrays of field numbers
- initialiseMemberPositionInformation();
-
- // Initialise any sub-objects
- implementsMetaData = new ImplementsMetaData[implementations.size()];
- for (int i=0; i<implementations.size(); i++)
- {
- implementsMetaData[i] = (ImplementsMetaData) implementations.get(i);
- implementsMetaData[i].initialise();
- }
- joinMetaData = new JoinMetaData[joins.size()];
- for (int i=0; i<joinMetaData.length; i++)
- {
- joinMetaData[i] = joins.get(i);
- joinMetaData[i].initialise();
- }
- indexMetaData = new IndexMetaData[indexes.size()];
- for (int i=0; i<indexMetaData.length; i++)
- {
- indexMetaData[i] = indexes.get(i);
- indexMetaData[i].initialise();
- }
- foreignKeyMetaData = new ForeignKeyMetaData[foreignKeys.size()];
- for (int i=0; i<foreignKeyMetaData.length; i++)
- {
- foreignKeyMetaData[i] = foreignKeys.get(i);
- foreignKeyMetaData[i].initialise();
- }
- uniqueMetaData = new UniqueMetaData[uniqueConstraints.size()];
- for (int i=0; i<uniqueMetaData.length; i++)
- {
- uniqueMetaData[i] = uniqueConstraints.get(i);
- uniqueMetaData[i].initialise();
- }
-
- fetchGroupMetaData = new FetchGroupMetaData[fetchGroups.size()];
- fetchGroupMetaDataByName = new HashMap();
- for (int i=0; i<fetchGroupMetaData.length; i++)
- {
- fetchGroupMetaData[i] = fetchGroups.get(i);
- fetchGroupMetaData[i].initialise();
- fetchGroupMetaDataByName.put(fetchGroupMetaData[i].getName(), fetchGroupMetaData[i]);
- }
-
- // If using datastore id and user hasn't provided the identity element,
- // add a defaulted one (using the superclass if available)
- if (identityType == IdentityType.DATASTORE && identityMetaData == null)
- {
- if (pcSuperclassMetaData != null)
+
+ // Set up the various convenience arrays of field numbers
+ initialiseMemberPositionInformation();
+
+ // Initialise any sub-objects
+ implementsMetaData = new ImplementsMetaData[implementations.size()];
+ for (int i=0; i<implementations.size(); i++)
{
- IdentityMetaData superImd = pcSuperclassMetaData.getIdentityMetaData();
- identityMetaData = new IdentityMetaData();
- identityMetaData.setColumnName(superImd.getColumnName());
- identityMetaData.setValueStrategy(superImd.getValueStrategy());
- identityMetaData.setSequence(superImd.getSequence());
+ implementsMetaData[i] = (ImplementsMetaData) implementations.get(i);
+ implementsMetaData[i].initialise(clr);
}
- else
+ joinMetaData = new JoinMetaData[joins.size()];
+ for (int i=0; i<joinMetaData.length; i++)
{
- identityMetaData = new IdentityMetaData();
+ joinMetaData[i] = joins.get(i);
+ joinMetaData[i].initialise(clr);
}
+ indexMetaData = new IndexMetaData[indexes.size()];
+ for (int i=0; i<indexMetaData.length; i++)
+ {
+ indexMetaData[i] = indexes.get(i);
+ indexMetaData[i].initialise(clr);
+ }
+ foreignKeyMetaData = new ForeignKeyMetaData[foreignKeys.size()];
+ for (int i=0; i<foreignKeyMetaData.length; i++)
+ {
+ foreignKeyMetaData[i] = foreignKeys.get(i);
+ foreignKeyMetaData[i].initialise(clr);
+ }
+ uniqueMetaData = new UniqueMetaData[uniqueConstraints.size()];
+ for (int i=0; i<uniqueMetaData.length; i++)
+ {
+ uniqueMetaData[i] = uniqueConstraints.get(i);
+ uniqueMetaData[i].initialise(clr);
+ }
+
+ fetchGroupMetaData = new FetchGroupMetaData[fetchGroups.size()];
+ fetchGroupMetaDataByName = new HashMap();
+ for (int i=0; i<fetchGroupMetaData.length; i++)
+ {
+ fetchGroupMetaData[i] = fetchGroups.get(i);
+ fetchGroupMetaData[i].initialise(clr);
+ fetchGroupMetaDataByName.put(fetchGroupMetaData[i].getName(), fetchGroupMetaData[i]);
+ }
+
+ // If using datastore id and user hasn't provided the identity element,
+ // add a defaulted one (using the superclass if available)
+ if (identityType == IdentityType.DATASTORE && identityMetaData == null)
+ {
+ if (pcSuperclassMetaData != null)
+ {
+ IdentityMetaData superImd = pcSuperclassMetaData.getIdentityMetaData();
+ identityMetaData = new IdentityMetaData();
+ identityMetaData.setColumnName(superImd.getColumnName());
+ identityMetaData.setValueStrategy(superImd.getValueStrategy());
+ identityMetaData.setSequence(superImd.getSequence());
+ }
+ else
+ {
+ identityMetaData = new IdentityMetaData();
+ }
+ }
+
+ if (primaryKeyMetaData != null)
+ {
+ primaryKeyMetaData.initialise(clr);
+ }
+ if (versionMetaData != null)
+ {
+ versionMetaData.initialise(clr);
+ }
+ if (identityMetaData != null)
+ {
+ identityMetaData.initialise(clr);
+ }
+ if (inheritanceMetaData != null)
+ {
+ inheritanceMetaData.initialise(clr);
+ }
+
+ if (identityType == IdentityType.APPLICATION)
+ {
+ usesSingleFieldIdentityClass =
+ getMetaDataManager().getApiAdapter().isSingleFieldIdentityClass(getObjectidClass());
+ }
+
+ // Clear out the collections that we used when loading the MetaData
+ joins.clear();
+ joins = null;
+ fetchGroups.clear();
+ fetchGroups = null;
+ foreignKeys.clear();
+ foreignKeys = null;
+ indexes.clear();
+ indexes = null;
+ uniqueConstraints.clear();
+ uniqueConstraints = null;
+ implementations.clear();
+ implementations = null;
+ setInitialised();
}
-
- if (primaryKeyMetaData != null)
+ finally
{
- primaryKeyMetaData.initialise();
+ initialising = false;
}
- if (versionMetaData != null)
- {
- versionMetaData.initialise();
- }
- if (identityMetaData != null)
- {
- identityMetaData.initialise();
- }
- if (inheritanceMetaData != null)
- {
- inheritanceMetaData.initialise();
- }
-
- if (identityType == IdentityType.APPLICATION)
- {
- usesSingleFieldIdentityClass =
- getMetaDataManager().getApiAdapter().isSingleFieldIdentityClass(getObjectidClass());
- }
-
- // Clear out the collections that we used when loading the MetaData
- joins.clear();
- joins = null;
- fetchGroups.clear();
- fetchGroups = null;
- foreignKeys.clear();
- foreignKeys = null;
- indexes.clear();
- indexes = null;
- uniqueConstraints.clear();
- uniqueConstraints = null;
- implementations.clear();
- implementations = null;
- setInitialised();
}
/**
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/CollectionMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/CollectionMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/CollectionMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -177,11 +177,11 @@
}
/**
- * Accessor for the Element ClassMetaData
- * @return element ClassMetaData
+ * Initialize the element metadata, if necessary
*/
- public AbstractClassMetaData getElementClassMetaData()
+ public void initialise(final ClassLoaderResolver clr)
{
+ super.initialise(clr);
if (element.classMetaData != null && !element.classMetaData.isInitialised())
{
// Do as PrivilegedAction since uses reflection
@@ -190,11 +190,19 @@
{
public Object run()
{
- element.classMetaData.initialise();
+ element.classMetaData.initialise(clr);
return null;
}
});
}
+ }
+
+ /**
+ * Accessor for the Element ClassMetaData
+ * @return element ClassMetaData
+ */
+ public AbstractClassMetaData getElementClassMetaData()
+ {
return element.classMetaData;
}
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/DiscriminatorMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/DiscriminatorMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/DiscriminatorMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -19,6 +19,7 @@
**********************************************************************/
package org.datanucleus.metadata;
+import org.datanucleus.ClassLoaderResolver;
import org.datanucleus.util.NucleusLogger;
import org.datanucleus.util.StringUtils;
@@ -77,7 +78,7 @@
* method if you are going to use populate. It creates the internal
* convenience arrays etc needed for normal operation.
*/
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
if (value != null && strategy == null)
{
@@ -108,7 +109,7 @@
}
if (indexMetaData != null)
{
- indexMetaData.initialise();
+ indexMetaData.initialise(clr);
}
if (columnMetaData == null && columnName != null)
@@ -116,7 +117,7 @@
columnMetaData = new ColumnMetaData();
columnMetaData.setName(columnName);
columnMetaData.parent = this;
- columnMetaData.initialise();
+ columnMetaData.initialise(clr);
}
setInitialised();
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/EmbeddedMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/EmbeddedMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/EmbeddedMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -347,13 +347,13 @@
* Method to initialise the object, creating all internal convenience
* arrays.
*/
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
fieldMetaData = new AbstractMemberMetaData[members.size()];
for (int i=0; i<fieldMetaData.length; i++)
{
fieldMetaData[i] = (AbstractMemberMetaData) members.get(i);
- fieldMetaData[i].initialise();
+ fieldMetaData[i].initialise(clr);
}
setInitialised();
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/FetchGroupMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/FetchGroupMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/FetchGroupMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -23,6 +23,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.datanucleus.ClassLoaderResolver;
import org.datanucleus.util.StringUtils;
/**
@@ -93,7 +94,7 @@
* method if you are going to use populate. It creates the internal
* convenience arrays etc needed for normal operation.
*/
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
if (this.postLoad == null)
{
@@ -127,10 +128,10 @@
}
for (int i=0; i<fetchGroupMetaData.length; i++)
{
- fetchGroupMetaData[i].initialise();
+ fetchGroupMetaData[i].initialise(clr);
}
- super.initialise();
+ super.initialise(clr);
// Clear out parsing data
fetchGroups.clear();
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/IdentityMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/IdentityMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/IdentityMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -21,6 +21,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.datanucleus.ClassLoaderResolver;
import org.datanucleus.util.StringUtils;
/**
@@ -63,7 +64,7 @@
/**
* Method to initialise all internal convenience arrays needed.
*/
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
if (strategy == null)
{
@@ -84,7 +85,7 @@
for (int i=0; i<columnMetaData.length; i++)
{
columnMetaData[i] = columns.get(i);
- columnMetaData[i].initialise();
+ columnMetaData[i].initialise(clr);
}
}
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/InheritanceMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/InheritanceMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/InheritanceMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -18,6 +18,8 @@
**********************************************************************/
package org.datanucleus.metadata;
+import org.datanucleus.ClassLoaderResolver;
+
/**
* Representation of the Meta-Data defining inherited classes.
*/
@@ -46,15 +48,15 @@
* Method to initialise the object, creating internal convenience arrays.
* Initialises all sub-objects.
*/
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
if (joinMetaData != null)
{
- joinMetaData.initialise();
+ joinMetaData.initialise(clr);
}
if (discriminatorMetaData != null)
{
- discriminatorMetaData.initialise();
+ discriminatorMetaData.initialise(clr);
}
setInitialised();
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/InterfaceMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/InterfaceMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/InterfaceMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -64,7 +64,7 @@
* Initialises all sub-objects. If populate() is going to be used it should
* be used BEFORE calling this method.
*/
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
if (populating)
{
@@ -81,7 +81,7 @@
// We need our superclass to be initialised before us because we rely on information there
if (!pcSuperclassMetaData.isInitialised())
{
- pcSuperclassMetaData.initialise();
+ pcSuperclassMetaData.initialise(clr);
}
}
@@ -92,7 +92,6 @@
// Validate the objectid-class
// This must be in initialise() since can be dependent on other classes being populated
- ClassLoaderResolver clr = getMetaDataManager().getOMFContext().getClassLoaderResolver(null);
validateObjectIdClass(clr);
// Count the fields of the relevant category
@@ -104,7 +103,7 @@
AbstractMemberMetaData fmd = (AbstractMemberMetaData)fields_iter.next();
// Initialise the AbstractMemberMetaData (and its sub-objects)
- fmd.initialise();
+ fmd.initialise(clr);
if (fmd.isJdoField())
{
if (fmd.fieldBelongsToClass())
@@ -150,7 +149,7 @@
{
if (!pcSuperclassMetaData.isInitialised())
{
- pcSuperclassMetaData.initialise();
+ pcSuperclassMetaData.initialise(clr);
}
noOfInheritedManagedMembers = pcSuperclassMetaData.getNoOfInheritedManagedMembers() + pcSuperclassMetaData.getNoOfManagedMembers();
}
@@ -162,25 +161,25 @@
for (int i=0; i<joinMetaData.length; i++)
{
joinMetaData[i] = joins.get(i);
- joinMetaData[i].initialise();
+ joinMetaData[i].initialise(clr);
}
indexMetaData = new IndexMetaData[indexes.size()];
for (int i=0; i<indexMetaData.length; i++)
{
indexMetaData[i] = indexes.get(i);
- indexMetaData[i].initialise();
+ indexMetaData[i].initialise(clr);
}
foreignKeyMetaData = new ForeignKeyMetaData[foreignKeys.size()];
for (int i=0; i<foreignKeyMetaData.length; i++)
{
foreignKeyMetaData[i] = foreignKeys.get(i);
- foreignKeyMetaData[i].initialise();
+ foreignKeyMetaData[i].initialise(clr);
}
uniqueMetaData = new UniqueMetaData[uniqueConstraints.size()];
for (int i=0; i<uniqueMetaData.length; i++)
{
uniqueMetaData[i] = uniqueConstraints.get(i);
- uniqueMetaData[i].initialise();
+ uniqueMetaData[i].initialise(clr);
}
fetchGroupMetaData = new FetchGroupMetaData[fetchGroups.size()];
@@ -188,7 +187,7 @@
for (int i=0; i<fetchGroupMetaData.length; i++)
{
fetchGroupMetaData[i] = fetchGroups.get(i);
- fetchGroupMetaData[i].initialise();
+ fetchGroupMetaData[i].initialise(clr);
fetchGroupMetaDataByName.put(fetchGroupMetaData[i].getName(), fetchGroupMetaData[i]);
}
@@ -212,15 +211,15 @@
if (versionMetaData != null)
{
- versionMetaData.initialise();
+ versionMetaData.initialise(clr);
}
if (identityMetaData != null)
{
- identityMetaData.initialise();
+ identityMetaData.initialise(clr);
}
if (inheritanceMetaData != null)
{
- inheritanceMetaData.initialise();
+ inheritanceMetaData.initialise(clr);
}
if (identityType == IdentityType.APPLICATION)
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/JoinMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/JoinMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/JoinMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -23,6 +23,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.datanucleus.ClassLoaderResolver;
import org.datanucleus.util.StringUtils;
/**
@@ -114,7 +115,7 @@
* Method to initialise the object, creating internal convenience arrays.
* Initialises all sub-objects.
*/
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
if (table != null && parent instanceof AbstractMemberMetaData)
{
@@ -131,7 +132,7 @@
columnMetaData[0] = new ColumnMetaData();
columnMetaData[0].setName(columnName);
columnMetaData[0].parent = this;
- columnMetaData[0].initialise();
+ columnMetaData[0].initialise(clr);
}
else
{
@@ -139,13 +140,13 @@
for (int i=0; i<columnMetaData.length; i++)
{
columnMetaData[i] = columns.get(i);
- columnMetaData[i].initialise();
+ columnMetaData[i].initialise(clr);
}
}
if (foreignKeyMetaData != null)
{
- foreignKeyMetaData.initialise();
+ foreignKeyMetaData.initialise(clr);
}
// Interpret the "indexed" value to create our IndexMetaData where it wasn't specified that way
@@ -160,7 +161,7 @@
}
if (indexMetaData != null)
{
- indexMetaData.initialise();
+ indexMetaData.initialise(clr);
}
if (uniqueMetaData == null && unique)
@@ -174,12 +175,12 @@
}
if (uniqueMetaData != null)
{
- uniqueMetaData.initialise();
+ uniqueMetaData.initialise(clr);
}
if (primaryKeyMetaData != null)
{
- primaryKeyMetaData.initialise();
+ primaryKeyMetaData.initialise(clr);
}
setInitialised();
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/MapMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/MapMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/MapMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -292,6 +292,15 @@
*/
public AbstractClassMetaData getKeyClassMetaData()
{
+ return key.classMetaData;
+ }
+
+ /**
+ * Initialize the key and values metadata
+ */
+ public void initialise(final ClassLoaderResolver clr)
+ {
+ super.initialise(clr);
if (key.classMetaData != null && !key.classMetaData.isInitialised())
{
// Do as PrivilegedAction since uses reflection
@@ -300,14 +309,26 @@
{
public Object run()
{
- key.classMetaData.initialise();
+ key.classMetaData.initialise(clr);
return null;
}
});
}
- return key.classMetaData;
+ if (value.classMetaData != null && !value.classMetaData.isInitialised())
+ {
+ // Do as PrivilegedAction since uses reflection
+ // [JDOAdapter.isValidPrimaryKeyClass calls reflective methods]
+ AccessController.doPrivileged(new PrivilegedAction()
+ {
+ public Object run()
+ {
+ value.classMetaData.initialise(clr);
+ return null;
+ }
+ });
+ }
}
-
+
/**
* Accessor for the value-type tag value.
* May be comma-separated if several value types are possible.
@@ -324,19 +345,6 @@
*/
public AbstractClassMetaData getValueClassMetaData()
{
- if (value.classMetaData != null && !value.classMetaData.isInitialised())
- {
- // Do as PrivilegedAction since uses reflection
- // [JDOAdapter.isValidPrimaryKeyClass calls reflective methods]
- AccessController.doPrivileged(new PrivilegedAction()
- {
- public Object run()
- {
- value.classMetaData.initialise();
- return null;
- }
- });
- }
return value.classMetaData;
}
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/MetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/MetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/MetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -27,6 +27,7 @@
import org.datanucleus.ObjectManagerFactoryImpl;
import org.datanucleus.exceptions.NucleusException;
import org.datanucleus.util.Localiser;
+import org.datanucleus.ClassLoaderResolver;
/**
* Base class for all MetaData.
@@ -90,7 +91,7 @@
this.parent = parent;
}
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
setInitialised();
}
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/MetaDataManager.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/MetaDataManager.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/MetaDataManager.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -2074,7 +2074,7 @@
for (int i=0;i<filemd.getNoOfPackages();i++)
{
PackageMetaData pmd = filemd.getPackage(i);
- pmd.initialise();
+ pmd.initialise(clr);
for (int j=0;j<pmd.getNoOfClasses();j++)
{
@@ -2242,9 +2242,9 @@
/**
* Convenience method to initialise the MetaData for the specified class/interface.
* @param acmd MetaData
- * @param clr ClassLoader resolver
+ * @param clr ClassLoaderResolver
*/
- protected void initialiseAbstractClassMetaData(final AbstractClassMetaData acmd, ClassLoaderResolver clr)
+ protected void initialiseAbstractClassMetaData(final AbstractClassMetaData acmd, final ClassLoaderResolver clr)
{
if (!acmd.isInitialised())
{
@@ -2256,7 +2256,7 @@
{
try
{
- acmd.initialise();
+ acmd.initialise(clr);
}
// Catch and rethrow exception since AccessController.doPriveleged swallows it!
catch (NucleusException ne)
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/OrderMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/OrderMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/OrderMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -23,6 +23,7 @@
import java.util.List;
import java.util.StringTokenizer;
+import org.datanucleus.ClassLoaderResolver;
import org.datanucleus.exceptions.NucleusException;
import org.datanucleus.util.StringUtils;
@@ -107,7 +108,7 @@
* Method to initialise the object, creating internal convenience arrays.
* Initialises all sub-objects.
*/
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
if (hasExtension("list-ordering"))
{
@@ -127,7 +128,7 @@
columnMetaData[0] = new ColumnMetaData();
columnMetaData[0].setName(columnName);
columnMetaData[0].parent = this;
- columnMetaData[0].initialise();
+ columnMetaData[0].initialise(clr);
}
else
{
@@ -135,7 +136,7 @@
for (int i=0; i<columnMetaData.length; i++)
{
columnMetaData[i] = columns.get(i);
- columnMetaData[i].initialise();
+ columnMetaData[i].initialise(clr);
}
}
@@ -152,7 +153,7 @@
}
if (indexMetaData != null)
{
- indexMetaData.initialise();
+ indexMetaData.initialise(clr);
}
if (mappedBy != null)
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/PackageMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/PackageMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/PackageMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -23,6 +23,7 @@
import java.util.Iterator;
import java.util.List;
+import org.datanucleus.ClassLoaderResolver;
import org.datanucleus.exceptions.NucleusUserException;
import org.datanucleus.util.StringUtils;
@@ -66,7 +67,7 @@
}
}
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
if (this.catalog == null && ((FileMetaData)parent).getCatalog() != null)
{
@@ -78,7 +79,7 @@
// Nothing specified for this package, but file has a value
this.schema = ((FileMetaData)parent).getSchema();
}
- super.initialise();
+ super.initialise(clr);
}
/**
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/PrimaryKeyMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/PrimaryKeyMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/PrimaryKeyMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -21,6 +21,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.datanucleus.ClassLoaderResolver;
import org.datanucleus.util.StringUtils;
/**
@@ -61,7 +62,7 @@
* method if you are going to use populate. It creates the internal
* convenience arrays etc needed for normal operation.
*/
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
// Set up the columnMetaData
if (columns.size() == 0 && columnName != null)
@@ -70,7 +71,7 @@
columnMetaData[0] = new ColumnMetaData();
columnMetaData[0].setName(columnName);
columnMetaData[0].parent = this;
- columnMetaData[0].initialise();
+ columnMetaData[0].initialise(clr);
}
else
{
@@ -78,7 +79,7 @@
for (int i=0; i<columnMetaData.length; i++)
{
columnMetaData[i] = (ColumnMetaData) columns.get(i);
- columnMetaData[i].initialise();
+ columnMetaData[i].initialise(clr);
}
}
Modified: platform/core/trunk/src/java/org/datanucleus/metadata/VersionMetaData.java
===================================================================
--- platform/core/trunk/src/java/org/datanucleus/metadata/VersionMetaData.java 2009-02-10 19:03:58 UTC (rev 5035)
+++ platform/core/trunk/src/java/org/datanucleus/metadata/VersionMetaData.java 2009-02-10 19:05:18 UTC (rev 5036)
@@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.datanucleus.ClassLoaderResolver;
import org.datanucleus.exceptions.NucleusUserException;
import org.datanucleus.util.StringUtils;
@@ -87,7 +88,7 @@
* method if you are going to use populate. It creates the internal
* convenience arrays etc needed for normal operation.
*/
- public void initialise()
+ public void initialise(ClassLoaderResolver clr)
{
if (hasExtension("field-name"))
{
@@ -115,7 +116,7 @@
}
if (indexMetaData != null)
{
- indexMetaData.initialise();
+ indexMetaData.initialise(clr);
}
// Cater for user specifying column name, or columns
@@ -132,7 +133,7 @@
for (int i=0; i<columnMetaData.length; i++)
{
columnMetaData[i] = columns.get(i);
- columnMetaData[i].initialise();
+ columnMetaData[i].initialise(clr);
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|