You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by na...@apache.org on 2010/08/24 22:14:21 UTC

svn commit: r988703 - /tuscany/sca-java-1.x/branches/sca-java-1.6.1/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java

Author: nash
Date: Tue Aug 24 20:14:21 2010
New Revision: 988703

URL: http://svn.apache.org/viewvc?rev=988703&view=rev
Log:
Merge revision 952186 from trunk into the 1.6.1 branch

Modified:
    tuscany/sca-java-1.x/branches/sca-java-1.6.1/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java

Modified: tuscany/sca-java-1.x/branches/sca-java-1.6.1/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-1.x/branches/sca-java-1.6.1/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java?rev=988703&r1=988702&r2=988703&view=diff
==============================================================================
--- tuscany/sca-java-1.x/branches/sca-java-1.6.1/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java (original)
+++ tuscany/sca-java-1.x/branches/sca-java-1.6.1/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java Tue Aug 24 20:14:21 2010
@@ -140,7 +140,7 @@ public class NodeImpl implements SCANode
             configuration.getComposite().setURI(compositeURL.toString());
 
             // Configure the node
-            configureNode(configuration);
+            configureNode(configuration, null);
 
         } catch (ServiceRuntimeException e) {
             throw e;
@@ -162,7 +162,7 @@ public class NodeImpl implements SCANode
             initRuntime();
 
             ConfiguredNodeImplementation config = findNodeConfiguration(null, null);
-            configureNode(config);
+            configureNode(config, null);
         } catch (ServiceRuntimeException e) {
             throw e;
         } catch (Throwable e) {
@@ -197,7 +197,7 @@ public class NodeImpl implements SCANode
             initRuntime();
 
             ConfiguredNodeImplementation config = findNodeConfiguration(compositeURI, classLoader);
-            configureNode(config);
+            configureNode(config, null);
         } catch (ServiceRuntimeException e) {
             throw e;
         } catch (Throwable e) {
@@ -378,7 +378,7 @@ public class NodeImpl implements SCANode
             }
 
             // Configure the node
-            configureNode(configuration);
+            configureNode(configuration, null);
 
         } catch (ServiceRuntimeException e) {
             throw e;
@@ -420,20 +420,7 @@ public class NodeImpl implements SCANode
                     modelFactories.getFactory(NodeImplementationFactory.class);
                 configuration = nodeImplementationFactory.createConfiguredNodeImplementation();
 
-                // Read the composite model
-                StAXArtifactProcessor<Composite> compositeProcessor = artifactProcessors.getProcessor(Composite.class);
-                // URL compositeURL = new URL(compositeURI);
-                logger.log(Level.INFO, "Loading composite: " + compositeURI);
-
-                CompositeDocumentProcessor compositeDocProcessor =
-                    (CompositeDocumentProcessor)documentProcessors.getProcessor(Composite.class);
-                composite =
-                    compositeDocProcessor.read(URI.create(compositeURI), new ByteArrayInputStream(compositeContent
-                        .getBytes("UTF-8")));
-
-                analyzeProblems();
-
-                configuration.setComposite(composite);
+                // Defer reading the composite content until the contributions have been loaded (TUSCANY-3569)
 
                 // Create contribution models
                 ContributionFactory contributionFactory = modelFactories.getFactory(ContributionFactory.class);
@@ -444,7 +431,7 @@ public class NodeImpl implements SCANode
             }
 
             // Configure the node
-            configureNode(configuration);
+            configureNode(configuration, compositeContent);
 
         } catch (ServiceRuntimeException e) {
             throw e;
@@ -503,7 +490,7 @@ public class NodeImpl implements SCANode
         return URI.create(uri);
     }
 
-    private void configureNode(ConfiguredNodeImplementation configuration) throws Exception {
+    private void configureNode(ConfiguredNodeImplementation configuration, String compositeContent) throws Exception {
 
         // Find if any contribution JARs already available locally on the classpath
         Map<String, URL> localContributions = localContributions();
@@ -539,7 +526,20 @@ public class NodeImpl implements SCANode
         }
 
         composite = configuration.getComposite();
-        
+
+        // Read the composite content after the contributions have been loaded, so that the
+        // policySet definitions provided by the contributions are available (TUSCANY-3569)
+        if (composite == null && compositeContent != null) {
+            logger.log(Level.INFO, "Loading composite: " + configurationName);
+            CompositeDocumentProcessor compositeDocProcessor =
+                (CompositeDocumentProcessor)documentProcessors.getProcessor(Composite.class);
+            composite =
+                compositeDocProcessor.read(URI.create(configurationName), new ByteArrayInputStream(compositeContent
+                    .getBytes("UTF-8")));
+            analyzeProblems();
+            configuration.setComposite(composite);
+        }
+
         if(composite != null && composite.isUnresolved()) {
             ContributionFactory contributionFactory = modelFactories.getFactory(ContributionFactory.class);
             Artifact compositeFile = contributionFactory.createArtifact();