Author: edwardsmj
Date: Thu May  6 13:30:35 2010
New Revision: 941719

URL: http://svn.apache.org/viewvc?rev=941719&view=rev
Log:
Fixes to databinding-sdo required to enable the module to work under OSGi, as 
described in TUSCANY-3547

Modified:
    tuscany/sca-java-2.x/trunk/modules/databinding-sdo/META-INF/MANIFEST.MF
    
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java
    
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
    
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java
    
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDODataBindingTestCase.java
    
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOTransformerTestCaseBase.java
    
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandlerTestCase.java
    
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/XMLDocument2XMLStreamReaderTestCase.java

Modified: 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/META-INF/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-sdo/META-INF/MANIFEST.MF?rev=941719&r1=941718&r2=941719&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/databinding-sdo/META-INF/MANIFEST.MF 
(original)
+++ tuscany/sca-java-2.x/trunk/modules/databinding-sdo/META-INF/MANIFEST.MF Thu 
May  6 13:30:35 2010
@@ -7,9 +7,9 @@ Bundle-Version: 2.0.0
 Bundle-ManifestVersion: 2
 Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
 Bundle-Description: Apache Tuscany SCA Data Binding for SDO
-Import-Package: commonj.sdo,
- commonj.sdo.helper,
- commonj.sdo.impl,
+Import-Package: commonj.sdo;version="2.1",
+ commonj.sdo.helper;version="2.1",
+ commonj.sdo.impl;version="2.1",
  javax.xml.namespace,
  javax.xml.parsers,
  javax.xml.stream,
@@ -34,3 +34,4 @@ Import-Package: commonj.sdo,
 Bundle-SymbolicName: org.apache.tuscany.sca.databinding.sdo
 Bundle-DocURL: http://www.apache.org/
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6
+Require-Bundle: org.apache.tuscany.sca.extensibility

Modified: 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java?rev=941719&r1=941718&r2=941719&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java
 Thu May  6 13:30:35 2010
@@ -24,12 +24,15 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
+import javax.xml.datatype.DatatypeFactory;
 import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.common.java.collection.LRUCache;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.TransformationException;
 import org.apache.tuscany.sca.databinding.util.DataTypeHelper;
