You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/09/18 08:31:24 UTC

svn commit: r576720 - in /incubator/tuscany/java/sca: itest/osgi-contribution/contribution-test/src/main/java/org/apache/tuscany/sca/contribution/osgi/ itest/osgi-implementation/src/test/java/helloworld/ itest/osgi-implementation/src/test/java/util/ mo...

Author: rfeng
Date: Mon Sep 17 23:31:22 2007
New Revision: 576720

URL: http://svn.apache.org/viewvc?rev=576720&view=rev
Log:
Merge the changes from 1.0 branch back to trunk

Added:
    incubator/tuscany/java/sca/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.DataBinding
      - copied unchanged from r576568, incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.DataBinding
    incubator/tuscany/java/sca/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
      - copied, changed from r576568, incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
    incubator/tuscany/java/sca/modules/osgi-runtime/src/main/resources/META-INF/
    incubator/tuscany/java/sca/modules/osgi-runtime/src/main/resources/META-INF/services/
    incubator/tuscany/java/sca/modules/osgi-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
Removed:
    incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/helloworld/HelloWorldTestCase.java
    incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/helloworld/PassByRefTestCase.java
    incubator/tuscany/java/sca/modules/binding-osgi/
    incubator/tuscany/java/sca/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/module/
    incubator/tuscany/java/sca/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
    incubator/tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/runtime/
    incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryModuleActivator.java
    incubator/tuscany/java/sca/modules/implementation-xquery/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
Modified:
    incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/main/java/org/apache/tuscany/sca/contribution/osgi/OSGiTestUtil.java
    incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/util/OSGiTestUtil.java
    incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java
    incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiClassReferenceModelResolver.java
    incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiImportExportListener.java
    incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java
    incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DOMHelper.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
    incubator/tuscany/java/sca/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java
    incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProviderFactory.java
    incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryImplementationProcessor.java
    incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java
    incubator/tuscany/java/sca/modules/osgi-runtime/src/test/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeTestCase.java
    incubator/tuscany/java/sca/modules/pom.xml

