You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by mb...@apache.org on 2005/05/26 16:17:11 UTC
svn commit: r178637 - in
/incubator/jdo/trunk/core20/src/java/org/apache/jdo: impl/model/jdo/
impl/model/jdo/caching/ model/jdo/
Author: mbo
Date: Thu May 26 07:17:09 2005
New Revision: 178637
URL: http://svn.apache.org/viewcvs?rev=178637&view=rev
Log:
Add support for short names in JDOModel
Modified:
incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/JDOClassImplDynamic.java
incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/JDOModelImplDynamic.java
incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/caching/JDOClassImplCaching.java
incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/caching/JDOModelImplCaching.java
incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOClass.java
incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOModel.java
incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOModel.jpg
incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOModel.mdl
Modified: incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/JDOClassImplDynamic.java
URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/JDOClassImplDynamic.java?rev=178637&r1=178636&r2=178637&view=diff
==============================================================================
--- incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/JDOClassImplDynamic.java (original)
+++ incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/JDOClassImplDynamic.java Thu May 26 07:17:09 2005
@@ -32,6 +32,7 @@
import org.apache.jdo.model.jdo.JDOPackage;
import org.apache.jdo.util.I18NHelper;
+import org.apache.jdo.util.StringHelper;
/**
* An instance of this class represents the JDO metadata of a persistence
@@ -47,12 +48,15 @@
*
* @author Michael Bouschen
* @since 1.1
- * @version 1.1
+ * @version 2.0
*/
public class JDOClassImplDynamic
extends JDOMemberImpl
implements JDOClass
{
+ /** Property shortName. It defaults to the unqualified class name. */
+ protected String shortName;
+
/** Property identityType. Default see {@link #getIdentityType}. */
protected int identityType = JDOIdentityType.UNSPECIFIED;
@@ -102,6 +106,28 @@
protected final static I18NHelper msg =
I18NHelper.getInstance(JDOClassImplDynamic.class);
+ /**
+ * Get the short name of this JDOClass. The short name defaults to the
+ * unqualified class name, if not explicitly set by method
+ * {@link #setShortName(String shortName)}.
+ * @return the short name of this JDOClass.
+ */
+ public String getShortName() {
+ if (shortName != null)
+ // return short name, if explicitly set by the setter
+ return shortName;
+
+ return StringHelper.getShortClassName(getName());
+ }
+
+ /**
+ * Set the short name of this JDOClass.
+ * @param shortName the short name.
+ */
+ public void setShortName(String shortName) {
+ this.shortName = shortName;
+ }
+
/**
* Get the JDO identity type of this JDOClass.
* The identity type of the least-derived persistence-capable class defines
Modified: incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/JDOModelImplDynamic.java
URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/JDOModelImplDynamic.java?rev=178637&r1=178636&r2=178637&view=diff
==============================================================================
--- incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/JDOModelImplDynamic.java (original)
+++ incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/JDOModelImplDynamic.java Thu May 26 07:17:09 2005
@@ -47,7 +47,9 @@
import org.apache.jdo.model.jdo.JDOModel;
import org.apache.jdo.model.jdo.JDOModelFactory;
import org.apache.jdo.model.jdo.JDOPackage;
+
import org.apache.jdo.util.I18NHelper;
+import org.apache.jdo.util.StringHelper;
import org.xml.sax.SAXException;
import org.xml.sax.InputSource;
@@ -88,7 +90,7 @@
*
* @author Michael Bouschen
* @since 1.1
- * @version 1.1
+ * @version 2.0
*/
public class JDOModelImplDynamic extends JDOElementImpl implements JDOModel {
@@ -190,7 +192,7 @@
* the existing instance is returned. Otherwise, it creates a new JDOClass
* instance, sets its declaringModel and returns the new instance.
* <p>
- * Whether this method reads XML metatdata or not is deteremined at
+ * Whether this method reads XML metatdata or not is determined at
* JDOModel creation time (see flag <code>loadXMLMetadataDefault</code>
* in {@link JDOModelFactory#getJDOModel(JavaModel javaModel, boolean
* loadXMLMetadataDefault)}). Invoking this method is method is equivalent
@@ -241,9 +243,9 @@
* qualified class name if present. The method returns <code>null</code>
* if it cannot find a JDOClass instance for the specified name.
* <p>
- * Whether this method reads XML metatdata or not is deteremined at
+ * Whether this method reads XML metatdata or not is determined at
* JDOModel creation time (see flag <code>loadXMLMetadataDefault</code>
- * in {@link JDOModelFactory#getJDOModel(JavaModel javaModel, boolean
+ * in {@link JDOModelFactory#getJDOModel(JavaModel javaModel, boolean
* loadXMLMetadataDefault)}). Invoking this method is method is equivalent
* to <code>createJDOClass(className, loadXMLMetadataDefault)</code>.
* @param className the fully qualified class name of the JDOClass
@@ -301,6 +303,38 @@
}
return jdoClass;
+ }
+
+ /**
+ * The method returns the JDOClass instance for the specified short name
+ * (see {@link JDOClass#getShortName()}) or <code>null</code> if it cannot
+ * find a JDOClass instance with the specified short name.
+ * <p>
+ * The method searches the list of JDOClasses currently managed by this
+ * JDOModel instance. It does not attempt to load any metadata if it
+ * cannot find a JDOClass instance with the specified short name. The
+ * metadata for a JDOClass returned by this method must have been loaded
+ * before by any of the methods
+ * {@link #createJDOClass(String className)},
+ * {@link #createJDOClass(String className, boolean loadXMLMetadataDefault)},
+ * {@link #getJDOClass(String className)}, or
+ * {@link #getJDOClass(String className, boolean loadXMLMetadataDefault)}.
+ * @param shortName the short name of the JDOClass instance to be returned
+ * @return a JDOClass instance for the specified short name
+ * or <code>null</code> if not present
+ */
+ public synchronized JDOClass getJDOClassForShortName(String shortName) {
+ if (StringHelper.isEmpty(shortName))
+ return null;
+
+ for (Iterator i = jdoClasses.values().iterator(); i.hasNext();) {
+ JDOClass jdoClass = (JDOClass)i.next();
+ if (shortName.equals(jdoClass.getShortName()))
+ // found => return
+ return jdoClass;
+ }
+
+ return null;
}
/**
Modified: incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/caching/JDOClassImplCaching.java
URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/caching/JDOClassImplCaching.java?rev=178637&r1=178636&r2=178637&view=diff
==============================================================================
--- incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/caching/JDOClassImplCaching.java (original)
+++ incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/caching/JDOClassImplCaching.java Thu May 26 07:17:09 2005
@@ -32,7 +32,7 @@
*
* @author Michael Bouschen
* @since 1.1
- * @version 1.1
+ * @version 2.0
*/
public class JDOClassImplCaching extends JDOClassImplDynamic
{
@@ -93,6 +93,19 @@
/** Flag indicating wthere field numbers are calculated already. */
private boolean fieldNumbersCalculated = false;
+
+ /**
+ * Get the short name of this JDOClass. The short name defaults to the
+ * unqualified class name, if not explicitly set by method
+ * {@link #setShortName(String shortName)}.
+ * @return the short name of this JDOClass.
+ */
+ public String getShortName() {
+ if (shortName == null) {
+ shortName = super.getShortName();
+ }
+ return shortName;
+ }
/**
* Get the JDO identity type of this JDOClass.
Modified: incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/caching/JDOModelImplCaching.java
URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/caching/JDOModelImplCaching.java?rev=178637&r1=178636&r2=178637&view=diff
==============================================================================
--- incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/caching/JDOModelImplCaching.java (original)
+++ incubator/jdo/trunk/core20/src/java/org/apache/jdo/impl/model/jdo/caching/JDOModelImplCaching.java Thu May 26 07:17:09 2005
@@ -26,6 +26,8 @@
import org.apache.jdo.impl.model.jdo.JDOModelImplDynamic;
import org.apache.jdo.model.java.JavaType;
+import org.apache.jdo.util.StringHelper;
+
/**
* A JDOModel instance bundles a number of JDOClass instances used by an
* application. It provides factory methods to create and retrieve JDOClass
@@ -40,17 +42,23 @@
*
* @author Michael Bouschen
* @since 1.1
- * @version 1.1
+ * @version 2.0
*/
public class JDOModelImplCaching extends JDOModelImplDynamic {
+ /**
+ * This is a mapping from short names to JDOClass instances. Key is the
+ * JDOClass short name, value is the corresponding JDOClass instance.
+ */
+ private Map jdoClassesForShortNames = new HashMap();
+
/**
* This is a mapping from ObjectId classes to its JDOClass instances.
* Key is the type representation of the ObjectId class, value is the
* corresponding JDOClass instance. Note, in the case of inheritance
* the top most persistence-capable class is stored.
*/
- private Map jdoClassesByObjectIdClasses = new HashMap();
+ private Map jdoClassesForObjectIdClasses = new HashMap();
/**
* Set of fully qualified names of classes known to be
@@ -68,6 +76,43 @@
}
/**
+ * The method returns the JDOClass instance for the specified short name
+ * (see {@link JDOClass#getShortName()}) or <code>null</code> if it cannot
+ * find a JDOClass instance with the specified short name.
+ * <p>
+ * The method searches the list of JDOClasses currently managed by this
+ * JDOModel instance. It does not attempt to load any metadata if it
+ * cannot find a JDOClass instance with the specified short name. The
+ * metadata for a JDOClass returned by this method must have been loaded
+ * before by any of the methods
+ * {@link #createJDOClass(String className)},
+ * {@link #createJDOClass(String className, boolean loadXMLMetadataDefault)},
+ * {@link #getJDOClass(String className)}, or
+ * {@link #getJDOClass(String className, boolean loadXMLMetadataDefault)}.
+ * @param shortName the short name of the JDOClass instance to be returned
+ * @return a JDOClass instance for the specified short name
+ * or <code>null</code> if not present
+ */
+ public synchronized JDOClass getJDOClassForShortName(String shortName) {
+ if (StringHelper.isEmpty(shortName))
+ return null;
+
+ // First check the cache
+ JDOClass jdoClass =
+ (JDOClass)jdoClassesForShortNames.get(shortName);
+ if (jdoClass == null) {
+ // not found in the cache => call super
+ jdoClass = super.getJDOClassForShortName(shortName);
+ if (jdoClass != null) {
+ // found => update the cache
+ jdoClassesForShortNames.put(shortName, jdoClass);
+ }
+ }
+
+ return jdoClass;
+ }
+
+ /**
* This method returns the JDOClass instance that defines the specified type
* as its objectId class. In the case of an inheritance hierarchy it returns
* the top most persistence-capable class of the hierarchy (see
@@ -82,16 +127,16 @@
if (objectIdClass == null)
return null;
- synchronized (jdoClassesByObjectIdClasses) {
+ synchronized (jdoClassesForObjectIdClasses) {
// First check the cache
JDOClass jdoClass =
- (JDOClass)jdoClassesByObjectIdClasses.get(objectIdClass);
+ (JDOClass)jdoClassesForObjectIdClasses.get(objectIdClass);
if (jdoClass == null) {
// not found in the cache => call super
jdoClass = super.getJDOClassForObjectIdClass(objectIdClass);
if (jdoClass != null) {
// found => update the cache
- jdoClassesByObjectIdClasses.put(objectIdClass, jdoClass);
+ jdoClassesForObjectIdClasses.put(objectIdClass, jdoClass);
}
}
Modified: incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOClass.java
URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOClass.java?rev=178637&r1=178636&r2=178637&view=diff
==============================================================================
--- incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOClass.java (original)
+++ incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOClass.java Thu May 26 07:17:09 2005
@@ -25,11 +25,27 @@
* class.
*
* @author Michael Bouschen
- * @version 1.1
+ * @version 2.0
*/
public interface JDOClass
extends JDOMember
{
+ /**
+ * Get the short name of this JDOClass. The short name defaults to the
+ * unqualified class name, if not explicitly set by method
+ * {@link #setShortName(String shortName)}.
+ * @return the short name of this JDOClass.
+ */
+ public String getShortName();
+
+ /**
+ * Set the short name of this JDOClass.
+ * @param shortName the short name.
+ * @exception ModelException if impossible
+ */
+ public void setShortName(String shortName)
+ throws ModelException;
+
/**
* Get the JDO identity type of this JDOClass.
* The identity type of the least-derived persistence-capable class defines
Modified: incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOModel.java
URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOModel.java?rev=178637&r1=178636&r2=178637&view=diff
==============================================================================
--- incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOModel.java (original)
+++ incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOModel.java Thu May 26 07:17:09 2005
@@ -29,6 +29,7 @@
* name by different JDOModel instances.
*
* @author Michael Bouschen
+ * @version 2.0
*/
public interface JDOModel
extends JDOElement
@@ -70,7 +71,7 @@
* the existing instance is returned. Otherwise, it creates a new JDOClass
* instance, sets its declaringModel and returns the new instance.
* <p>
- * Whether this method reads XML metatdata or not is deteremined at
+ * Whether this method reads XML metatdata or not is determined at
* JDOModel creation time (see flag <code>loadXMLMetadataDefault</code>
* in {@link JDOModelFactory#getJDOModel(JavaModel javaModel, boolean
* loadXMLMetadataDefault)}). Invoking this method is method is equivalent
@@ -105,7 +106,7 @@
* qualified class name if present. The method returns <code>null</code>
* if it cannot find a JDOClass instance for the specified name.
* <p>
- * Whether this method reads XML metatdata or not is deteremined at
+ * Whether this method reads XML metatdata or not is determined at
* JDOModel creation time (see flag <code>loadXMLMetadataDefault</code>
* in {@link JDOModelFactory#getJDOModel(JavaModel javaModel, boolean
* loadXMLMetadataDefault)}). Invoking this method is method is equivalent
@@ -130,6 +131,26 @@
* or <code>null</code> if not present
*/
public JDOClass getJDOClass(String className, boolean loadXMLMetadata);
+
+ /**
+ * The method returns the JDOClass instance for the specified short name
+ * (see {@link JDOClass#getShortName()}) or <code>null</code> if it cannot
+ * find a JDOClass instance with the specified short name.
+ * <p>
+ * The method searches the list of JDOClasses currently managed by this
+ * JDOModel instance. It does not attempt to load any metadata if it
+ * cannot find a JDOClass instance with the specified short name. The
+ * metadata for a JDOClass returned by this method must have been loaded
+ * before by any of the methods
+ * {@link #createJDOClass(String className)},
+ * {@link #createJDOClass(String className, boolean loadXMLMetadataDefault)},
+ * {@link #getJDOClass(String className)}, or
+ * {@link #getJDOClass(String className, boolean loadXMLMetadataDefault)}.
+ * @param shortName the short name of the JDOClass instance to be returned
+ * @return a JDOClass instance for the specified short name
+ * or <code>null</code> if not present
+ */
+ public JDOClass getJDOClassForShortName(String shortName);
/**
* Returns the collection of JDOClass instances declared by this JDOModel
Modified: incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOModel.jpg
URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOModel.jpg?rev=178637&r1=178636&r2=178637&view=diff
==============================================================================
Binary files - no diff available.
Modified: incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOModel.mdl
URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/core20/src/java/org/apache/jdo/model/jdo/JDOModel.mdl?rev=178637&r1=178636&r2=178637&view=diff
==============================================================================
Binary files - no diff available.