You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/03/15 00:48:16 UTC
svn commit: r518384 - in
/incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test:
java/org/apache/tuscany/assembly/reader/
java/org/apache/tuscany/assembly/reader/util/
java/org/apache/tuscany/assembly/writer/ resources/
Author: jsdelfino
Date: Wed Mar 14 16:48:15 2007
New Revision: 518384
URL: http://svn.apache.org/viewvc?view=rev&rev=518384
Log:
Added support for reference target, adjusted references to the SCA 1.0 spec, added a print utility class to help print model instances.
Added:
incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/util/PrintUtil.java (with props)
Modified:
incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/ComponentTypeHandler.java
incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/CompositeHandler.java
incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/ReadTestCase.java
incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/writer/ComponentTypeWriter.java
incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/resources/Calculator.composite
Modified: incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/ComponentTypeHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/ComponentTypeHandler.java?view=diff&rev=518384&r1=518383&r2=518384
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/ComponentTypeHandler.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/ComponentTypeHandler.java Wed Mar 14 16:48:15 2007
@@ -20,6 +20,7 @@
package org.apache.tuscany.assembly.reader;
import org.apache.tuscany.assembly.model.AssemblyFactory;
+import org.apache.tuscany.assembly.model.ComponentService;
import org.apache.tuscany.assembly.model.ComponentType;
import org.apache.tuscany.assembly.model.Property;
import org.apache.tuscany.assembly.model.Reference;
@@ -61,6 +62,12 @@
reference = factory.createReference();
reference.setName(getString(attr, "name"));
+ //TODO support multivalued attribute
+ ComponentService target = factory.createComponentService();
+ target.setUndefined(true);
+ target.setName(getString(attr, "target"));
+ reference.getTargets().add(target);
+
} else if ("property".equals(name)) {
property = factory.createProperty();
readProperty(property, attr);
Modified: incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/CompositeHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/CompositeHandler.java?view=diff&rev=518384&r1=518383&r2=518384
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/CompositeHandler.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/CompositeHandler.java Wed Mar 14 16:48:15 2007
@@ -28,6 +28,7 @@
import org.apache.tuscany.assembly.model.CompositeReference;
import org.apache.tuscany.assembly.model.CompositeService;
import org.apache.tuscany.assembly.model.Property;
+import org.apache.tuscany.assembly.model.Wire;
import org.apache.tuscany.assembly.reader.util.BaseHandler;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
@@ -49,6 +50,7 @@
private ComponentProperty componentProperty;
private CompositeService compositeService;
private CompositeReference compositeReference;
+ private Wire wire;
public CompositeHandler(AssemblyFactory factory, XMLReader reader) {
super(factory, reader);
@@ -71,15 +73,33 @@
} else {
compositeService = factory.createCompositeService();
compositeService.setName(getString(attr, "name"));
+
+ ComponentService promoted = factory.createComponentService();
+ promoted.setUndefined(true);
+ promoted.setName(getString(attr, "promote"));
+ compositeService.setPromotedService(promoted);
}
} else if ("reference".equals(name)) {
if (component != null) {
componentReference = factory.createComponentReference();
componentReference.setName(getString(attr, "name"));
+
+ //TODO support multivalued attribute
+ ComponentService target = factory.createComponentService();
+ target.setUndefined(true);
+ target.setName(getString(attr, "target"));
+ componentReference.getTargets().add(target);
+
} else {
compositeReference = factory.createCompositeReference();
compositeReference.setName(getString(attr, "name"));
+
+ //TODO support multivalued attribute
+ ComponentReference promoted = factory.createComponentReference();
+ promoted.setUndefined(true);
+ promoted.setName(getString(attr, "promote"));
+ compositeReference.getPromotedReferences().add(promoted);
}
} else if ("property".equals(name)) {
@@ -95,14 +115,27 @@
component = factory.createComponent();
component.setName(getString(attr, "name"));
component.setConstrainingType(getConstrainingType(attr));
+
+ } else if ("wire".equals(name)) {
+ wire = factory.createWire();
+
+ ComponentReference source = factory.createComponentReference();
+ source.setUndefined(true);
+ source.setName(getString(attr, "source"));
+ wire.setSource(source);
+
+ ComponentService target = factory.createComponentService();
+ target.setUndefined(true);
+ target.setName(getString(attr, "target"));
+ wire.setTarget(target);
}
}
}
- public void endElement(String uri, String localName, String qName) throws SAXException {
- if ("composite".equals(localName)) {
+ public void endElement(String uri, String name, String qname) throws SAXException {
+ if ("composite".equals(name)) {
- } else if ("service".equals(localName)) {
+ } else if ("service".equals(name)) {
if (component != null) {
component.getServices().add(componentService);
@@ -112,7 +145,7 @@
compositeService = null;
}
- } else if ("reference".equals(localName)) {
+ } else if ("reference".equals(name)) {
if (component != null) {
component.getReferences().add(componentReference);
@@ -122,7 +155,7 @@
compositeReference = null;
}
- } else if ("property".equals(localName)) {
+ } else if ("property".equals(name)) {
if (component != null) {
component.getProperties().add(componentProperty);
@@ -132,10 +165,13 @@
property = null;
}
- } else if ("component".equals(localName)) {
-
+ } else if ("component".equals(name)) {
composite.getComponents().add(component);
component = null;
+
+ } else if ("wire".equals(name)) {
+ composite.getWires().add(wire);
+ wire= null;
}
}
Modified: incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/ReadTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/ReadTestCase.java?view=diff&rev=518384&r1=518383&r2=518384
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/ReadTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/ReadTestCase.java Wed Mar 14 16:48:15 2007
@@ -25,6 +25,7 @@
import org.apache.tuscany.assembly.model.AssemblyFactory;
import org.apache.tuscany.assembly.model.impl.AssemblyFactoryImpl;
+import org.apache.tuscany.assembly.reader.util.PrintUtil;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
@@ -38,13 +39,14 @@
AssemblyFactory factory;
XMLReader reader;
-
+
public void setUp() throws Exception {
factory = new AssemblyFactoryImpl();
reader = XMLReaderFactory.createXMLReader();
reader.setFeature("http://xml.org/sax/features/namespaces", true);
reader.setFeature("http://xml.org/sax/features/namespace-prefixes", false);
+
}
public void tearDown() throws Exception {
@@ -58,6 +60,8 @@
reader.setContentHandler(handler);
reader.parse(new InputSource(is));
assertNotNull(handler.getComponentType());
+
+ new PrintUtil(System.out).print(handler.getComponentType());
}
public void testReadConstrainingType() throws Exception {
@@ -66,7 +70,15 @@
reader.setContentHandler(handler);
reader.parse(new InputSource(is));
assertNotNull(handler.getConstrainingType());
+
+ new PrintUtil(System.out).print(handler.getConstrainingType());
}
+
+ public static void main(String[] args) throws Exception {
+ ReadTestCase tc = new ReadTestCase();
+ tc.setUp();
+ tc.testReadComposite();
+ }
public void testReadComposite() throws Exception {
InputStream is = getClass().getClassLoader().getResourceAsStream("Calculator.composite");
@@ -74,6 +86,8 @@
reader.setContentHandler(handler);
reader.parse(new InputSource(is));
assertNotNull(handler.getComposite());
+
+ new PrintUtil(System.out).print(handler.getComposite());
}
}
Added: incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/util/PrintUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/util/PrintUtil.java?view=auto&rev=518384
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/util/PrintUtil.java (added)
+++ incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/util/PrintUtil.java Wed Mar 14 16:48:15 2007
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.assembly.reader.util;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * A simple print utility class to help print the assembly model.
+ *
+ * @version $Rev$ $Date$
+ */
+public class PrintUtil {
+
+ PrintWriter out;
+ Set<Object> objs = new HashSet<Object>();
+ int level;
+
+ public PrintUtil(OutputStream out) {
+ this.out = new PrintWriter(new OutputStreamWriter(out), true);
+ }
+
+ void indent(int level) {
+ for (int i=0; i<level; i++) {
+ out.print(" ");
+ }
+ }
+
+ public void print(Object obj) {
+ if (objs.contains(obj)) {
+ indent(level);
+ out.println(obj.getClass().getName()+"@"+System.identityHashCode(obj));
+ }
+ else {
+ objs.add(obj);
+ try {
+ indent(level);
+ out.println(obj.getClass().getSimpleName() + " {");
+ BeanInfo bi = Introspector.getBeanInfo(obj.getClass());
+ for (PropertyDescriptor pd: bi.getPropertyDescriptors()) {
+ try {
+ Object pv = pd.getReadMethod().invoke(obj);
+ if (pv != null) {
+ if (pv instanceof List) {
+ if (!((List)pv).isEmpty()) {
+ level++;
+ indent(level);
+ out.println(pd.getName() + "= [");
+ for (Object e: (List)pv) {
+ level++;
+ print(e);
+ level--;
+ }
+ indent(level);
+ out.println( " ]");
+ level--;
+ }
+ }
+ else {
+ Class<?> pvc = pv.getClass();
+ if (pvc.isPrimitive() || pvc.getName().startsWith("java.") || pvc.getName().startsWith("javax.")) {
+ if (!pd.getName().equals("class")) {
+ if (!(Boolean.FALSE.equals(pv))) {
+ indent(level+1);
+ out.println(pd.getName() + "=" + pv);
+ }
+ }
+ } else {
+ level++;
+ print(pv);
+ level--;
+ }
+ }
+ }
+ } catch (Exception e) {}
+ }
+ indent(level);
+ out.println("}");
+ } catch (IntrospectionException e) {
+ indent(level);
+ out.println(e);
+ }
+ }
+ }
+
+}
Propchange: incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/util/PrintUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/reader/util/PrintUtil.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/writer/ComponentTypeWriter.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/writer/ComponentTypeWriter.java?view=diff&rev=518384&r1=518383&r2=518384
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/writer/ComponentTypeWriter.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/java/org/apache/tuscany/assembly/writer/ComponentTypeWriter.java Wed Mar 14 16:48:15 2007
@@ -54,8 +54,11 @@
}
for (Reference reference: componentType.getReferences()) {
+ //TODO handle multivalued target attribute
+ String target = reference.getTargets().isEmpty()? null: reference.getTargets().get(0).getName();
out.startElement(sca10, "reference", "reference", attrs(
- new Attr("name", reference.getName())
+ new Attr("name", reference.getName()),
+ new Attr("target", target)
));
}
Modified: incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/resources/Calculator.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/resources/Calculator.composite?view=diff&rev=518384&r1=518383&r2=518384
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/resources/Calculator.composite (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/scdl/src/test/resources/Calculator.composite Wed Mar 14 16:48:15 2007
@@ -21,17 +21,16 @@
xmlns:calc="http://sample.calculator"
name="calc:Calculator">
- <service name="CalculatorService">
+ <service name="CalculatorService" promote="CalculatorServiceComponent">
<interface.java interface="calculator.CalculatorService"/>
- <reference>CalculatorServiceComponent</reference>
</service>
<component name="CalculatorServiceComponent">
<implementation.java class="calculator.CalculatorServiceImpl"/>
- <reference name="addService">AddServiceComponent</reference>
- <reference name="subtractService">SubtractServiceComponent</reference>
- <reference name="multiplyService">MultiplyServiceComponent</reference>
- <reference name="divideService">DivideServiceComponent</reference>
+ <reference name="addService" target="AddServiceComponent"/>
+ <reference name="subtractService" target="SubtractServiceComponent"/>
+ <reference name="multiplyService" target="MultiplyServiceComponent"/>
+ <reference name="divideService" target="DivideServiceComponent"/>
</component>
<component name="AddServiceComponent">
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org