You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by fr...@apache.org on 2006/07/27 01:55:43 UTC

svn commit: r425913 [1/5] - in /incubator/tuscany/java/sdo: impl/src/main/java/org/apache/tuscany/sdo/impl/ impl/src/main/java/org/apache/tuscany/sdo/model/impl/ tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/ tools/templates/models/

Author: frankb
Date: Wed Jul 26 16:55:42 2006
New Revision: 425913

URL: http://svn.apache.org/viewvc?rev=425913&view=rev
Log:
-noEMF codegen improvements

Modified:
    incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectBase.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/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOClass.java
    incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOFactoryClass.java
    incubator/tuscany/java/sdo/tools/templates/models/SDOClass.javajet
    incubator/tuscany/java/sdo/tools/templates/models/SDOFactoryClass.javajet

Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectBase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectBase.java?rev=425913&r1=425912&r2=425913&view=diff
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectBase.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/DataObjectBase.java Wed Jul 26 16:55:42 2006
@@ -42,6 +42,8 @@
  */
 public abstract class DataObjectBase extends DataObjectImpl
 {
+  
+  protected int OPPOSITE_FEATURE_BASE = EOPPOSITE_FEATURE_BASE; 
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   // Following methods should be proposed SPI for generated subclasses to use
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -62,12 +64,22 @@
   {
     eNotify(new ENotificationImpl(this, Notification.SET, property, oldValue, newValue));
   }
+
+  protected void notify(int changeKind, int property, Object oldValue, Object newValue, boolean isSetChange)
+  {
+    eNotify(new ENotificationImpl(this, Notification.SET, property, oldValue, newValue, isSetChange));
+  }
   
   protected void notify(int changeKind, int property, double oldDoubleValue, double newDoubleValue, boolean isSetChange)
   {
     eNotify(new ENotificationImpl(this, Notification.SET, property, oldDoubleValue, newDoubleValue, isSetChange));
   }
   
+  protected void notify(int changeKind, int property, boolean oldBooleanValue, boolean newBooleanValue, boolean isSetChange)
+  {
+    eNotify(new ENotificationImpl(this, Notification.SET, property, oldBooleanValue, newBooleanValue, isSetChange));
+  }
+  
   protected interface ListKind
   {
     int CONTAINMENT = 0;
@@ -84,7 +96,7 @@
   }
   
   protected BasicSequence createSequence(int property) {
-	  return new BasicSequence(new BasicFeatureMap(this, property));
+    return new BasicSequence(new BasicFeatureMap(this, property));
   }
   
   protected Sequence createSequence(Sequence sequence, Type type, int propertyIndex) {
@@ -129,32 +141,92 @@
   protected void unsetSequence(Sequence seq) {
     ((FeatureMap.Internal.Wrapper)seq).featureMap().clear();
   }
+
+  protected ChangeContext basicAdd(Sequence seq, Type type, int propertyIndex, Object newValue, ChangeContext changeContext) {
+    ChangeContextImpl changeContextImpl = (ChangeContextImpl)changeContext;
+    changeContextImpl.notificationChain = ((FeatureMap.Internal)((FeatureMap.Internal.Wrapper)seq).featureMap()).basicAdd(((EClass)type).getEStructuralFeature(propertyIndex), newValue, changeContextImpl.notificationChain);
+    return changeContextImpl;
+  }
   
   protected Object get(int featureID, boolean resolve)
   {
     return null;
   }
   
+  private ChangeContextImpl initializeChangeContext(ChangeContext changeContext)
+  {
+    ChangeContextImpl changeContextImpl;
+    if (changeContext == null) 
+    {
+      changeContextImpl = new ChangeContextImpl(null);
+    } else 
+    {
+      changeContextImpl = (ChangeContextImpl)changeContext;
+    }
+    return changeContextImpl;
+  }
+  
   protected interface ChangeContext {}
   
   protected ChangeContext inverseRemove(Object otherEnd, int propertyIndex, ChangeContext changeContext)
   {
-    ChangeContextImpl changeContextImpl = (ChangeContextImpl)changeContext;
+    ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
     changeContextImpl.notificationChain = super.eInverseRemove((InternalEObject)otherEnd, propertyIndex, changeContextImpl.notificationChain);
     return changeContextImpl;
   }
   
+  protected ChangeContext inverseAdd(Object otherEnd, int propertyIndex, ChangeContext changeContext)
+  {
+    ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
+    changeContextImpl = (ChangeContextImpl)changeContext;
+    changeContextImpl.notificationChain = super.eInverseAdd((InternalEObject)otherEnd, propertyIndex, changeContextImpl.notificationChain);
+    return changeContextImpl;
+  }
+
+  protected ChangeContext inverseRemove(Object thisEnd, Object otherEnd, int propertyIndex, Class baseClass, ChangeContext changeContext)
+  {
+    ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
+    changeContextImpl = (ChangeContextImpl)changeContext;
+    changeContextImpl.notificationChain = ((InternalEObject)thisEnd).eInverseRemove((InternalEObject)otherEnd, propertyIndex, baseClass, changeContextImpl.notificationChain);
+    return changeContextImpl;
+  }
+
+  protected ChangeContext inverseAdd(Object thisEnd, Object otherEnd, int propertyIndex, Class baseClass, ChangeContext changeContext)
+  {
+    ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
+    changeContextImpl.notificationChain = ((InternalEObject)thisEnd).eInverseAdd((InternalEObject)otherEnd, propertyIndex, baseClass, changeContextImpl.notificationChain);
+    return changeContextImpl;
+  }
+  
+  protected ChangeContext addNotification(Object notifier, int eventType, int featureID, Object oldValue, Object newValue, ChangeContext changeContext) 
+  {
+    ENotificationImpl notification = new ENotificationImpl((InternalEObject)notifier, eventType, featureID, oldValue, newValue);
+    ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
+    if (changeContextImpl.notificationChain == null) changeContextImpl.notificationChain = notification; else changeContextImpl.notificationChain.add(notification);
+    return changeContextImpl;
+  }
+  
   protected ChangeContext removeFromList(List propertyList, Object objectToRemove, ChangeContext changeContext)
   {
-    ChangeContextImpl changeContextImpl = (ChangeContextImpl)changeContext;
+    ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
     changeContextImpl.notificationChain = ((InternalEList)propertyList).basicRemove(objectToRemove, changeContextImpl.notificationChain); 
     return changeContextImpl;
   }
   
-  protected ChangeContext removeFromSequence(Sequence sequence, Object otherEnd, ChangeContext changeContext) {
-    ChangeContextImpl changeContextImpl = (ChangeContextImpl)changeContext;
+  protected ChangeContext removeFromSequence(Sequence sequence, Object otherEnd, ChangeContext changeContext) 
+  {
+    ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
     changeContextImpl.notificationChain = ((InternalEList)((FeatureMap.Internal.Wrapper)sequence).featureMap()).basicRemove(otherEnd, changeContextImpl.notificationChain);
     return changeContextImpl;
+  }
+  
+  protected void dispatch(ChangeContext changeContext)
+  {
+    ChangeContextImpl changeContextImpl = initializeChangeContext(changeContext);
+    if (changeContextImpl.notificationChain != null)
+    {
+      changeContextImpl.notificationChain.dispatch();
+    }
   }
 
   protected boolean isProxy()

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?rev=425913&r1=425912&r2=425913&view=diff
==============================================================================
--- 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 Wed Jul 26 16:55:42 2006
@@ -16,14 +16,19 @@
  */
 package org.apache.tuscany.sdo.impl;
 
+import org.apache.tuscany.sdo.model.impl.ModelFactoryImpl;
+import org.apache.tuscany.sdo.model.impl.ModelPackageImpl;
 import org.apache.tuscany.sdo.util.DataObjectUtil;
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EDataType;
 import org.eclipse.emf.ecore.ENamedElement;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.impl.EClassImpl;
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
@@ -36,6 +41,9 @@
  */
 public class FactoryBase extends EPackageImpl
 {
+  
+  public static final boolean IS_ATTRIBUTE = true;
+  
   protected FactoryBase(String namespaceURI, String namespacePrefix)
   {
     super(new SDOEFactoryImpl());
@@ -78,6 +86,11 @@
     initEClass((EClass)type, instanceClass, name, !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);   
   }
 
+  protected void initializeType(Type type, Class instanceClass, String name, boolean isSerializable, boolean isGenerated)
+  {
+    initEDataType((EDataType)type, instanceClass, name, isSerializable, isGenerated);   
+  }
+  
   protected void initializeProperty(Property property, Type type, String name, String defaultValue, int lower, int upper, Class containerClass, boolean isReadonly, boolean isUnsettable, boolean isDerived)
   {
     initEAttribute((EAttribute)property, (EClassifier)type, name, defaultValue, lower, upper, containerClass, isDerived, isDerived, !isReadonly, isUnsettable, !IS_ID, !IS_UNIQUE, isDerived, IS_ORDERED);
@@ -88,13 +101,16 @@
     initEReference((EReference)property, (EClassifier)type, (EReference)oppositeProperty, name, defaultValue, lower, upper, containerClass, isDerived, isDerived, !isReadonly, isComposite, !isComposite /*resolve*/, isUnsettable, IS_UNIQUE, isDerived, IS_ORDERED);
   }
 
-
-  
   protected void createXSDMetaData()
   {
     createDocumentRoot();
   }
-  
+
+  protected void addXSDMapping(String[] xsdMappings, String annotationSource)
+  {
+    addAnnotation((ENamedElement)this, annotationSource, xsdMappings);
+  }
+
   protected void addXSDMapping(Type type, String[] xsdMappings)
   {
     addAnnotation((ENamedElement)type, ANNOTATION_SOURCE, xsdMappings);
@@ -105,19 +121,63 @@
     addAnnotation((ENamedElement)property, ANNOTATION_SOURCE, xsdMappings);
   }
   
-  protected void createGlobalProperty(String name, Type type, String[] xsdMappings)
+  protected void setInstanceProperty(Type type, String namespaceURI, String propertyName, String propertyValue)
   {
-    int propertyNumber = documentRootEClass.getEStructuralFeatures().size();
-    createEReference(documentRootEClass, propertyNumber);
-    EReference globalProperty = (EReference)documentRootEClass.getEStructuralFeatures().get(propertyNumber);
-    initEReference(globalProperty, (EClass)type, null, name, null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
-    addAnnotation((ENamedElement)globalProperty, ANNOTATION_SOURCE, xsdMappings);
+    setInstanceProperty((ENamedElement)type, namespaceURI, propertyName, propertyValue);
+  }
+
+  protected void setInstanceProperty(Property property, String namespaceURI, String propertyName, String propertyValue)
+  {
+    setInstanceProperty((ENamedElement)property, namespaceURI, propertyName, propertyValue); 
   }
   
-  protected Type getSequence() {
-    return (Type)ecorePackage.getEFeatureMapEntry();
+  private void setInstanceProperty(ENamedElement eNamedElement, String namespaceURI, String propertyName, String propertyValue)
+  {
+    EAnnotation annotation = eNamedElement.getEAnnotation(namespaceURI);
+    if (annotation == null)
+    {
+      addAnnotation(eNamedElement, namespaceURI, new String[]{propertyName, propertyValue});
+	  } else 
+    {
+      annotation.getDetails().put(propertyName, propertyValue);
+    }
+  }
+
+  protected Property createGlobalProperty(String name, Type type, String[] xsdMappings)
+  {
+    return createGlobalProperty(name, type, xsdMappings, false);
+  }
+  
+  protected Property createGlobalProperty(String name, Type type, String[] xsdMappings, boolean asAttribute)
+  {
+    return createGlobalProperty(name, type, xsdMappings, asAttribute, ANNOTATION_SOURCE);
+  }
+
+  protected Property createGlobalProperty(String name, Type type, String[] xsdMappings, boolean asAttribute, String annotationSource)
+  {
+    int propertyNumber = documentRootEClass.getEStructuralFeatures().size();
+
+    EStructuralFeature globalProperty;
+    if(asAttribute) {
+      createEAttribute(documentRootEClass, propertyNumber);
+      EAttribute gatt = (EAttribute)documentRootEClass.getEStructuralFeatures().get(propertyNumber);
+      initEAttribute(gatt, (EDataType)type, name, null, 0, -2, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+      globalProperty = gatt;
+    } else {
+      createEReference(documentRootEClass, propertyNumber);
+      EReference gref = (EReference)documentRootEClass.getEStructuralFeatures().get(propertyNumber);
+      initEReference(gref, (EClass)type, null, name, null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+      globalProperty = gref;
+    } 
+    addAnnotation((ENamedElement)globalProperty, annotationSource, xsdMappings);
+    return (Property) globalProperty;
   }
 
+  protected Type getSequence() 
+  {
+    return (Type)ecorePackage.getEFeatureMapEntry();
+  }
+  
   //public static FactoryBase getStaticFactory(String namespaceURI)
   // temporarily return Object - until everything is gen'd with new codegen pattern
   public static Object getStaticFactory(String namespaceURI)
@@ -127,6 +187,18 @@
     return ePackage instanceof FactoryBase ? (Object)ePackage : (Object)ePackage.getEFactoryInstance(); 
   }
   
+  // default implementation of createFromString
+  public Object createFromString(Type type, String stringValue, int propertyValue)
+  {
+	return (String)ModelFactoryImpl.eINSTANCE.createFromString(ModelPackageImpl.Literals.STRING, stringValue);
+  }
+  
+  // default implementation of convertToString
+  public String convertToString(Type type, Object objectValue, int propertyValue)
+  {
+	return ModelFactoryImpl.eINSTANCE.convertToString(ModelPackageImpl.Literals.STRING, objectValue);
+  }
+  
   // private EMF-specific methods
 
   private static class SDOEFactoryImpl extends EFactoryImpl
@@ -146,6 +218,16 @@
       }
       return (EObject)result;
     }
+    
+    public Object createFromString(EDataType eDataType, String stringValue)
+    {
+      return sdoFactory.createFromString((Type)eDataType, stringValue, eDataType.getClassifierID());
+    }
+    
+    public String convertToString(EDataType eDataType, Object objectValue)
+    {
+      return sdoFactory.convertToString((Type)eDataType, objectValue, eDataType.getClassifierID());
+    }
   }
   
   private static final int DOCUMENT_ROOT = 0;
@@ -154,7 +236,7 @@
   private static final int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
   private static final String ANNOTATION_SOURCE = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
   private EClass documentRootEClass = null;
-
+  
   private void createDocumentRoot()
   {
     documentRootEClass = ecoreFactory.createEClass();

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?rev=425913&r1=425912&r2=425913&view=diff
==============================================================================
--- 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 Wed Jul 26 16:55:42 2006
@@ -1100,5 +1100,6 @@
   public commonj.sdo.Type getYear() { return (commonj.sdo.Type)getModelPackageImpl().getYear(); }
   public commonj.sdo.Type getYearMonth() { return (commonj.sdo.Type)getModelPackageImpl().getYearMonth(); }
   public commonj.sdo.Type getYearMonthDay() { return (commonj.sdo.Type)getModelPackageImpl().getYearMonthDay(); }
+  public commonj.sdo.Type getDataObject() { return (commonj.sdo.Type)getModelPackageImpl().getDataObject(); }
 
 } //ModelFactoryImpl



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org