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 2007/07/20 10:20:20 UTC

svn commit: r557921 - in /incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper: DefaultHelperContextImpl.java HelperContextImpl.java HelperProviderImpl.java SDOExtendedMetaDataImpl.java

Author: kelvingoodson
Date: Fri Jul 20 01:20:18 2007
New Revision: 557921

URL: http://svn.apache.org/viewvc?view=rev&rev=557921
Log:
TUSCANY-1459 port to branch

Added:
    incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/DefaultHelperContextImpl.java
Modified:
    incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java
    incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java
    incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java

Added: incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/DefaultHelperContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/DefaultHelperContextImpl.java?view=auto&rev=557921
==============================================================================
--- incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/DefaultHelperContextImpl.java (added)
+++ incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/DefaultHelperContextImpl.java Fri Jul 20 01:20:18 2007
@@ -0,0 +1,72 @@
+/**
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tuscany.sdo.helper;
+
+import java.util.Map;
+import java.util.WeakHashMap;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
+
+public class DefaultHelperContextImpl extends HelperContextImpl {
+    public DefaultHelperContextImpl(final boolean extensibleNamespaces) {
+        super(new SDOExtendedMetaDataImpl(new SDOPackageRegistryDelegator()), extensibleNamespaces);
+    }
+
+    public DefaultHelperContextImpl(final boolean extensibleNamespaces, final Map options) {
+        super(new SDOExtendedMetaDataImpl(new SDOPackageRegistryDelegator()), extensibleNamespaces, options);
+    }
+    
+    protected static class SDOPackageRegistryDelegator extends EPackageRegistryImpl.Delegator {
+        /**
+         * A map from class loader to its associated registry.
+         */
+        protected Map classLoaderToRegistryMap = new WeakHashMap();
+        
+        /**
+         * Returns the package registry associated with the given class loader.
+         * @param classLoader the class loader.
+         * @return the package registry associated with the given class loader.
+         */
+        public synchronized EPackage.Registry getRegistry(final ClassLoader classLoader)
+        {
+          EPackage.Registry result = (EPackage.Registry)classLoaderToRegistryMap.get(classLoader);
+          if (result == null)
+          {
+            if (classLoader == null)
+            {
+              result = HelperContextImpl.getBuiltInModelRegistry();  
+            }
+            else
+            {
+              result = new EPackageRegistryImpl(getRegistry(classLoader.getParent()));
+              classLoaderToRegistryMap.put(classLoader, result);
+            }
+          }
+          return result;
+        }
+        
+        protected EPackage.Registry delegateRegistry(final ClassLoader classLoader)
+        {
+          return getRegistry(classLoader);
+        }
+    }
+}

Modified: incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java?view=diff&rev=557921&r1=557920&r2=557921
==============================================================================
--- incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java (original)
+++ incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperContextImpl.java Fri Jul 20 01:20:18 2007
@@ -24,9 +24,15 @@
 import java.util.Iterator;
 import java.util.Map;
 
+import org.apache.tuscany.sdo.SDOPackage;
+import org.apache.tuscany.sdo.api.XMLStreamHelper;
 import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.change.ChangePackage;
 import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
 import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.emf.ecore.xml.namespace.XMLNamespacePackage;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
 
 import commonj.sdo.helper.CopyHelper;
 import commonj.sdo.helper.DataFactory;
@@ -37,8 +43,6 @@
 import commonj.sdo.helper.XMLHelper;
 import commonj.sdo.helper.XSDHelper;
 
-//import org.apache.tuscany.sdo.api.XMLStreamHelper;
-
 public class HelperContextImpl implements HelperContext {
     /*
      * Relationship: HelperContext*Impl* ---1:1---> ExtendedMetaData ---1:1--->
@@ -109,11 +113,18 @@
 
     static protected EPackage.Registry getBuiltInModelRegistry() {
         if (builtInModelRegistry == null) {
-            builtInModelRegistry = new EPackageRegistryImpl();
+            EPackageRegistryImpl registry = new EPackageRegistryImpl();
             for (Iterator iter = TypeHelperImpl.getBuiltInModels().iterator(); iter.hasNext();) {
                 EPackage ePackage = (EPackage)iter.next();
-                builtInModelRegistry.put(ePackage.getNsURI(), ePackage);
+                registry.put(ePackage.getNsURI(), ePackage);
             }
+            registry.put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE);
+            registry.put(XMLTypePackage.eNS_URI, XMLTypePackage.eINSTANCE);
+            registry.put(ChangePackage.eNS_URI, ChangePackage.eINSTANCE);
+            registry.put(XMLNamespacePackage.eNS_URI, XMLNamespacePackage.eINSTANCE);
+            registry.put(SDOPackage.eNS_URI, SDOPackage.eINSTANCE);
+            
+            builtInModelRegistry = registry;
         }
         return builtInModelRegistry;
     }

Modified: incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java?view=diff&rev=557921&r1=557920&r2=557921
==============================================================================
--- incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java (original)
+++ incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java Fri Jul 20 01:20:18 2007
@@ -23,8 +23,6 @@
 import org.apache.tuscany.sdo.spi.HelperProviderBase;
 
 import commonj.sdo.helper.HelperContext;
-import commonj.sdo.impl.HelperProvider;
-
 
 /**
  * Create and manage all the default helper INSTANCEs
@@ -36,7 +34,7 @@
     //FB HelperContext hc = SDOUtil.createHelperContext();
     //FB The defulat HelperContext must use EMF's ClassLoader-delegating EPackage.Registry.INSTANCE, until we provide
     //FB another way to get (ClassLoader scope) support for HelperContext.
-      HelperContext hc = new HelperContextImpl(new SDOExtendedMetaDataImpl(), false);
+      HelperContext hc = new DefaultHelperContextImpl(false);
     typeHelper = hc.getTypeHelper();
     dataFactory = hc.getDataFactory();
     xmlHelper = hc.getXMLHelper();

Modified: incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java?view=diff&rev=557921&r1=557920&r2=557921
==============================================================================
--- incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java (original)
+++ incubator/tuscany/branches/sdo-1.0-incubating/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOExtendedMetaDataImpl.java Fri Jul 20 01:20:18 2007
@@ -44,7 +44,7 @@
 {
  
   public SDOExtendedMetaDataImpl() {
-    this(EPackage.Registry.INSTANCE);
+      this(HelperContextImpl.getBuiltInModelRegistry());
   }
 
   public SDOExtendedMetaDataImpl(Registry registry) {



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