You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ke...@apache.org on 2006/12/21 13:39:45 UTC
svn commit: r489339 [1/4] - in /incubator/tuscany/java/sdo:
impl/src/main/java/org/apache/tuscany/sdo/helper/
impl/src/main/java/org/apache/tuscany/sdo/impl/
impl/src/main/java/org/apache/tuscany/sdo/model/impl/
impl/src/main/java/org/apache/tuscany/sd...
Author: kelvingoodson
Date: Thu Dec 21 04:39:44 2006
New Revision: 489339
URL: http://svn.apache.org/viewvc?view=rev&rev=489339
Log:
TUSCANY-684 added register(HelperContext scope) method to generated Factory instance -- also added an introspectable pattern version to the Factory implementation, and commentary to the generated classes on the options that were used to generate the classes.
Added:
incubator/tuscany/java/sdo/tools/src/test/java/com/example/noInterfaces/
incubator/tuscany/java/sdo/tools/src/test/java/com/example/noInterfaces/simple/
incubator/tuscany/java/sdo/tools/src/test/java/com/example/noInterfaces/simple/Quote.java (with props)
incubator/tuscany/java/sdo/tools/src/test/java/com/example/noInterfaces/simple/SimpleFactory.java (with props)
incubator/tuscany/java/sdo/tools/src/test/java/com/example/simple/cs/
incubator/tuscany/java/sdo/tools/src/test/java/com/example/simple/cs/CSFactory.java (with props)
incubator/tuscany/java/sdo/tools/src/test/java/com/example/simple/cs/Quote.java (with props)
incubator/tuscany/java/sdo/tools/src/test/java/com/example/simple/cs/QuoteBase.java (with props)
incubator/tuscany/java/sdo/tools/src/test/java/com/example/simple/cs/impl/
incubator/tuscany/java/sdo/tools/src/test/java/com/example/simple/cs/impl/CSFactoryImpl.java (with props)
incubator/tuscany/java/sdo/tools/src/test/java/com/example/simple/cs/impl/QuoteBaseImpl.java (with props)
incubator/tuscany/java/sdo/tools/src/test/java/com/example/simple/cs/impl/QuoteImpl.java (with props)
Removed:
incubator/tuscany/java/sdo/tools/src/test/java/com/example/simple/impl/SimplePackageImpl.java
incubator/tuscany/java/sdo/tools/src/test/java/org/example/
Modified:
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/FactoryBase.java
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOFactoryClass.java
incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/util/SDOGenUtil.java
incubator/tuscany/java/sdo/tools/src/test/java/com/example/simple/Quote.java
incubator/tuscany/java/sdo/tools/src/test/java/com/example/simple/SimpleFactory.java
incubator/tuscany/java/sdo/tools/src/test/java/com/example/simple/impl/QuoteImpl.java
incubator/tuscany/java/sdo/tools/src/test/java/com/example/simple/impl/SimpleFactoryImpl.java
incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryGenTestCase.java
incubator/tuscany/java/sdo/tools/src/test/java/org/apache/tuscany/sdo/test/SimpleStaticTest.java
incubator/tuscany/java/sdo/tools/templates/models/SDOFactoryClass.javajet
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java?view=diff&rev=489339&r1=489338&r2=489339
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java Thu Dec 21 04:39:44 2006
@@ -41,17 +41,15 @@
private XSDHelper xsdHelper;
- public HelperContextImpl(TypeHelper scope) {
- if(scope == null) {
- EPackage.Registry registry = new EPackageRegistryImpl(EPackage.Registry.INSTANCE);
- ExtendedMetaData extendedMetaData = new SDOExtendedMetaDataImpl(registry); //TODO create subclass that makes demand() methods synchronous
- typeHelper = new TypeHelperImpl(extendedMetaData);
- } else {
- typeHelper = scope;
- }
- dataFactory = new DataFactoryImpl(typeHelper);
- xmlHelper = new XMLHelperImpl(typeHelper);
- xsdHelper = new XSDHelperImpl(typeHelper);
+ public HelperContextImpl() {
+
+ EPackage.Registry registry = new EPackageRegistryImpl(EPackage.Registry.INSTANCE);
+ ExtendedMetaData extendedMetaData = new SDOExtendedMetaDataImpl(registry); //TODO create subclass that makes demand() methods synchronous
+ typeHelper = new TypeHelperImpl(extendedMetaData);
+
+ dataFactory = new DataFactoryImpl(typeHelper);
+ xmlHelper = new XMLHelperImpl(typeHelper);
+ xsdHelper = new XSDHelperImpl(typeHelper);
}
public CopyHelper getCopyHelper() {
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java?view=diff&rev=489339&r1=489338&r2=489339
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java Thu Dec 21 04:39:44 2006
@@ -56,7 +56,8 @@
public EPackage getPackage(String namespace)
{
if ("".equals(namespace)) namespace = null; //FB
- return super.getPackage(namespace);
+ EPackage result = registry.getEPackage(namespace);
+ return result == null ? super.getPackage(namespace) : result;
}
/**
@@ -101,6 +102,11 @@
public void setAliasNames(EModelElement modelElement, String aliasNames) {
EAnnotation eAnnotation = getAnnotation(modelElement, true);
eAnnotation.getDetails().put("aliasNames", aliasNames);
+ }
+
+ public EPackage.Registry getRegistry()
+ {
+ return registry;
}
}
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java?view=diff&rev=489339&r1=489338&r2=489339
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java Thu Dec 21 04:39:44 2006
@@ -82,6 +82,7 @@
public Type getType(String uri, String typeName)
{
EPackage ePackage = extendedMetaData.getPackage(uri);
+
if (ePackage != null)
{
EClassifier eClassifier = ePackage.getEClassifier(typeName);
@@ -101,8 +102,28 @@
{
return type;
}
-
+
//TODO more efficient implementation ... this is a really bad one!
+
+ // check the local scope package registry
+ for (Iterator iter = ((SDOExtendedMetaDataImpl)extendedMetaData).getRegistry().values().iterator(); iter.hasNext(); )
+ {
+ Object value = iter.next();
+ if (value instanceof EPackage)
+ {
+ EPackage ePackage = (EPackage)value;
+ for (Iterator iter2 = ePackage.getEClassifiers().iterator(); iter2.hasNext(); )
+ {
+ EClassifier eClassifier = (EClassifier)iter2.next();
+ if (eClassifier.getInstanceClass() == interfaceClass)
+ {
+ return (Type)eClassifier;
+ }
+ }
+ }
+ }
+
+ // if it wasnt in the local scope look in the EMF global package registry
for (Iterator iter = EPackage.Registry.INSTANCE.values().iterator(); iter.hasNext(); )
{
Object value = iter.next();
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/FactoryBase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/FactoryBase.java?view=diff&rev=489339&r1=489338&r2=489339
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/FactoryBase.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/FactoryBase.java Thu Dec 21 04:39:44 2006
@@ -71,13 +71,22 @@
createResource(namespaceURI);
setNsURI(namespaceURI);
- //FIXME ... figure out proper (scoped) way to register static packages
- EPackage.Registry.INSTANCE.put(namespaceURI, this);
+
+ // TODO this is a bit of a kludge until we figure out how to connect type scopes
+ if(namespaceURI.startsWith("commonj.sdo")) {
+ if("commonj.sdo".equals(namespaceURI) ||
+ "commonj.sdo/java".equals(namespaceURI) ||
+ "commonj.sdo/xml".equals(namespaceURI)
+ ) {
+ EPackage.Registry.INSTANCE.put(namespaceURI, this);
+ }
+ }
((SDOEFactoryImpl)getEFactoryInstance()).sdoFactory = this;
}
-
+
+
public DataObject create(int typeNumber)
{
return null;
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java?view=diff&rev=489339&r1=489338&r2=489339
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/model/impl/ModelFactoryImpl.java Thu Dec 21 04:39:44 2006
@@ -48,7 +48,8 @@
* List getTypeList();
* 6. Delete all the createXXXFromString() and convertXXXToString() methods in the newly generated ModelFactoryImpl and
* replace them with the ones from this file (resolve any missing imports).
- * 7. Move this JavaDoc comment into the newly generated ModelFactoryImpl class.
+ * 7. Comment out the call to registerStaticTypes of ModelFactory.class in the init() method
+ * 8. Move this JavaDoc comment into the newly generated ModelFactoryImpl class.
* <!-- end-user-doc -->
* @generated
*/
@@ -694,7 +695,7 @@
// Initialize simple dependencies
SDOUtil.registerStaticTypes(SDOFactory.class);
- SDOUtil.registerStaticTypes(ModelFactory.class);
+ // SDOUtil.registerStaticTypes(ModelFactory.class);
// Create package meta-data objects
theModelFactoryImpl.createMetaData();
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java?view=diff&rev=489339&r1=489338&r2=489339
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java Thu Dec 21 04:39:44 2006
@@ -65,6 +65,7 @@
import org.eclipse.emf.ecore.ETypedElement;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
@@ -295,7 +296,7 @@
*/
public static HelperContext createHelperContext()
{
- return new HelperContextImpl(null);
+ return new HelperContextImpl();
}
/**
@@ -379,14 +380,14 @@
EPackage ePackage = ((TypeHelperImpl) scope).getExtendedMetaData().getPackage(uri);
if (ePackage != null) {
- /**
- * ePackage.getEclassifiers will return an EList ( simple extension of List ).
- *
- * When a Type is generated from XML EMF will create a DocumentRoot type As this is EMF specific it should be removed
- */
- List result = new ArrayList(ePackage.getEClassifiers());
- result.remove(((TypeHelperImpl) scope).getExtendedMetaData().getDocumentRoot(ePackage));
- return result;
+ /**
+ * ePackage.getEclassifiers will return an EList ( simple extension of List ).
+ *
+ * When a Type is generated from XML EMF will create a DocumentRoot type As this is EMF specific it should be removed
+ */
+ List result = new ArrayList(ePackage.getEClassifiers());
+ result.remove(((TypeHelperImpl) scope).getExtendedMetaData().getDocumentRoot(ePackage));
+ return result;
}
return null;
}
@@ -516,7 +517,7 @@
public static Property createProperty(Type containingType, String name, Type propertyType)
{
- EStructuralFeature eStructuralFeature =
+ EStructuralFeature eStructuralFeature =
propertyType.isDataType() ?
(EStructuralFeature)SDOFactory.eINSTANCE.createAttribute() :
(EStructuralFeature)SDOFactory.eINSTANCE.createReference();
@@ -584,35 +585,45 @@
* The registered types will be visible in all TypeHelper's created in the same classLoader
* scope as the call to this function.
* @param factoryClass the generated factory class.
+ * @deprecated see the register(HelperContext) metods on generated Factory classes
*/
public static void registerStaticTypes(Class factoryClass)
{
//TODO this implementation is temporary, until the SDO generated factory pattern is decided
+ //TODO might want to clean this implementation in the light of the requirement to regenerate all classes
+ //after noEMF became the default, so we have no compatibility requirements (unless we
+ //cater for the simple hand edit that would make M2 generated classes work) -- as this is
+ //deprecated I'm going to do nothing for now
//
String temp = factoryClass.getName().replaceFirst("Factory$", "PackageImpl");
int lastDot = temp.lastIndexOf('.');
String packageName = temp.substring(0, lastDot) + ".impl" + temp.substring(lastDot);
- try // this case handles the current default generator pattern
+
+ try // this case handles the old style EMF pattern
{
Class javaClass = getPackageClass(factoryClass, packageName);
Field field = javaClass.getField("eINSTANCE");
- field.get(null);
+ EPackageImpl pkg = (EPackageImpl)field.get(null);
+ EPackage.Registry.INSTANCE.put(pkg.getNsURI(), pkg);
}
catch (Exception e1)
{
packageName = factoryClass.getName().replaceFirst("Factory$", "Package");
- try // this case handles the -noInterfaces generator pattern
+ try // this case handles the EMF -noInterfaces generator pattern
{
Class javaClass = getPackageClass(factoryClass, packageName);
Field field = javaClass.getField("eINSTANCE");
- field.get(null);
+ EPackageImpl pkg = (EPackageImpl)field.get(null);
+ EPackage.Registry.INSTANCE.put(pkg.getNsURI(), pkg);
}
catch (Exception e2)
{
- try // this case handles the -noEMF generator pattern
+ try // this case handles the default (was -noEMF) generator pattern
{
Field field = factoryClass.getField("INSTANCE");
- field.get(null);
+ EPackageImpl pkg = (EPackageImpl)field.get(null);
+ EPackage.Registry.INSTANCE.put(pkg.getNsURI(), pkg);
+ // TODO -- decide if we should block global initialization of Factories with the new register method.
}
catch (Exception e3)
{
@@ -621,6 +632,7 @@
}
}
}
+
private static Class getPackageClass(Class factoryClass, String packageName) throws Exception
{
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org