+import org.apache.tuscany.sca.extensibility.ClassLoaderContext;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.interfacedef.util.XMLType;
@@ -48,9 +51,21 @@ import commonj.sdo.impl.HelperProvider;
  */
 public final class SDOContextHelper {
     private static final LRUCache<Object, HelperContext> cache = new 
LRUCache<Object, HelperContext>(1024);
+    
+    private static ExtensionPointRegistry registry = null;
+    private static HelperContext defaultHelperContext;
 
     private SDOContextHelper() {
     }
+    
+    /**
+     * Static method used to set the registry used to locate the SDO 
implementation provider
+     * MUST be called before using any other methods on this class
+     * @param theRegistry
+     */
+    public static void setRegistry( ExtensionPointRegistry theRegistry ) {
+       registry = theRegistry;
+    } // end setRegistry
 
     public static HelperContext getHelperContext(TransformationContext 
context, boolean source) {
         if (context == null) {
@@ -161,10 +176,35 @@ public final class SDOContextHelper {
         }
     }
 
-    public static HelperContext getDefaultHelperContext() {
-        // SDOUtil.createHelperContext();
-        return HelperProvider.getDefaultContext();
-    }
+    public static HelperContext getDefaultHelperContext( ) {
+        // Return a chached value if available...
+       if( defaultHelperContext != null ) return defaultHelperContext;
+       
+        // Try to set up TCCL so that SDO Helper Provider service discovery 
works in OSGi
+       if( registry == null ) return null;
+       
+        ClassLoader oldTccl =
+            
ClassLoaderContext.setContextClassLoader(SDOContextHelper.class.getClassLoader(),
+                                                     
registry.getServiceDiscovery(),
+                                                     // SDO Helper Provider
+                                                     
"commonj.sdo.impl.HelperProvider"
+                                                     );
+        try {
+               // Load the HelperProvider (using the new TCCL) and get the 
default HelperContext
+               // cache the returned HelperContext...
+               ClassLoader tccl = 
Thread.currentThread().getContextClassLoader();
+               HelperProvider.setDefaultInstance(tccl);
+               defaultHelperContext = HelperProvider.getDefaultContext();
+               return defaultHelperContext;
+        } catch (Exception e ){
+               e.printStackTrace();
+               return null;
+        } finally {
+            if (oldTccl != null) {
+                Thread.currentThread().setContextClassLoader(oldTccl);
+            }
+        } // end try
+    } // end getDefaultHelperContext()
 
     public static QName getElement(TransformationContext context) {
         if (context == null) {

Modified: 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java?rev=941719&r1=941718&r2=941719&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
 Thu May  6 13:30:35 2010
@@ -24,6 +24,7 @@ import java.security.PrivilegedAction;
 
 import javax.xml.namespace.QName;
 
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.BaseDataBinding;
 import org.apache.tuscany.sca.databinding.WrapperHandler;
 import org.apache.tuscany.sca.databinding.XMLTypeHelper;
@@ -52,8 +53,9 @@ public class SDODataBinding extends Base
     private WrapperHandler<Object> wrapperHandler;
     private XMLTypeHelper xmlTypeHelper;
 
-    public SDODataBinding() {
+    public SDODataBinding( ExtensionPointRegistry registry ) {
         super(NAME, DataObject.class);
+        SDOContextHelper.setRegistry( registry );
         wrapperHandler = new SDOWrapperHandler();
         xmlTypeHelper = new SDOTypeHelper();
     }

Modified: 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java?rev=941719&r1=941718&r2=941719&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java
 Thu May  6 13:30:35 2010
@@ -30,6 +30,7 @@ import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.XMLTypeHelper;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.Interface;
@@ -62,7 +63,7 @@ public class SDOTypeHelper implements XM
     // private Map<String, List<Type>> xsdTypesMap = new HashMap<String, 
List<Type>>();
     // private Map<String, List<Type>> typesMap = new HashMap<String, 
List<Type>>();
 
-    public SDOTypeHelper(ProcessorContext context) {
+    public SDOTypeHelper( ProcessorContext context ) {
         super();
                this.context=context;
                //Should we use this.context to get helper objects ???
@@ -71,11 +72,14 @@ public class SDOTypeHelper implements XM
     }
        //Should we remove this constructor???? otherwise we context gets 
created
     public SDOTypeHelper() {
-        super();
+       this(null);
+        /*
+       super();
                this.context=null;
                //Should we use this.context to get helper objects ???
         typeHelper = 
SDOContextHelper.getDefaultHelperContext().getTypeHelper();
         xsdHelper = SDOContextHelper.getDefaultHelperContext().getXSDHelper();
+        */
     }
     public TypeInfo getTypeInfo(Class javaType, Object logical) {
         QName xmlType = JavaXMLMapper.getXMLType(javaType);

Modified: 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDODataBindingTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDODataBindingTestCase.java?rev=941719&r1=941718&r2=941719&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDODataBindingTestCase.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDODataBindingTestCase.java
 Thu May  6 13:30:35 2010
@@ -23,6 +23,7 @@ import javax.xml.namespace.QName;
 
 import junit.framework.TestCase;
 
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
@@ -51,7 +52,7 @@ public class SDODataBindingTestCase exte
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        binding = new SDODataBinding();
+        binding = new SDODataBinding(new DefaultExtensionPointRegistry());
         context = HelperProvider.getDefaultContext();
         SdoFactory.INSTANCE.register(context);
     }

Modified: 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOTransformerTestCaseBase.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOTransformerTestCaseBase.java?rev=941719&r1=941718&r2=941719&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOTransformerTestCaseBase.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOTransformerTestCaseBase.java
 Thu May  6 13:30:35 2010
@@ -23,6 +23,7 @@ import javax.xml.namespace.QName;
 
 import junit.framework.TestCase;
 
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.impl.TransformationContextImpl;
 import org.apache.tuscany.sca.interfacedef.DataType;
@@ -54,6 +55,7 @@ public abstract class SDOTransformerTest
     @Override
     protected void setUp() throws Exception {
         super.setUp();
+        new SDODataBinding(new DefaultExtensionPointRegistry());
         helperContext = HelperProvider.getDefaultContext();
         SdoFactory.INSTANCE.register(helperContext);
         

Modified: 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandlerTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandlerTestCase.java?rev=941719&r1=941718&r2=941719&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandlerTestCase.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandlerTestCase.java
 Thu May  6 13:30:35 2010
@@ -24,6 +24,7 @@ import javax.xml.namespace.QName;
 
 import junit.framework.TestCase;
 
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.interfacedef.impl.OperationImpl;
 import org.apache.tuscany.sca.interfacedef.util.ElementInfo;
@@ -46,6 +47,7 @@ public class SDOWrapperHandlerTestCase e
 
     @Override
     public void setUp() throws Exception {
+       new SDODataBinding(new DefaultExtensionPointRegistry());
         context = SDOUtil.createHelperContext();
         handler = new SDOWrapperHandler();
     }

Modified: 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/XMLDocument2XMLStreamReaderTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/XMLDocument2XMLStreamReaderTestCase.java?rev=941719&r1=941718&r2=941719&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/XMLDocument2XMLStreamReaderTestCase.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/XMLDocument2XMLStreamReaderTestCase.java
 Thu May  6 13:30:35 2010
@@ -24,9 +24,11 @@ import javax.xml.stream.XMLStreamReader;
 
 import junit.framework.Assert;
 
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
 import org.apache.tuscany.sca.interfacedef.util.XMLType;
+import org.apache.tuscany.sdo.api.SDOUtil;
 
 import com.example.ipo.sdo.PurchaseOrderType;
 import commonj.sdo.helper.XMLDocument;
@@ -36,7 +38,7 @@ import commonj.sdo.helper.XMLDocument;
  * @version $Rev$ $Date$
  */
 public class XMLDocument2XMLStreamReaderTestCase extends 
SDOTransformerTestCaseBase {
-
+       
     @Override
     protected DataType<?> getSourceDataType() {
         return new DataTypeImpl<XMLType>(XMLDocument.class.getName(), 
XMLDocument.class, new XMLType(ORDER_QNAME, null));


Reply via email to