Author: slaws
Date: Wed Dec 19 17:27:10 2007
New Revision: 605781
URL: http://svn.apache.org/viewvc?rev=605781&view=rev
Log:
Changes to make the distributed store tutorial example work with recent domain
changes. The domain changes make the domain responsible for managing the wiring
of composites in the domain and pushing this down to nodes. Nodes are still
reporting service endpoints to the domain but the next piece of work is to put
in some static configuration options so endpoints can be determined at the
domain level and the code in the node removed. Currently the pushing of
endpoints down to the node involves composite updates and starting stopping
components. Most of this change is fixing the bindings that the tutorial uses
to make the starting and stopping work more correctly.
Modified:
incubator/tuscany/java/sca/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/DomainWireBuilderImpl.java
incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java
incubator/tuscany/java/sca/modules/binding-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.java
incubator/tuscany/java/sca/modules/binding-sca-xml/src/test/java/org/apace/tuscany/sca/binding/sca/xml/WriteTestCase.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/BaseStAXArtifactProcessor.java
incubator/tuscany/java/sca/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/SCADomainImpl.java
incubator/tuscany/java/sca/modules/host-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyServer.java
incubator/tuscany/java/sca/modules/host-tomcat/src/main/java/org/apache/tuscany/sca/http/tomcat/TomcatServer.java
incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationProcessor.java
incubator/tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCANodeImpl.java
incubator/tuscany/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/DomainAPITestCase.java
incubator/tuscany/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeDrivenTestCase.java
Modified:
incubator/tuscany/java/sca/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java?rev=605781&r1=605780&r2=605781&view=diff
==============================================================================
---
incubator/tuscany/java/sca/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java
(original)
+++
incubator/tuscany/java/sca/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java
Wed Dec 19 17:27:10 2007
@@ -70,7 +70,10 @@
nodeB = nodeFactory.createSCANode("http://localhost:8200/nodeB",
"http://localhost:9999");
nodeB.addContribution("nodeB", cl.getResource("nodeB/"));
nodeB.addToDomainLevelComposite(new QName("http://foo",
"CompositeB"));
- nodeB.start();
+ nodeB.start();
+
+ // wait for doamin to intialize
+ Thread.sleep(1000);
// get a reference to the calculator service from domainA
// which will be running this component
@@ -87,6 +90,12 @@
nodeB.destroy();
}
+ //@Test
+ public void testKeepServerRunning1() throws Exception {
+ System.out.println("press enter to continue");
+ System.in.read();
+ }
+
@Test
public void testBReference() {
assertEquals("BComponent", acomponent.fooB());
Modified:
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/DomainWireBuilderImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/DomainWireBuilderImpl.java?rev=605781&r1=605780&r2=605781&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/DomainWireBuilderImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/DomainWireBuilderImpl.java
Wed Dec 19 17:27:10 2007
@@ -157,9 +157,9 @@
return service;
}
}
- } else {
+ } else if (component.getServices().size() == 1) {
return component.getServices().get(0);
- }
+ }
}
}
@@ -238,7 +238,7 @@
break;
}
}
- } else {
+ } else if
(tmpComponent.getServices().size() == 1) {
service =
tmpComponent.getServices().get(0);
break;
}
Modified:
incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java?rev=605781&r1=605780&r2=605781&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java
Wed Dec 19 17:27:10 2007
@@ -135,7 +135,16 @@
// Write a <binding.ejb>
writer.writeStartElement(Constants.SCA10_NS, EJBBinding.BINDING_EJB);
- // FIXME Implement
+ if (ejbBinding.getName() != null){
+ writer.writeAttribute(EJBBinding.NAME, ejbBinding.getName());
+ }
+
+ if (ejbBinding.getURI() != null){
+ writer.writeAttribute(EJBBinding.URI, ejbBinding.getURI());
+ }
+
+
+ // FIXME Implement the rest
writer.writeEndElement();
}
Modified:
incubator/tuscany/java/sca/modules/binding-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.java?rev=605781&r1=605780&r2=605781&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/binding-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.java
(original)
+++
incubator/tuscany/java/sca/modules/binding-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.java
Wed Dec 19 17:27:10 2007
@@ -23,6 +23,8 @@
import java.util.ArrayList;
import java.util.List;
+import javax.servlet.ServletContext;
+
import org.apache.tuscany.sca.binding.jsonrpc.JSONRPCBinding;
import org.apache.tuscany.sca.binding.jsonrpc.JSONRPCServiceServlet;
import org.apache.tuscany.sca.binding.jsonrpc.ScaDomainScriptServlet;
@@ -108,6 +110,7 @@
if (!mapping.endsWith("*")) {
mapping += "*";
}
+
servletHost.addServletMapping(mapping, serviceServlet);
servletMappings.add(mapping);
servletHost.addServletMapping(binding.getURI(), serviceServlet);
Modified:
incubator/tuscany/java/sca/modules/binding-sca-xml/src/test/java/org/apace/tuscany/sca/binding/sca/xml/WriteTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-sca-xml/src/test/java/org/apace/tuscany/sca/binding/sca/xml/WriteTestCase.java?rev=605781&r1=605780&r2=605781&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/binding-sca-xml/src/test/java/org/apace/tuscany/sca/binding/sca/xml/WriteTestCase.java
(original)
+++
incubator/tuscany/java/sca/modules/binding-sca-xml/src/test/java/org/apace/tuscany/sca/binding/sca/xml/WriteTestCase.java
Wed Dec 19 17:27:10 2007
@@ -96,10 +96,7 @@
assertNotNull(componentType);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
staxProcessor.write(componentType, bos);
- assertEquals("<?xml version='1.0' encoding='UTF-8'?><componentType
xmlns=\"http" +
- "://www.osoa.org/xmlns/sca/1.0\"><service
name=\"CalculatorService\">" +
- "<binding.sca /></service><reference
name=\"addService\"><binding.sca />" +
- "</reference></componentType>",
+ assertEquals("<?xml version='1.0' encoding='UTF-8'?><componentType
xmlns=\"http://www.osoa.org/xmlns/sca/1.0\"
xmlns:ns1=\"http://www.osoa.org/xmlns/sca/1.0\"><service
name=\"CalculatorService\"><binding.sca /></service><reference
name=\"addService\"><binding.sca /></reference></componentType>",
bos.toString());
//System.err.println(bos.toString());
}
@@ -110,18 +107,7 @@
assertNotNull(composite);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
staxProcessor.write(composite, bos);
- assertEquals(
- "<?xml version='1.0' encoding='UTF-8'?><composite
xmlns=\"http://www.osoa.org/xmln" +
- "s/sca/1.0\" targetNamespace=\"http://calc\"
name=\"Calculator\"><service name=\"Calcul" +
- "atorService\" promote=\"CalculatorServiceComponent\"><binding.sca
/></service><comp" +
- "onent name=\"CalculatorServiceComponent\"><reference
name=\"addService\" target=\"Add" +
- "ServiceComponent\"><binding.sca /></reference><reference
name=\"subtractService\" t" +
- "arget=\"SubtractServiceComponent\" /><reference
name=\"multiplyService\" target=\"Mul" +
- "tiplyServiceComponent\" /><reference name=\"divideService\"
target=\"DivideServiceCo" +
- "mponent\" /></component><component
name=\"AddServiceComponent\"><service><binding.s" +
- "ca /></service></component><component
name=\"SubtractServiceComponent\" /><compone" +
- "nt name=\"MultiplyServiceComponent\" /><component
name=\"DivideServiceComponent\" />" +
- "</composite>",
+ assertEquals("<?xml version='1.0' encoding='UTF-8'?><composite
xmlns=\"http://www.osoa.org/xmlns/sca/1.0\"
xmlns:ns1=\"http://www.osoa.org/xmlns/sca/1.0\" targetNamespace=\"http://calc\"
name=\"Calculator\"><service name=\"CalculatorService\"
promote=\"CalculatorServiceComponent\"><binding.sca /></service><component
name=\"CalculatorServiceComponent\"><reference name=\"addService\"
target=\"AddServiceComponent\"><binding.sca /></reference><reference
name=\"subtractService\" target=\"SubtractServiceComponent\" /><reference
name=\"multiplyService\" target=\"MultiplyServiceComponent\" /><reference
name=\"divideService\" target=\"DivideServiceComponent\"
/></component><component name=\"AddServiceComponent\"><service><binding.sca
/></service></component><component name=\"SubtractServiceComponent\"
/><component name=\"MultiplyServiceComponent\" /><component
name=\"DivideServiceComponent\" /></composite>",
bos.toString() );
//System.err.println(bos.toString());
}
Modified:
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/BaseStAXArtifactProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/BaseStAXArtifactProcessor.java?rev=605781&r1=605780&r2=605781&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/BaseStAXArtifactProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/BaseStAXArtifactProcessor.java
Wed Dec 19 17:27:10 2007
@@ -185,13 +185,13 @@
* @param uri
* @throws XMLStreamException
*/
- private void writeElementPrefix(XMLStreamWriter writer, String uri) throws
XMLStreamException {
+ private String writeElementPrefix(XMLStreamWriter writer, String uri)
throws XMLStreamException {
if (uri == null) {
- return;
+ return null;
}
String prefix = writer.getPrefix(uri);
if (prefix != null) {
- return;
+ return null;
} else {
// Find an available prefix and bind it to the given uri
@@ -203,6 +203,7 @@
}
}
writer.setPrefix(prefix, uri);
+ return prefix;
}
}
@@ -215,9 +216,13 @@
* @throws XMLStreamException
*/
protected void writeStart(XMLStreamWriter writer, String uri, String name,
XAttr... attrs) throws XMLStreamException {
- writeElementPrefix(writer, uri);
+ String prefix = writeElementPrefix(writer, uri);
writeAttributePrefixes(writer, attrs);
writer.writeStartElement(uri, name);
+
+ if (prefix != null){
+ writer.writeNamespace(prefix,uri);
+ }
writeAttributes(writer, attrs);
}
Modified:
incubator/tuscany/java/sca/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/SCADomainImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/SCADomainImpl.java?rev=605781&r1=605780&r2=605781&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/SCADomainImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/SCADomainImpl.java
Wed Dec 19 17:27:10 2007
@@ -24,7 +24,12 @@
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -120,7 +125,12 @@
protected DomainModel domainModel;
// management services
- private SCADomainManagerInitService domainManagerInitService;
+ private SCADomainManagerInitService domainManagerInitService;
+
+ // runs the domain update for nodes that are telling the domain
+ // that something has changed
+ private ScheduledExecutorService scheduler;
+ private DomainUpdateProcessor domainUpdateProcessor;
// Implementation methods
@@ -241,7 +251,11 @@
throw new ActivationException("Domain management contribution
" +
domainCompositeName +
" not found on the classpath");
- }
+ }
+
+ // Get a scheduler and scheduled a task to be run in the future
indefinitely until its explicitly shutdown.
+ domainUpdateProcessor = new DomainUpdateProcessor();
+ this.scheduler = Executors.newSingleThreadScheduledExecutor();
} catch(Exception ex) {
throw new DomainException(ex);
@@ -259,6 +273,12 @@
if
(node.getDeployedComposites().containsKey(composite.getName())){
try {
if (((NodeModelImpl)node).getSCANodeManagerService()
!= null) {
+
+ logger.log(Level.INFO, "Updating node: " +
+ node.getNodeURI() +
+ " with composite: " +
+ compositeXML);
+
// notify node
((NodeModelImpl)node).getSCANodeManagerService().updateComposite(composite.getName().toString(),
Base64Binary.encode(compositeXML.getBytes()));
@@ -359,9 +379,6 @@
" doesn't match a composite in
the contribution " +
contributionURI );
}
-
- // build the contribution to create the services and references
- domainManagementRuntime.getCompositeBuilder().build(composite);
}
} catch(DomainException ex) {
throw ex;
@@ -393,7 +410,9 @@
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
+
//outputFactory.setProperty("javax.xml.stream.isPrefixDefaulting",Boolean.TRUE);
XMLStreamWriter writer = outputFactory.createXMLStreamWriter(bos);
+
processor.write(composite, writer);
writer.flush();
writer.close();
@@ -447,7 +466,9 @@
// if the node was started by the domain we already know it's
running
if (node.getLifecycleState() != LifecyleState.RUNNING){
node.setLifecycleState(LifecyleState.RUNNING);
- notifyDomainChange();
+
+ // run the update in a separate thread so that the caller
doesn't block
+ scheduler.execute(domainUpdateProcessor);
}
} else {
logger.log(Level.WARNING, "trying to start node: " +
@@ -463,7 +484,9 @@
// if the node was stopped by the domain we already know it's
running
if (node.getLifecycleState() == LifecyleState.RUNNING){
node.setLifecycleState(LifecyleState.DEPLOYED);
- notifyDomainChange();
+
+ // run the update in a separate thread so that the caller
doesn't block
+ scheduler.execute(domainUpdateProcessor);
}
} else {
logger.log(Level.WARNING, "trying to stop node: " +
@@ -485,6 +508,8 @@
if ((node != null) && (contributionModel != null)) {
node.getContributions().put(contributionURI,
contributionModel);
}
+ } else {
+ // TODO - throw and exception here ?
}
} catch (Exception ex) {
@@ -546,6 +571,7 @@
contributionModel.getDeployedComposites().put(compositeQName, compositeModel);
node.getDeployedComposites().put(compositeQName,
compositeModel);
domainModel.getDeployedComposites().put(compositeQName, compositeModel);
+
domainManagementRuntime.getCompositeBuilder().build(compositeModel.getComposite());
domainModel.getDomainLevelComposite().getIncludes().add(compositeModel.getComposite());
}
}
@@ -760,6 +786,9 @@
// Stop the SCA runtime that the domain is using
domainManagementRuntime.stop();
+
+ // stop the scheduler
+ scheduler.shutdownNow();
} catch(ActivationException ex) {
throw new DomainException(ex);
@@ -885,25 +914,31 @@
public void addToDomainLevelComposite(QName compositeName) throws
DomainException {
// find this composite and add the composite as a deployed composite
- for (ContributionModel contribution :
domainModel.getContributions().values()){
- CompositeModel composite =
contribution.getComposites().get(compositeName);
- if (composite != null) {
- domainModel.getDeployedComposites().put(compositeName,
composite);
-
domainModel.getDomainLevelComposite().getIncludes().add(composite.getComposite());
+ try {
+ for (ContributionModel contribution :
domainModel.getContributions().values()){
+ CompositeModel composite =
contribution.getComposites().get(compositeName);
+ if (composite != null) {
+ // build the contribution to create the services and
references
+ domainModel.getDeployedComposites().put(compositeName,
composite);
+
domainManagementRuntime.getCompositeBuilder().build(composite.getComposite());
+
domainModel.getDomainLevelComposite().getIncludes().add(composite.getComposite());
+ }
}
+ } catch (Exception ex){
+ throw new DomainException(ex);
}
}
public void removeFromDomainLevelComposite(QName compositeQName) throws
DomainException {
-
domainModel.getDomainLevelComposite().getIncludes().remove(domainModel.getDeployedComposites().get(compositeQName));
+
domainModel.getDomainLevelComposite().getIncludes().remove(domainModel.getDeployedComposites().get(compositeQName).getComposite());
domainModel.getDeployedComposites().remove(compositeQName);
ContributionModel contributionModel =
findContributionFromComposite(compositeQName);
contributionModel.getDeployedComposites().remove(compositeQName);
for(NodeModel node : domainModel.getNodes().values()) {
- if ( node.getDeployedComposites().containsValue(compositeQName)){
+ if ( node.getDeployedComposites().containsKey(compositeQName)){
try {
if (node.getLifecycleState() == LifecyleState.RUNNING) {
((NodeModelImpl)node).getSCANodeManagerService().stop();
@@ -1045,7 +1080,7 @@
// stop all the nodes running this composite
for(NodeModel node : domainModel.getNodes().values()) {
- if ( node.getDeployedComposites().containsValue(compositeName)){
+ if ( node.getDeployedComposites().containsKey(compositeName)){
try {
if (node.getLifecycleState() == LifecyleState.RUNNING) {
node.setLifecycleState(LifecyleState.DEPLOYED);
@@ -1213,5 +1248,23 @@
}
}
}
+
+ // This inner class processes domain wiring actions on a separate thread
so that
+ // we don't have nodes block when they register the fact that they have
started
+ class DomainUpdateProcessor implements Runnable {
+
+ public DomainUpdateProcessor() {
+ }
+
+ public void run() {
+
+ try {
+ notifyDomainChange();
+ } catch (Exception ex) {
+ logger.log(Level.SEVERE, "Error notifying domain update: " +
+ ex.toString());
+ }
+ }
+ }
}
Modified:
incubator/tuscany/java/sca/modules/host-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyServer.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyServer.java?rev=605781&r1=605780&r2=605781&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/host-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyServer.java
(original)
+++
incubator/tuscany/java/sca/modules/host-jetty/src/main/java/org/apache/tuscany/sca/http/jetty/JettyServer.java
Wed Dec 19 17:27:10 2007
@@ -335,6 +335,15 @@
List<ServletMapping> mappings =
new
ArrayList<ServletMapping>(Arrays.asList(servletHandler.getServletMappings()));
String path = uri.getPath();
+
+ if (!path.startsWith("/")) {
+ path = '/' + path;
+ }
+
+ if (!path.startsWith(contextPath)) {
+ path = contextPath + path;
+ }
+
for (ServletMapping mapping : mappings) {
if (Arrays.asList(mapping.getPathSpecs()).contains(path)) {
try {
@@ -369,6 +378,15 @@
List<ServletMapping> mappings =
new
ArrayList<ServletMapping>(Arrays.asList(servletHandler.getServletMappings()));
String path = uri.getPath();
+
+ if (!path.startsWith("/")) {
+ path = '/' + path;
+ }
+
+ if (!path.startsWith(contextPath)) {
+ path = contextPath + path;
+ }
+
for (ServletMapping mapping : mappings) {
if (Arrays.asList(mapping.getPathSpecs()).contains(path)) {
try {
@@ -383,7 +401,9 @@
}
if (removedServlet != null) {
servletHandler.setServletMappings(mappings.toArray(new
ServletMapping[mappings.size()]));
- }
+ } else {
+ logger.info("Trying to Remove servlet mapping: " + path + " where
mapping is not registered");
+ }
return removedServlet;
}
Modified:
incubator/tuscany/java/sca/modules/host-tomcat/src/main/java/org/apache/tuscany/sca/http/tomcat/TomcatServer.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-tomcat/src/main/java/org/apache/tuscany/sca/http/tomcat/TomcatServer.java?rev=605781&r1=605780&r2=605781&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/host-tomcat/src/main/java/org/apache/tuscany/sca/http/tomcat/TomcatServer.java
(original)
+++
incubator/tuscany/java/sca/modules/host-tomcat/src/main/java/org/apache/tuscany/sca/http/tomcat/TomcatServer.java
Wed Dec 19 17:27:10 2007
@@ -307,6 +307,15 @@
}
String mapping = uri.getPath();
+
+ if (!mapping.startsWith("/")) {
+ mapping = '/' + mapping;
+ }
+
+ if (!mapping.startsWith(contextPath)) {
+ mapping = contextPath + mapping;
+ }
+
Context context = port.getHost().map(mapping);
MappingData md = new MappingData();
MessageBytes mb = MessageBytes.newInstance();
@@ -340,6 +349,15 @@
}
String mapping = uri.getPath();
+
+ if (!mapping.startsWith("/")) {
+ mapping = '/' + mapping;
+ }
+
+ if (!mapping.startsWith(contextPath)) {
+ mapping = contextPath + mapping;
+ }
+
Context context = port.getHost().map(mapping);
MappingData md = new MappingData();
MessageBytes mb = MessageBytes.newInstance();
@@ -363,10 +381,16 @@
// seem harmful, will find a better solution for the next
release
}
context.removeChild(servletWrapper);
- servletWrapper.destroyServlet();
+ try {
+ servletWrapper.destroyServlet();
+ } catch (Exception ex){
+ // Temporary hack to stop destruction of servlets without
servlet
+ // context
+ }
//logger.info("Remove Servlet mapping: " + suri);
return servletWrapper.getServlet();
} else {
+ logger.info("Trying to Remove servlet mapping: " + mapping + "
where mapping is not registered");
return null;
}
}
Modified:
incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationProcessor.java?rev=605781&r1=605780&r2=605781&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/implementation-widget/src/main/java/org/apache/tuscany/sca/implementation/widget/WidgetImplementationProcessor.java
Wed Dec 19 17:27:10 2007
@@ -105,7 +105,10 @@
public void write(WidgetImplementation implementation, XMLStreamWriter
writer) throws ContributionWriteException, XMLStreamException {
// Write <implementation.resource>
+ writer.setPrefix("widget",IMPLEMENTATION_WIDGET.getNamespaceURI());
writer.writeStartElement(IMPLEMENTATION_WIDGET.getNamespaceURI(),
IMPLEMENTATION_WIDGET.getLocalPart());
+
writer.writeNamespace("widget",IMPLEMENTATION_WIDGET.getNamespaceURI());
+
if (implementation.getLocation() != null) {
writer.writeAttribute("location", implementation.getLocation());
Modified:
incubator/tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCANodeImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCANodeImpl.java?rev=605781&r1=605780&r2=605781&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCANodeImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCANodeImpl.java
Wed Dec 19 17:27:10 2007
@@ -114,10 +114,7 @@
NodeFactoryImpl nodeFactory;
// domain level wiring
- DomainBuilder domainBuilder;
- List<Binding> removeCandidates = new ArrayList<Binding>();
- List<Binding> addCandidates = new ArrayList<Binding>();
-
+ DomainBuilder domainBuilder;
// methods defined on the implementation only
@@ -835,8 +832,8 @@
} catch (Exception ex) {
throw new NodeException(ex);
}
+
-/*
// for each component in the composite compare it against the live
component
for (Component newComponent : newComposite.getComponents()){
for (Component component : composite.getComponents()){
@@ -846,87 +843,10 @@
for (Reference reference : component.getReferences())
{
if
(reference.getName().equals(newReference.getName())) {
boolean referenceChanged = false;
- Binding removalCandidates[] = new
Binding[reference.getBindings().size()];
- int bindingIndex = 0;
- for (Binding binding :
reference.getBindings()){
- removalCandidates[bindingIndex] = binding;
- bindingIndex++;
- }
-
- for (Binding newBinding :
newReference.getBindings()){
- boolean bindingFound = false;
- bindingIndex = 0;
- for (Binding binding :
reference.getBindings()){
- if
(binding.getName().equals(newBinding.getName())){
- if ((binding.getURI() != null) &&
- (newBinding.getURI() != null)
&&
-
!binding.getURI().equals(newBinding.getURI())){
-
binding.setURI(newBinding.getURI());
- referenceChanged = true;
-
- logger.log(Level.INFO,
"Updating component " +
-
component.getName() +
- "
reference " +
-
reference.getName() +
- "
binding " +
-
binding.getClass().getName() +
- " URI "
+
-
binding.getURI());
- }
- bindingFound = true;
- removalCandidates[bindingIndex] =
null;
- }
- bindingIndex++;
- }
-
- // if the new binding is not currently
deployed then add it
- if (bindingFound == false){
-
reference.getBindings().add(newBinding);
- referenceChanged = true;
- }
- }
-
- // remove all of the old bindings
- for ( int i = 0; i < removalCandidates.length;
i++){
- if (removalCandidates[i] != null){
-
reference.getBindings().remove(removalCandidates[i]);
- referenceChanged = true;
- }
- }
+ List<Binding> removeCandidates = new
ArrayList<Binding>();
+ List<Binding> addCandidates = new
ArrayList<Binding>();
- // if the node is running restart the reference
- if (referenceChanged && nodeStarted){
-
nodeRuntime.getCompositeActivator().deactivate((RuntimeComponent)component,
-
(RuntimeComponentReference)reference);
-
-
nodeRuntime.getCompositeActivator().start((RuntimeComponent)component,
-
(RuntimeComponentReference)reference);
-
- }
- }
- }
- }
-
- // TODO - compare other parts of the component
- }
- }
- }
-
- // TODO - Compare other parts of the composite?
- }
-*/
-
- // for each component in the composite compare it against the live
component
- for (Component newComponent : newComposite.getComponents()){
- for (Component component : composite.getComponents()){
- if (component.getName().equals(newComponent.getName())){
- // compare the component references
- for (Reference newReference :
newComponent.getReferences()){
- for (Reference reference : component.getReferences())
{
- if
(reference.getName().equals(newReference.getName())) {
- boolean referenceChanged = false;
- removeCandidates.clear();
- addCandidates.clear();
+
removeCandidates.addAll(reference.getBindings());
for (Binding newBinding :
newReference.getBindings()){
boolean bindingFound = false;
@@ -949,9 +869,8 @@
binding.getURI());
}
bindingFound = true;
- } else {
- removeCandidates.add(binding);
- }
+ removeCandidates.remove(binding);
+ }
}
if (bindingFound == false){
Modified:
incubator/tuscany/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/DomainAPITestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/DomainAPITestCase.java?rev=605781&r1=605780&r2=605781&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/DomainAPITestCase.java
(original)
+++
incubator/tuscany/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/DomainAPITestCase.java
Wed Dec 19 17:27:10 2007
@@ -124,8 +124,7 @@
@Test
public void testAddAndUpdateContribution() throws Exception {
try {
-
-System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
+
domain.addContribution("nodeA", cl.getResource("nodeA/"));
domain.addContribution("nodeB", cl.getResource("nodeB/"));
domain.addToDomainLevelComposite(new QName("http://sample",
"CalculatorA"));
Modified:
incubator/tuscany/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeDrivenTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeDrivenTestCase.java?rev=605781&r1=605780&r2=605781&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeDrivenTestCase.java
(original)
+++
incubator/tuscany/java/sca/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/NodeDrivenTestCase.java
Wed Dec 19 17:27:10 2007
@@ -88,6 +88,9 @@
nodeC.addToDomainLevelComposite(new QName("http://sample",
"CalculatorC"));
nodeC.start();
+ // wait for domain to configure
+ Thread.sleep(1000);
+
} catch(Exception ex){
ex.printStackTrace();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]