Modified: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/main/java/org/apache/tuscany/sca/contribution/osgi/OSGiTestUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/main/java/org/apache/tuscany/sca/contribution/osgi/OSGiTestUtil.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/main/java/org/apache/tuscany/sca/contribution/osgi/OSGiTestUtil.java (original)
+++ incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/main/java/org/apache/tuscany/sca/contribution/osgi/OSGiTestUtil.java Mon Sep 17 23:31:22 2007
@@ -63,7 +63,7 @@
     
     public static void shutdownOSGiRuntime()  {
         try {
-            OSGiRuntime.getRuntime().shutdown();
+            OSGiRuntime.stop();
         
         } catch (Exception e) {
             // Ignore

Modified: incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/util/OSGiTestUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/util/OSGiTestUtil.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/util/OSGiTestUtil.java (original)
+++ incubator/tuscany/java/sca/itest/osgi-implementation/src/test/java/util/OSGiTestUtil.java Mon Sep 17 23:31:22 2007
@@ -61,7 +61,7 @@
     
     public static void shutdownOSGiRuntime()  {
         try {
-            OSGiRuntime.getRuntime().shutdown();
+            OSGiRuntime.stop();
         
         } catch (Exception e) {
             // Ignore

Modified: incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java Mon Sep 17 23:31:22 2007
@@ -40,18 +40,20 @@
     private Contribution contribution;
     protected WeakReference<ClassLoader> classLoader;
     private Map<String, ClassReference> map = new HashMap<String, ClassReference>();
-    
+
     private ModelResolver osgiResolver;
-    
+
     public ClassReferenceModelResolver(Contribution contribution, ModelFactoryExtensionPoint modelFactories) {
         this.contribution = contribution;
         //FIXME The classloader should be passed in
         this.classLoader = new WeakReference<ClassLoader>(Thread.currentThread().getContextClassLoader());
-        
+
         try {
-            Class osgiResolverClass = Class.forName("org.apache.tuscany.sca.contribution.osgi.impl.OSGiClassReferenceModelResolver");
+            Class osgiResolverClass =
+                Class.forName("org.apache.tuscany.sca.contribution.osgi.impl.OSGiClassReferenceModelResolver");
             if (osgiResolverClass != null) {
-                Constructor constructor = osgiResolverClass.getConstructor(Contribution.class, ModelFactoryExtensionPoint.class);
+                Constructor constructor =
+                    osgiResolverClass.getConstructor(Contribution.class, ModelFactoryExtensionPoint.class);
                 this.osgiResolver = (ModelResolver)constructor.newInstance(contribution, modelFactories);
             }
         } catch (Exception e) {
@@ -62,11 +64,11 @@
         ClassReference clazz = (ClassReference)resolved;
         map.put(clazz.getClassName(), clazz);
     }
-    
+
     public Object removeModel(Object resolved) {
         return map.remove(((ClassReference)resolved).getClassName());
     }
-    
+
     /**
      * Handle artifact resolution when the specific class reference is imported from another contribution
      * @param unresolved
@@ -75,10 +77,10 @@
     private ClassReference resolveImportedModel(ClassReference unresolved) {
         ClassReference resolved = unresolved;
 
-        if( this.contribution != null) {
+        if (this.contribution != null) {
             for (Import import_ : this.contribution.getImports()) {
                 if (import_ instanceof JavaImport) {
-                    JavaImport javaImport = (JavaImport) import_;
+                    JavaImport javaImport = (JavaImport)import_;
                     String packageName = javaImport.getPackage();
                     if (javaImport.getPackage().equals(packageName)) {
                         // Delegate the resolution to the import resolver
@@ -86,59 +88,53 @@
                     }
                 }
             }
-            
+
         }
         return resolved;
     }
-    
-    
+
     public <T> T resolveModel(Class<T> modelClass, T unresolved) {
         Object resolved = map.get(unresolved);
-        
-        if (resolved != null ){
+
+        if (resolved != null) {
             return modelClass.cast(resolved);
-        } 
-        
+        }
+
         //Load a class on demand
         Class clazz = null;
-        
-        if (osgiResolver != null)
-            resolved = osgiResolver.resolveModel(modelClass, unresolved);
-        
-        if (unresolved == resolved || resolved == null) {
-            try {
-                clazz = Class.forName(((ClassReference)unresolved).getClassName(), true, classLoader.get());
-            } catch (ClassNotFoundException e) {
-                //we will later try to delegate to imported model resolvers
+
+        try {
+            clazz = Class.forName(((ClassReference)unresolved).getClassName(), true, classLoader.get());
+        } catch (ClassNotFoundException e) {
+            //we will later try to delegate to imported model resolvers
+            if (osgiResolver != null) {
+                resolved = osgiResolver.resolveModel(modelClass, unresolved);
+                clazz = ((ClassReference)resolved).getJavaClass();
             }
         }
-        else
-            clazz = ((ClassReference)resolved).getJavaClass();
-
 
         if (clazz != null) {
             //if we load the class            
             // Store a new ClassReference wrappering the loaded class
             ClassReference classReference = new ClassReference(clazz);
             map.put(getPackageName(classReference), classReference);
-            
+
             // Return the resolved ClassReference
-            return modelClass.cast(classReference);            
+            return modelClass.cast(classReference);
         } else {
             //delegate resolution of the class
             resolved = this.resolveImportedModel((ClassReference)unresolved);
             return modelClass.cast(resolved);
         }
-        
 
     }
-    
+
     /***************
      * Helper methods
      ***************/
-    
+
     private String getPackageName(ClassReference clazz) {
         int pos = clazz.getClassName().lastIndexOf(".");
-        return clazz.getClassName().substring(0, pos - 1 );
+        return clazz.getClassName().substring(0, pos - 1);
     }
 }

Modified: incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiClassReferenceModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiClassReferenceModelResolver.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiClassReferenceModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiClassReferenceModelResolver.java Mon Sep 17 23:31:22 2007
@@ -40,8 +40,7 @@
     private Map<String, ClassReference> map = new HashMap<String, ClassReference>();
     private Bundle bundle;
     private boolean initialized;
-    
-    
+
     public OSGiClassReferenceModelResolver(Contribution contribution, ModelFactoryExtensionPoint modelFactories) {
         this.contribution = contribution;
     }
@@ -50,11 +49,11 @@
         ClassReference clazz = (ClassReference)resolved;
         map.put(clazz.getClassName(), clazz);
     }
-    
+
     public Object removeModel(Object resolved) {
         return map.remove(((ClassReference)resolved).getClassName());
     }
-    
+
     /**
      * Handle artifact resolution when the specific class reference is imported from another contribution
      * @param unresolved
@@ -63,66 +62,63 @@
     private ClassReference resolveImportedModel(ClassReference unresolved) {
         ClassReference resolved = unresolved;
 
-        if( this.contribution != null) {
+        if (this.contribution != null) {
             for (Import import_ : this.contribution.getImports()) {
-                
+
                 if (resolved == unresolved && bundle != null) {
                     resolved = import_.getModelResolver().resolveModel(ClassReference.class, unresolved);
                     if (resolved != unresolved)
-                            break;
+                        break;
                 }
             }
-            
+
         }
         return resolved;
     }
-    
-    
+
     public <T> T resolveModel(Class<T> modelClass, T unresolved) {
         Object resolved = map.get(unresolved);
-        
-        if (resolved != null ){
+
+        if (resolved != null) {
             return modelClass.cast(resolved);
-        } 
+        }
         initialize();
 
         //Load a class on demand
         Class clazz = null;
         if (bundle != null) {
-                try {
-                    clazz = bundle.loadClass(((ClassReference)unresolved).getClassName());
-                } catch (Exception e) {
-                    // we will later try to delegate to imported model resolvers
-                } 
+            try {
+                clazz = bundle.loadClass(((ClassReference)unresolved).getClassName());
+            } catch (Exception e) {
+                // we will later try to delegate to imported model resolvers
+            }
         }
-        
-        
+
         if (clazz != null) {
             //if we load the class            
             // Store a new ClassReference wrappering the loaded class
             ClassReference classReference = new ClassReference(clazz);
             map.put(getPackageName(classReference), classReference);
-            
+
             // Return the resolved ClassReference
-            return modelClass.cast(classReference);            
+            return modelClass.cast(classReference);
         } else {
             //delegate resolution of the class
             resolved = this.resolveImportedModel((ClassReference)unresolved);
             return modelClass.cast(resolved);
         }
-        
 
     }
-    
+
     /***************
      * Helper methods
      ***************/
-    
+
     private String getPackageName(ClassReference clazz) {
         int pos = clazz.getClassName().lastIndexOf(".");
-        return clazz.getClassName().substring(0, pos - 1 );
+        return clazz.getClassName().substring(0, pos - 1);
     }
-    
+
     private void initialize() {
         if (initialized)
             return;

Modified: incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiImportExportListener.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiImportExportListener.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiImportExportListener.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiImportExportListener.java Mon Sep 17 23:31:22 2007
@@ -45,9 +45,9 @@
  * @version $Rev$ $Date$
  */
 public class OSGiImportExportListener implements ContributionListener {
-    
+
     private OSGiBundleProcessor bundleProcessor;
-    
+
     public OSGiImportExportListener() {
         bundleProcessor = new OSGiBundleProcessor();
     }
@@ -57,58 +57,56 @@
      * Export model resolvers are same as Contribution model resolver
      * Import model resolvers are matched to a specific contribution if a location uri is specified, 
      *    otherwise it try to resolve agains all the other contributions
-     */    
+     */
     public void contributionAdded(ContributionRepository repository, Contribution contribution) {
-        
-        OSGiRuntime osgiRuntime;
-        
+
+        OSGiRuntime osgiRuntime = null;
         try {
-            osgiRuntime = OSGiRuntime.getRuntime();
-            
-            if (bundleProcessor.installContributionBundle(contribution) == null)
+            if (bundleProcessor.installContributionBundle(contribution) == null) {
                 return;
+            } else {
+                osgiRuntime = OSGiRuntime.getRuntime();
+            }
         } catch (Exception e) {
             return;
         }
-        
 
         HashSet<Contribution> bundlesToInstall = new HashSet<Contribution>();
         // Initialize the contribution imports
-        for (Import import_: contribution.getImports()) {
+        for (Import import_ : contribution.getImports()) {
             boolean initialized = false;
-            
-           
-            if(import_ instanceof JavaImport) {
-                JavaImport javaImport = (JavaImport) import_;
+
+            if (import_ instanceof JavaImport) {
+                JavaImport javaImport = (JavaImport)import_;
                 String packageName = javaImport.getPackage();
-                
+
                 //Find a matching contribution
-                if(javaImport.getLocation() != null) {
+                if (javaImport.getLocation() != null) {
                     Contribution targetContribution = repository.getContribution(javaImport.getLocation());
                     if (targetContribution != null) {
-                    
+
                         // Find a matching contribution export
-                        for (Export export: targetContribution.getExports()) {
+                        for (Export export : targetContribution.getExports()) {
                             if (export instanceof JavaExport) {
                                 JavaExport javaExport = (JavaExport)export;
                                 if (packageName.equals(javaExport.getPackage())) {
-                                    
+
                                     if (osgiRuntime.findBundle(targetContribution.getLocation()) == null)
                                         bundlesToInstall.add(targetContribution);
-                                        
+
                                     initialized = true;
-                                    
+
                                 }
                             }
                             if (initialized)
                                 break;
                         }
-                    }                    
+                    }
                 }
             }
             if (!initialized) {
                 for (Contribution c : repository.getContributions()) {
-                    
+
                     // Go over all exports in the contribution
                     for (Export export : c.getExports()) {
                         // If the export matches our namespace, try to the resolve the model object
@@ -121,7 +119,7 @@
         }
         for (Contribution c : bundlesToInstall) {
             try {
-                    installDummyBundle(osgiRuntime, c);
+                installDummyBundle(osgiRuntime, c);
             } catch (Exception e) {
             }
         }
@@ -132,10 +130,12 @@
 
     }
 
-    public void contributionUpdated(ContributionRepository repository, Contribution oldContribution, Contribution contribution) {
+    public void contributionUpdated(ContributionRepository repository,
+                                    Contribution oldContribution,
+                                    Contribution contribution) {
 
     }
-    
+
     private void installDummyBundle(OSGiRuntime osgiRuntime, Contribution contribution) throws Exception {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
 
@@ -143,38 +143,47 @@
 
         String bundleName = contribution.getURI();
         String uri = contribution.getURI();
-        
+
         StringBuffer exportPackageNames = new StringBuffer();
         for (Export export : contribution.getExports()) {
             if (export instanceof JavaExport) {
-                if (exportPackageNames.length() > 0) exportPackageNames.append(",");
+                if (exportPackageNames.length() > 0)
+                    exportPackageNames.append(",");
                 exportPackageNames.append(((JavaExport)export).getPackage());
             }
         }
         StringBuffer importPackageNames = new StringBuffer();
         for (Import import_ : contribution.getImports()) {
             if (import_ instanceof JavaImport) {
-                if (importPackageNames.length() > 0) importPackageNames.append(",");
+                if (importPackageNames.length() > 0)
+                    importPackageNames.append(",");
                 importPackageNames.append(((JavaImport)import_).getPackage());
             }
         }
 
-        String manifestStr = "Manifest-Version: 1.0" + EOL
-                + "Bundle-ManifestVersion: 2" + EOL + "Bundle-Name: "
-                + bundleName + EOL + "Bundle-SymbolicName: " + bundleName + EOL
-                + "Bundle-Version: " + "1.0.0" + EOL
-                + "Bundle-Localization: plugin" + EOL;
-        
+        String manifestStr =
+            "Manifest-Version: 1.0" + EOL
+                + "Bundle-ManifestVersion: 2"
+                + EOL
+                + "Bundle-Name: "
+                + bundleName
+                + EOL
+                + "Bundle-SymbolicName: "
+                + bundleName
+                + EOL
+                + "Bundle-Version: "
+                + "1.0.0"
+                + EOL
+                + "Bundle-Localization: plugin"
+                + EOL;
 
         StringBuilder manifestBuf = new StringBuilder();
         manifestBuf.append(manifestStr);
-        manifestBuf.append("Export-Package: " + exportPackageNames + EOL); 
-        manifestBuf.append("Import-Package: " + importPackageNames + EOL); 
+        manifestBuf.append("Export-Package: " + exportPackageNames + EOL);
+        manifestBuf.append("Import-Package: " + importPackageNames + EOL);
         manifestBuf.append("Bundle-ClassPath: .," + uri + EOL);
-        
 
-        ByteArrayInputStream manifestStream = new ByteArrayInputStream(
-                manifestBuf.toString().getBytes());
+        ByteArrayInputStream manifestStream = new ByteArrayInputStream(manifestBuf.toString().getBytes());
         Manifest manifest = new Manifest();
         manifest.read(manifestStream);
 
@@ -184,15 +193,14 @@
         jarOut.putNextEntry(ze);
         URL url = new URL(contribution.getLocation());
         InputStream stream = url.openStream();
-            
+
         byte[] bytes = new byte[stream.available()];
         stream.read(bytes);
         jarOut.write(bytes);
         stream.close();
-        
+
         jarOut.close();
         out.close();
-        
 
         ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
 

Modified: incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java (original)
+++ incubator/tuscany/java/sca/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java Mon Sep 17 23:31:22 2007
@@ -110,15 +110,21 @@
 
     public Object getChild(OMElement wrapper, ElementInfo childElement, int index, TransformationContext context) {
         int pos = 0;
+        String wrapperNS = wrapper.getQName().getNamespaceURI();
         for (Iterator i = wrapper.getChildElements(); i.hasNext();) {
             OMElement e = (OMElement)i.next();
             if (pos == index) {
                 TypeInfo type = childElement.getType();
-                if (type != null) {
+                if (!childElement.getQName().equals(e.getQName()) && type != null) {
                     OMAttribute attr = e.getAttribute(XSI_TYPE_QNAME);
                     if (attr == null) {
-                        OMNamespace ns =
-                            e.getOMFactory().createOMNamespace(type.getQName().getNamespaceURI(), "_typens_");
+                        String typeNS = type.getQName().getNamespaceURI();
+                        if (wrapperNS != null) {
+                            // FIXME: [rfeng] Workaround for TUSCANY-1713, assuming the type
+                            // namespace is the same as the wrapper
+                            typeNS = wrapperNS;
+                        }
+                        OMNamespace ns = e.getOMFactory().createOMNamespace(typeNS, "_typens_");
                         e.declareNamespace(ns);
                         OMNamespace xsiNS =
                             e.getOMFactory().createOMNamespace(XSI_TYPE_QNAME.getNamespaceURI(),

Copied: incubator/tuscany/java/sca/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer (from r576568, incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer?p2=incubator/tuscany/java/sca/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer&p1=incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer&r1=576568&r2=576720&rev=576720&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer (original)
+++ incubator/tuscany/java/sca/modules/databinding-saxon/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer Mon Sep 17 23:31:22 2007
@@ -22,5 +22,5 @@
 org.apache.tuscany.sca.databinding.saxon.Value2ObjectTransformer;source=net.sf.saxon.value.Value,target=java.lang.Object,weight=10000
 org.apache.tuscany.sca.databinding.saxon.SimpleType2ValueTransformer;source=java:simpleType,target=net.sf.saxon.value.Value,weight=10000
 org.apache.tuscany.sca.databinding.saxon.Value2SimpleTypeTransformer;source=net.sf.saxon.value.Value,target=java:simpleType,weight=10000
-org.apache.tuscany.sca.databinding.saxon.NodeInfo2DataObjectTransformer;source=net.sf.saxon.om.NodeInfo,target=commonj.sdo.DataObject,weight=20
+org.apache.tuscany.sca.databinding.saxon.NodeInfo2DataObjectTransformer;source=net.sf.saxon.om.NodeInfo,target=commonj.sdo.DataObject,weight=10
 org.apache.tuscany.sca.databinding.saxon.DataObject2NodeInfoTransformer;source=commonj.sdo.DataObject,target=net.sf.saxon.om.NodeInfo,weight=10

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java Mon Sep 17 23:31:22 2007
@@ -25,6 +25,8 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import org.apache.tuscany.sca.databinding.impl.ServiceConfigurationUtil;
 import org.apache.tuscany.sca.databinding.javabeans.JavaBeansDataBinding;
@@ -38,6 +40,7 @@
  */
 public class DefaultDataBindingExtensionPoint implements DataBindingExtensionPoint {
     private final Map<String, DataBinding> bindings = new HashMap<String, DataBinding>();
+	private static final Logger logger = Logger.getLogger(DefaultTransformerExtensionPoint.class.getName());
     private boolean loadedDataBindings;
 
     public DefaultDataBindingExtensionPoint() {
@@ -56,7 +59,17 @@
     }
 
     public void addDataBinding(DataBinding dataBinding) {
-        bindings.put(dataBinding.getName().toLowerCase(), dataBinding);
+    	if (logger.isLoggable(Level.FINE)) {
+			String className = dataBinding.getClass().getName();
+			boolean lazy = false;
+			if (dataBinding instanceof LazyDataBinding) {
+				className = ((LazyDataBinding) dataBinding).className;
+				lazy = true;
+			}
+			logger.fine("Adding databinding: " + className + ";type="
+					+ dataBinding.getName() + ",lazy=" + lazy);
+		}
+		bindings.put(dataBinding.getName().toLowerCase(), dataBinding);
         String[] aliases = dataBinding.getAliases();
         if (aliases != null) {
             for (String alias : aliases) {

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java Mon Sep 17 23:31:22 2007
@@ -24,6 +24,8 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import org.apache.tuscany.sca.databinding.impl.DirectedGraph;
 import org.apache.tuscany.sca.databinding.impl.ServiceConfigurationUtil;
@@ -32,6 +34,7 @@
  * @version $Rev$ $Date$
  */
 public class DefaultTransformerExtensionPoint implements TransformerExtensionPoint {
+	private static final Logger logger = Logger.getLogger(DefaultTransformerExtensionPoint.class.getName());
     private boolean loadedTransformers;
     
     private final DirectedGraph<Object, Transformer> graph = new DirectedGraph<Object, Transformer>();
@@ -40,14 +43,32 @@
     }
     
     public void addTransformer(String sourceType, String resultType, int weight, Transformer transformer) {
+    	if (logger.isLoggable(Level.FINE)) {
+			String className = transformer.getClass().getName();
+			boolean lazy = false;
+			boolean pull = (transformer instanceof PullTransformer);
+			if (transformer instanceof LazyPullTransformer) {
+				className = ((LazyPullTransformer) transformer).className;
+				lazy = true;
+			}
+			if (transformer instanceof LazyPushTransformer) {
+				className = ((LazyPushTransformer) transformer).className;
+				lazy = true;
+			}
+
+			logger.fine("Adding transformer: " + className + ";source="
+					+ sourceType + ",target=" + resultType + ",weight="
+					+ weight + ",type=" + (pull ? "pull" : "push") + ",lazy="
+					+ lazy);
+		}
         graph.addEdge(sourceType, resultType, transformer, weight);
     }
 
     public void addTransformer(Transformer transformer) {
-        graph.addEdge(transformer.getSourceDataBinding(),
+        addTransformer(transformer.getSourceDataBinding(),
             transformer.getTargetDataBinding(),
-            transformer,
-            transformer.getWeight());
+            transformer.getWeight(),
+            transformer);
     }
 
     public boolean removeTransformer(String sourceType, String resultType) {

Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DOMHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DOMHelper.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DOMHelper.java (original)
+++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DOMHelper.java Mon Sep 17 23:31:22 2007
@@ -23,8 +23,10 @@
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
+import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 
 /**
@@ -71,6 +73,41 @@
         String qname =
             (prefix != null && prefix.length() > 0) ? prefix + ":" + name.getLocalPart() : name.getLocalPart();
         return document.createElementNS(name.getNamespaceURI(), qname);
+    }
+
+    /**
+     * Wrap an element as a DOM document
+     * @param node
+     * @return
+     */
+    public static Document promote(Node node) {
+        if (node instanceof Document) {
+            return (Document)node;
+        }
+        Element element = (Element)node;
+        Document doc = element.getOwnerDocument();
+        if (doc.getDocumentElement() == element) {
+            return doc;
+        }
+        doc = (Document)element.getOwnerDocument().cloneNode(false);
+        Element schema = (Element)doc.importNode(element, true);
+        doc.appendChild(schema);
+        Node parent = element.getParentNode();
+        while (parent instanceof Element) {
+            Element root = (Element)parent;
+            NamedNodeMap nodeMap = root.getAttributes();
+            for (int i = 0; i < nodeMap.getLength(); i++) {
+                Attr attr = (Attr)nodeMap.item(i);
+                String name = attr.getName();
+                if ("xmlns".equals(name) || name.startsWith("xmlns:")) {
+                    if (schema.getAttributeNode(name) == null) {
+                        schema.setAttributeNodeNS((Attr)doc.importNode(attr, true));
+                    }
+                }
+            }
+            parent = parent.getParentNode();
+        }
+        return doc;
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java Mon Sep 17 23:31:22 2007
@@ -23,6 +23,8 @@
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
@@ -58,7 +60,7 @@
 import org.apache.tuscany.sca.work.WorkScheduler;
 
 public class ReallySmallRuntime {
-
+	private final static Logger logger = Logger.getLogger(ReallySmallRuntime.class.getName());
     private List<ModuleActivator> modules;
     private ExtensionPointRegistry registry;
 
@@ -76,7 +78,8 @@
     }
 
     public void start() throws ActivationException {
-
+    	long start = System.currentTimeMillis();
+    	
         // Create our extension point registry
         registry = new DefaultExtensionPointRegistry();
 
@@ -154,6 +157,10 @@
                                                                             scaBindingFactory,
                                                                             mapper,
                                                                             domainPolicySets);
+        if (logger.isLoggable(Level.FINE)) {
+            long end = System.currentTimeMillis();
+			logger.fine("The tuscany runtime is started in " + (end - start) + " ms.");
+		}
     }
     
     private SCADefinitions loadDomainDefinitions(SCADefinitionsDocumentProcessor definitionsProcessor) throws ActivationException {
@@ -174,6 +181,7 @@
     }
 
     public void stop() throws ActivationException {
+    	long start = System.currentTimeMillis();
 
         // Stop the runtime modules
         stopModules(registry, modules);
@@ -189,6 +197,11 @@
         compositeActivator = null;
         workScheduler = null;
         scopeRegistry = null;
+        
+        if (logger.isLoggable(Level.FINE)) {
+            long end = System.currentTimeMillis();
+			logger.fine("The tuscany runtime is stopped in " + (end - start) + " ms.");
+		}
     }
 
     public ContributionService getContributionService() {
@@ -233,16 +246,35 @@
     }
     
     private void startModules(ExtensionPointRegistry registry, List<ModuleActivator> modules) throws ActivationException {
-
+    	boolean debug = logger.isLoggable(Level.FINE);
         // Start all the extension modules
-        for (ModuleActivator activator : modules) {
-            activator.start(registry);
+        for (ModuleActivator module : modules) {
+            long start = 0L;
+        	if (debug) {
+				logger.fine(module.getClass().getName() + " is starting.");
+            	start = System.currentTimeMillis();
+        	}
+            module.start(registry);
+            if (debug) {
+				long end = System.currentTimeMillis();
+				logger.fine(module.getClass().getName() + " is started in " + (end - start) + " ms.");
+			}
         }
     }
 
     private void stopModules(ExtensionPointRegistry registry, List<ModuleActivator> modules) {
+    	boolean debug = logger.isLoggable(Level.FINE);
         for (ModuleActivator module : modules) {
+            long start = 0L;
+        	if (debug) {
+				logger.fine(module.getClass().getName() + " is stopping.");
+            	start = System.currentTimeMillis();
+        	}
             module.stop(registry);
+            if (debug) {
+				long end = System.currentTimeMillis();
+				logger.fine(module.getClass().getName() + " is stopped in " + (end - start) + " ms.");
+			}
         }
     }
 

Modified: incubator/tuscany/java/sca/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/invocation/OSGiTestCase.java Mon Sep 17 23:31:22 2007
@@ -51,7 +51,7 @@
     
     @Override
     protected void tearDown() throws Exception {
-        OSGiRuntime.getRuntime().shutdown();
+        OSGiRuntime.stop();
     }
     
     public void testOSGiComponent() throws Exception {

Modified: incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProviderFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProviderFactory.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProviderFactory.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProviderFactory.java Mon Sep 17 23:31:22 2007
@@ -18,6 +18,10 @@
  */
 package org.apache.tuscany.sca.implementation.xquery;
 
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
+import org.apache.tuscany.sca.databinding.TransformerExtensionPoint;
+import org.apache.tuscany.sca.databinding.impl.MediatorImpl;
 import org.apache.tuscany.sca.implementation.java.injection.JavaPropertyValueObjectFactory;
 import org.apache.tuscany.sca.provider.ImplementationProvider;
 import org.apache.tuscany.sca.provider.ImplementationProviderFactory;
@@ -31,8 +35,11 @@
 
     private JavaPropertyValueObjectFactory javaFactory;
 
-    public XQueryImplementationProviderFactory(JavaPropertyValueObjectFactory javaFactory) {
-        this.javaFactory = javaFactory;
+    public XQueryImplementationProviderFactory(ExtensionPointRegistry registry) {
+        DataBindingExtensionPoint dataBindings = registry.getExtensionPoint(DataBindingExtensionPoint.class);
+        TransformerExtensionPoint transformers = registry.getExtensionPoint(TransformerExtensionPoint.class);
+        MediatorImpl mediator = new MediatorImpl(dataBindings, transformers);
+        this.javaFactory = new JavaPropertyValueObjectFactory(mediator);
     }
 
     public ImplementationProvider createImplementationProvider(RuntimeComponent component,

Modified: incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryImplementationProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryImplementationProcessor.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryImplementationProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryImplementationProcessor.java Mon Sep 17 23:31:22 2007
@@ -27,6 +27,7 @@
 
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.xml.Constants;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
@@ -51,9 +52,9 @@
     private AssemblyFactory assemblyFactory;
     private JavaInterfaceFactory javaFactory;
 
-    public XQueryImplementationProcessor(AssemblyFactory assemblyFactory, JavaInterfaceFactory javaFactory) {
-        this.assemblyFactory = assemblyFactory;
-        this.javaFactory = javaFactory;
+    public XQueryImplementationProcessor(ModelFactoryExtensionPoint modelFactoryExtensionPoint) {
+        this.assemblyFactory = modelFactoryExtensionPoint.getFactory(AssemblyFactory.class);
+        this.javaFactory = modelFactoryExtensionPoint.getFactory(JavaInterfaceFactory.class);
     }
 
     public QName getArtifactType() {

Modified: incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java (original)
+++ incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java Mon Sep 17 23:31:22 2007
@@ -18,28 +18,30 @@
  */
 package org.apache.tuscany.sca.osgi.runtime;
 
-
 import java.io.InputStream;
 import java.lang.reflect.Method;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleException;
 import org.osgi.service.packageadmin.PackageAdmin;
 
-public abstract class OSGiRuntime  {
-    
+public abstract class OSGiRuntime {
+    private static final Logger logger = Logger.getLogger(OSGiRuntime.class.getName());
     private BundleContext bundleContext;
-    
+
     public abstract BundleContext getBundleContext();
-    
-    public abstract void shutdown() throws Exception;
-    
+
+    protected abstract void shutdown() throws Exception;
+
     public abstract boolean supportsBundleFragments();
-    
+
     private PackageAdmin packageAdmin;
-    
-   
+
+    private static OSGiRuntime instance;
+
     /**
      * System property org.apache.tuscany.implementation.osgi.runtime.OSGiRuntime can be set to the
      * name of the OSGiRuntime class (eg. EquinoxRuntime). If set, start this runtime and return the
@@ -48,105 +50,106 @@
      * 
      * @throws BundleException
      */
-    public static OSGiRuntime getRuntime() throws Exception {
-        
+    public synchronized static OSGiRuntime getRuntime() throws Exception {
+        if (instance != null) {
+            return instance;
+        }
         String runtimeClassName = System.getProperty(OSGiRuntime.class.getName());
 
         if (runtimeClassName != null) {
             try {
                 Class<?> runtimeClass = OSGiRuntime.class.getClassLoader().loadClass(runtimeClassName);
                 Method method = runtimeClass.getMethod("getInstance");
-                return (OSGiRuntime) method.invoke(null);
-                
+                instance = (OSGiRuntime)method.invoke(null);
+                return instance;
+
             } catch (Exception e) {
                 throw new BundleException("Could not start OSGi runtime " + runtimeClassName, e);
             }
         }
-        
+
         try {
-            
-            return EquinoxRuntime.getInstance();
-            
+            instance = EquinoxRuntime.getInstance();
+            return instance;
+
         } catch (ClassNotFoundException e) {
-        } catch (Throwable e) {   
-            e.printStackTrace();
-        } 
-        
+            // Ignore
+        } catch (Throwable e) {
+            logger.log(Level.SEVERE, e.getMessage(), e);
+        }
+
         try {
-            
-            return FelixRuntime.getInstance();
-            
+            instance = FelixRuntime.getInstance();
+            return instance;
         } catch (ClassNotFoundException e) {
-        } catch (Throwable e) {   
-            e.printStackTrace();
-        } 
-        
+            // Ignore
+        } catch (Throwable e) {
+            logger.log(Level.SEVERE, e.getMessage(), e);
+        }
+
         try {
-            
-            return KnopflerfishRuntime.getInstance();
-            
+            instance = KnopflerfishRuntime.getInstance();
+            return instance;
         } catch (ClassNotFoundException e) {
-        } catch (Throwable e) {   
-            e.printStackTrace();
-        } 
-        
+            // Ignore
+        } catch (Throwable e) {
+            logger.log(Level.SEVERE, e.getMessage(), e);
+        }
+
         throw new BundleException("Could not start OSGi runtime from the classpath");
     }
-    
+
     private void initialize() {
-    	if (bundleContext == null)
+        if (bundleContext == null)
             bundleContext = getBundleContext();
-    	
-    	if (bundleContext != null) {
-        
-    	    org.osgi.framework.ServiceReference packageAdminReference = 
+
+        if (bundleContext != null) {
+
+            org.osgi.framework.ServiceReference packageAdminReference =
                 bundleContext.getServiceReference("org.osgi.service.packageadmin.PackageAdmin");
             if (packageAdminReference != null) {
-    	  
-                packageAdmin = (PackageAdmin) bundleContext.getService(packageAdminReference);
+
+                packageAdmin = (PackageAdmin)bundleContext.getService(packageAdminReference);
             }
-    	}
-        
+        }
+
     }
-  
 
     public Bundle findBundle(String bundleSymbolicName, String bundleVersion) {
-        
-    	initialize();
-        
+
+        initialize();
+
         if (bundleContext != null) {
             Bundle[] installedBundles = bundleContext.getBundles();
             for (Bundle bundle : installedBundles) {
-                if (bundleSymbolicName.equals(bundle.getSymbolicName()) &&
-                        (bundleVersion == null || 
-                         bundleVersion.equals(bundle.getHeaders().get("Bundle-Version"))))
-                     return bundle;
+                if (bundleSymbolicName.equals(bundle.getSymbolicName()) && (bundleVersion == null || bundleVersion
+                    .equals(bundle.getHeaders().get("Bundle-Version"))))
+                    return bundle;
             }
-                
+
         }
         return null;
     }
-    
 
     public Bundle findBundle(String bundleLocation) {
-        
+
         initialize();
-        
+
         if (bundleContext != null) {
             Bundle[] installedBundles = bundleContext.getBundles();
             for (Bundle bundle : installedBundles) {
                 if (bundle.getLocation().equals(bundleLocation))
-                     return bundle;
+                    return bundle;
             }
-                
+
         }
         return null;
     }
-   
+
     public Bundle installBundle(String bundleLocation, InputStream inputStream) {
-        
-    	initialize();
-       
+
+        initialize();
+
         try {
             if (bundleContext != null) {
                 Bundle bundle = findBundle(bundleLocation);
@@ -156,15 +159,25 @@
                     bundle = bundleContext.installBundle(bundleLocation);
                 else
                     bundle = bundleContext.installBundle(bundleLocation, inputStream);
-                
+
                 if (bundle != null && packageAdmin != null)
-                	packageAdmin.refreshPackages(null);
-                
+                    packageAdmin.refreshPackages(null);
+
                 return bundle;
             }
         } catch (BundleException e) {
         }
         return null;
+    }
+
+    /**
+     * @return the instance
+     */
+    public synchronized static void stop() throws Exception {
+        if (instance != null) {
+            instance.shutdown();
+            instance = null;
+        }
     }
 
 }

Added: incubator/tuscany/java/sca/modules/osgi-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/osgi-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator?rev=576720&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/osgi-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator (added)
+++ incubator/tuscany/java/sca/modules/osgi-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator Mon Sep 17 23:31:22 2007
@@ -0,0 +1,36 @@
+# 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.
+# Implementation class for the ModuleActivator
+org.apache.tuscany.sca.osgi.runtime.OSGiRuntimeModuleActivator
+# 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.
+# Implementation class for the ModuleActivator
+org.apache.tuscany.sca.osgi.runtime.OSGiRuntimeModuleActivator

Modified: incubator/tuscany/java/sca/modules/osgi-runtime/src/test/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/osgi-runtime/src/test/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeTestCase.java?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/osgi-runtime/src/test/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/osgi-runtime/src/test/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntimeTestCase.java Mon Sep 17 23:31:22 2007
@@ -19,40 +19,54 @@
 
 package org.apache.tuscany.sca.osgi.runtime;
 
-import org.apache.tuscany.sca.osgi.runtime.OSGiRuntime;
-import org.osgi.framework.BundleContext;
-
 import junit.framework.TestCase;
 
+import org.osgi.framework.BundleContext;
+
 /**
  * Test OSGi runtime.
  * 
  */
 public class OSGiRuntimeTestCase extends TestCase {
-    
+    private OSGiRuntime runtime;
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    @Override
+    protected void setUp() throws Exception {
+        this.runtime = OSGiRuntime.getRuntime();
+    }
+
+    /**
+     * @see junit.framework.TestCase#tearDown()
+     */
+    @Override
+    protected void tearDown() throws Exception {
+        OSGiRuntime.stop();
+    }
+
     public void testRuntime() throws Exception {
-        
-        BundleContext bc1 = OSGiRuntime.getRuntime().getBundleContext();
-        
+
+        BundleContext bc1 = runtime.getBundleContext();
+
         assertNotNull(bc1);
-        
-        BundleContext bc2 = OSGiRuntime.getRuntime().getBundleContext();
-        
+
+        BundleContext bc2 = runtime.getBundleContext();
+
         assertNotNull(bc2);
-        
+
         assertTrue(bc1 == bc2);
-        
-        OSGiRuntime.getRuntime().shutdown();
-        
-        BundleContext bc3 = OSGiRuntime.getRuntime().getBundleContext();
-        
+
+        OSGiRuntime.stop();
+        runtime = OSGiRuntime.getRuntime();
+
+        BundleContext bc3 = runtime.getBundleContext();
+
         assertNotNull(bc3);
-        
+
         assertTrue(bc1 != bc3);
-        
-        
-        
+
     }
 
-   
 }

Modified: incubator/tuscany/java/sca/modules/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/pom.xml?rev=576720&r1=576719&r2=576720&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/pom.xml Mon Sep 17 23:31:22 2007
@@ -50,7 +50,6 @@
                 <module>binding-rmi</module>
                 <module>binding-sca</module>
                 <module>binding-sca-axis2</module>
-                <module>binding-osgi</module>
                 <!--
                 <module>binding-sca-jms</module>
                 -->



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