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 2009/03/10 19:05:07 UTC
svn commit: r752196 - in /tuscany/java/sca/modules/implementation-osgi/src:
main/java/org/apache/tuscany/sca/implementation/osgi/
main/java/org/apache/tuscany/sca/implementation/osgi/xml/
main/resources/META-INF/services/ test/java/org/apache/tuscany/s...
Author: rfeng
Date: Tue Mar 10 18:05:00 2009
New Revision: 752196
URL: http://svn.apache.org/viewvc?rev=752196&view=rev
Log:
Add the OSGiProperty processor
Added:
tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiPropertyProcessor.java (with props)
Modified:
tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiImplementation.java
tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiProperty.java
tuscany/java/sca/modules/implementation-osgi/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
tuscany/java/sca/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiReadImplTestCase.java
Modified: tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiImplementation.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiImplementation.java?rev=752196&r1=752195&r2=752196&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiImplementation.java (original)
+++ tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiImplementation.java Tue Mar 10 18:05:00 2009
@@ -37,7 +37,6 @@
String BUNDLE_SYMBOLICNAME = "bundleSymbolicName";
String BUNDLE_VERSION = "bundleVersion";
QName IMPLEMENTATION_OSGI = new QName(SCA11_TUSCANY_NS, "implementation.osgi");
- QName PROPERTY_QNAME = OSGiProperty.OSGI_PROPERTY_QNAME;
String getBundleSymbolicName();
Modified: tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiProperty.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiProperty.java?rev=752196&r1=752195&r2=752196&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiProperty.java (original)
+++ tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiProperty.java Tue Mar 10 18:05:00 2009
@@ -25,7 +25,8 @@
* <tuscany:osgi.property>
*/
public interface OSGiProperty {
- QName OSGI_PROPERTY_QNAME = new QName(OSGiImplementation.SCA11_TUSCANY_NS, "osgi.property");
+ String NAME = "name";
+ QName PROPERTY_QNAME = new QName(OSGiImplementation.SCA11_TUSCANY_NS, "osgi.property");
String getValue();
Added: tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiPropertyProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiPropertyProcessor.java?rev=752196&view=auto
==============================================================================
--- tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiPropertyProcessor.java (added)
+++ tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiPropertyProcessor.java Tue Mar 10 18:05:00 2009
@@ -0,0 +1,105 @@
+/*
+ * 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.sca.implementation.osgi.xml;
+
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+import static org.apache.tuscany.sca.implementation.osgi.OSGiProperty.NAME;
+import static org.apache.tuscany.sca.implementation.osgi.OSGiProperty.PROPERTY_QNAME;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
+import org.apache.tuscany.sca.contribution.processor.ContributionWriteException;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.implementation.osgi.OSGiImplementationFactory;
+import org.apache.tuscany.sca.implementation.osgi.OSGiProperty;
+import org.apache.tuscany.sca.monitor.Monitor;
+
+/**
+ * A processor for <tuscany:osgi.property>
+ */
+public class OSGiPropertyProcessor implements StAXArtifactProcessor<OSGiProperty> {
+ private OSGiImplementationFactory factory;
+ private Monitor monitor;
+
+ public OSGiPropertyProcessor(FactoryExtensionPoint modelFactories, Monitor monitor) {
+ this.monitor = monitor;
+ this.factory = modelFactories.getFactory(OSGiImplementationFactory.class);
+ }
+
+ public OSGiProperty read(XMLStreamReader reader) throws XMLStreamException {
+ int event = reader.getEventType();
+ OSGiProperty prop = null;
+ while (true) {
+ switch (event) {
+ case START_ELEMENT:
+ QName name = reader.getName();
+ if (PROPERTY_QNAME.equals(name)) {
+ prop = factory.createOSGiProperty();
+ prop.setName(reader.getAttributeValue(null, NAME));
+ // After the following call, the reader will be positioned at END_ELEMENT
+ String text = reader.getElementText();
+ if (text != null) {
+ text = text.trim();
+ }
+ prop.setValue(text);
+ return prop;
+ }
+ break;
+ case END_ELEMENT:
+ name = reader.getName();
+ if (PROPERTY_QNAME.equals(name)) {
+ return prop;
+ }
+ break;
+ }
+ if (reader.hasNext()) {
+ event = reader.next();
+ } else {
+ return prop;
+ }
+ }
+ }
+
+ public QName getArtifactType() {
+ return PROPERTY_QNAME;
+ }
+
+ public void write(OSGiProperty model, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException {
+ writer.writeStartElement(PROPERTY_QNAME.getNamespaceURI(), PROPERTY_QNAME.getLocalPart());
+ writer.writeAttribute(NAME, model.getName());
+ writer.writeCharacters(model.getValue());
+ writer.writeEndElement();
+ }
+
+ public Class<OSGiProperty> getModelType() {
+ return OSGiProperty.class;
+ }
+
+ public void resolve(OSGiProperty model, ModelResolver resolver) throws ContributionResolveException {
+ // TODO: To be implemented
+ }
+}
Propchange: tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiPropertyProcessor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiPropertyProcessor.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: tuscany/java/sca/modules/implementation-osgi/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-osgi/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor?rev=752196&r1=752195&r2=752196&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-osgi/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor (original)
+++ tuscany/java/sca/modules/implementation-osgi/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor Tue Mar 10 18:05:00 2009
@@ -18,3 +18,4 @@
# Implementation class for the artifact processor extension
org.apache.tuscany.sca.implementation.osgi.xml.OSGiImplementationProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#implementation.osgi,model=org.apache.tuscany.sca.implementation.osgi.OSGiImplementation
org.apache.tuscany.sca.implementation.osgi.xml.ServiceDescriptionsProcessor;qname=http://www.osgi.org/xmlns/sd/v1.0.0#service-descriptions;model=org.apache.tuscany.sca.implementation.osgi.ServiceDescriptions
+org.apache.tuscany.sca.implementation.osgi.xml.OSGiPropertyProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#osgi.property,model=org.apache.tuscany.sca.implementation.osgi.OSGiProperty
Modified: tuscany/java/sca/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiReadImplTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiReadImplTestCase.java?rev=752196&r1=752195&r2=752196&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiReadImplTestCase.java (original)
+++ tuscany/java/sca/modules/implementation-osgi/src/test/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiReadImplTestCase.java Tue Mar 10 18:05:00 2009
@@ -19,14 +19,16 @@
package org.apache.tuscany.sca.implementation.osgi.xml;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
-import junit.framework.TestCase;
-
import org.apache.tuscany.sca.assembly.ComponentType;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
@@ -38,23 +40,26 @@
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
import org.apache.tuscany.sca.implementation.osgi.OSGiImplementation;
+import org.apache.tuscany.sca.implementation.osgi.OSGiProperty;
import org.apache.tuscany.sca.implementation.osgi.test.OSGiTestBundles;
import org.apache.tuscany.sca.implementation.osgi.test.OSGiTestImpl;
import org.apache.tuscany.sca.implementation.osgi.test.OSGiTestInterface;
+import org.junit.BeforeClass;
+import org.junit.Test;
/**
* Test reading OSGi implementations.
*
* @version $Rev$ $Date$
*/
-public class OSGiReadImplTestCase extends TestCase {
+public class OSGiReadImplTestCase {
- private XMLInputFactory inputFactory;
- private StAXArtifactProcessor<Object> staxProcessor;
- private CompositeBuilder compositeBuilder;
+ private static XMLInputFactory inputFactory;
+ private static StAXArtifactProcessor<Object> staxProcessor;
+ private static CompositeBuilder compositeBuilder;
- @Override
- public void setUp() throws Exception {
+ @BeforeClass
+ public static void setUp() throws Exception {
DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry();
inputFactory = XMLInputFactory.newInstance();
StAXArtifactProcessorExtensionPoint staxProcessors =
@@ -69,6 +74,7 @@
}
+ @Test
public void testReadComposite() throws Exception {
InputStream is = getClass().getClassLoader().getResourceAsStream("osgitest.composite");
XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
@@ -78,6 +84,7 @@
compositeBuilder.build(composite, null, null);
}
+ @Test
public void testReadAndResolveComposite() throws Exception {
InputStream is = getClass().getClassLoader().getResourceAsStream("osgitest.composite");
XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
@@ -87,7 +94,21 @@
is = getClass().getClassLoader().getResourceAsStream("bundle.componentType");
reader = inputFactory.createXMLStreamReader(is);
ComponentType componentType = (ComponentType)staxProcessor.read(reader);
-
+
+ assertEquals(1, componentType.getServices().size());
+ Object prop1 = componentType.getServices().get(0).getExtensions().get(1);
+ assertTrue(prop1 instanceof OSGiProperty);
+ OSGiProperty osgiProp1 = (OSGiProperty) prop1;
+ assertEquals("1", osgiProp1.getValue());
+ assertEquals("prop1", osgiProp1.getName());
+
+ assertEquals(4, componentType.getReferences().size());
+ Object prop2 = componentType.getReferences().get(0).getExtensions().get(2);
+ assertTrue(prop2 instanceof OSGiProperty);
+ OSGiProperty osgiProp2 = (OSGiProperty) prop2;
+ assertEquals("ABC", osgiProp2.getValue());
+ assertEquals("prop2", osgiProp2.getName());
+
ModelResolver resolver = new TestModelResolver(getClass().getClassLoader());
staxProcessor.resolve(componentType, resolver);
resolver.addModel(componentType);
@@ -97,6 +118,7 @@
compositeBuilder.build(composite, null, null);
}
+ @Test
public void testReadOSGiImplementation() throws Exception {
String str =