summaryrefslogtreecommitdiffstats
path: root/java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl
diff options
context:
space:
mode:
Diffstat (limited to 'java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl')
-rw-r--r--java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl/POJOImplementationFactoryImpl.java36
-rw-r--r--java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl/POJOImplementationImpl.java155
-rw-r--r--java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl/POJOImplementationProcessor.java174
3 files changed, 0 insertions, 365 deletions
diff --git a/java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl/POJOImplementationFactoryImpl.java b/java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl/POJOImplementationFactoryImpl.java
deleted file mode 100644
index 0dad270a6c..0000000000
--- a/java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl/POJOImplementationFactoryImpl.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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 pojo.impl;
-
-import pojo.POJOImplementation;
-import pojo.POJOImplementationFactory;
-
-/**
- * A factory for the POJO implementation model.
- *
- * @version $Rev$ $Date$
- */
-public class POJOImplementationFactoryImpl implements POJOImplementationFactory {
-
- public POJOImplementation createPOJOImplementation() {
- return new POJOImplementationImpl();
- }
-
-}
diff --git a/java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl/POJOImplementationImpl.java b/java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl/POJOImplementationImpl.java
deleted file mode 100644
index f2d6871039..0000000000
--- a/java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl/POJOImplementationImpl.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * 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 pojo.impl;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tuscany.sca.assembly.ConstrainingType;
-import org.apache.tuscany.sca.assembly.Property;
-import org.apache.tuscany.sca.assembly.Reference;
-import org.apache.tuscany.sca.assembly.Service;
-
-import pojo.POJOImplementation;
-
-
-/**
- * Represents a POJO implementation in an SCA assembly.
- *
- * @version $Rev$ $Date$
- */
-class POJOImplementationImpl implements POJOImplementation {
-
- private String pojoName;
- private Class<?> pojoClass;
- private String uri;
- private Map<String, Method> methods;
- private List<Service> services = new ArrayList<Service>();
- private List<Reference> references = new ArrayList<Reference>();
- private List<Property> properties = new ArrayList<Property>();
- private boolean unresolved;
-
- POJOImplementationImpl() {
- }
-
- /**
- * Returns the POJO class name
- * @return
- */
- public String getPOJOName() {
- return pojoName;
- }
-
- /**
- * Sets the POJO class name
- * @param pojoName
- */
- public void setPOJOName(String pojoName) {
- this.pojoName = pojoName;
- setURI(pojoName.replace('.', '/'));
- }
-
- /**
- * Returns the POJO class.
- * @return
- */
- public Class<?> getPOJOClass() {
- return pojoClass;
- }
-
- /**
- * Sets the POJO class.
- * @param pojoClass
- */
- public void setPOJOClass(Class<?> pojoClass) {
- this.pojoClass = pojoClass;
- setPOJOName(pojoClass.getName());
-
- // Index the POJO's methods
- methods = new HashMap<String, Method>();
- Method[] m = pojoClass.getMethods();
- for (int i = 0; i < m.length; i++) {
- methods.put(m[i].getName(), m[i]);
- }
- }
-
- /**
- * Returns the POJO's methods.
- * @return
- */
- public Map<String, Method> getMethods() {
- return methods;
- }
-
- public ConstrainingType getConstrainingType() {
- // The sample POJO implementation does not support constrainingTypes
- return null;
- }
-
- public List<Property> getProperties() {
- return properties;
- }
-
- public List<Service> getServices() {
- return services;
- }
-
- public List<Reference> getReferences() {
- return references;
- }
-
- public String getURI() {
- return uri;
- }
-
- public void setConstrainingType(ConstrainingType constrainingType) {
- // The sample POJO implementation does not support constrainingTypes
- }
-
- public void setURI(String uri) {
- this.uri = uri;
- }
-
- public boolean isUnresolved() {
- return unresolved;
- }
-
- public void setUnresolved(boolean unresolved) {
- this.unresolved = unresolved;
- }
-
- @Override
- public int hashCode() {
- return uri.hashCode();
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj instanceof POJOImplementationImpl) {
- return ((POJOImplementationImpl)obj).getURI().equals(uri);
- } else {
- return false;
- }
- }
-
-}
diff --git a/java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl/POJOImplementationProcessor.java b/java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl/POJOImplementationProcessor.java
deleted file mode 100644
index 44a2cc0aa8..0000000000
--- a/java/sca-contrib/samples/implementation-pojo-extension/src/main/java/pojo/impl/POJOImplementationProcessor.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * 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 pojo.impl;
-
-import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
-
-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.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.ComponentType;
-import org.apache.tuscany.sca.assembly.Service;
-import org.apache.tuscany.sca.assembly.xml.PolicyAttachPointProcessor;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.resolver.ClassReference;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.contribution.service.ContributionReadException;
-import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
-import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
-import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
-import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.policy.PolicyFactory;
-
-import pojo.POJOImplementation;
-import pojo.POJOImplementationFactory;
-
-/**
- * Implements a STAX based artifact processor for POJO implementations.
- *
- * The artifact processor is responsible for processing <implementation.pojo>
- * elements in SCA assembly XML composite files and populating the POJO
- * implementation model, resolving its references to other artifacts in the SCA
- * contribution, and optionally write the model back to SCA assembly XML.
- */
-public class POJOImplementationProcessor implements StAXArtifactProcessor<POJOImplementation> {
- private static final QName IMPLEMENTATION_POJO = new QName("http://pojo", "implementation.pojo");
-
- private AssemblyFactory assemblyFactory;
- private JavaInterfaceFactory javaFactory;
- private POJOImplementationFactory pojoImplementationFactory;
- private PolicyFactory policyFactory;
- private PolicyAttachPointProcessor policyProcessor;
-
- public POJOImplementationProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) {
-
- // Get the assembly and Java interface factories as we'll need them to
- // create model objects
- assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
- javaFactory = modelFactories.getFactory(JavaInterfaceFactory.class);
- policyFactory = modelFactories.getFactory(PolicyFactory.class);
- pojoImplementationFactory = modelFactories.getFactory(POJOImplementationFactory.class);
- policyProcessor = new PolicyAttachPointProcessor(policyFactory);
- }
-
- public QName getArtifactType() {
- // Returns the qname of the XML element processed by this processor
- return IMPLEMENTATION_POJO;
- }
-
- public Class<POJOImplementation> getModelType() {
- // Returns the type of model processed by this processor
- return POJOImplementation.class;
- }
-
- public POJOImplementation read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
-
- // Read an <implementation.pojo> element
- POJOImplementation implementation = pojoImplementationFactory.createPOJOImplementation();
-
- // Read policies
- policyProcessor.readPolicies(implementation, reader);
-
- // Read the POJO class attribute.
- String className = reader.getAttributeValue(null, "class");
- implementation.setPOJOName(className);
-
- // Mark the POJO model unresolved to track the fact that it's not
- // completely initialized, its class is not loaded yet and services
- // and references not initialized either
- implementation.setUnresolved(true);
-
- // Skip to end element
- while (reader.hasNext()) {
- if (reader.next() == END_ELEMENT && IMPLEMENTATION_POJO.equals(reader.getName())) {
- break;
- }
- }
-
- return implementation;
- }
-
- public void resolve(POJOImplementation implementation, ModelResolver resolver) throws ContributionResolveException {
-
- // Resolve the POJO implementation
-
- // First resolve its class
- ClassReference classReference = new ClassReference(implementation.getPOJOName());
- classReference = resolver.resolveModel(ClassReference.class, classReference);
- Class<?> pojoClass = classReference.getJavaClass();
- if (pojoClass == null) {
- throw new ContributionResolveException("Class could not be resolved: " + implementation.getPOJOName());
- }
- implementation.setPOJOClass(pojoClass);
-
- // Check to see if we have a .componentType file describing the POJO class
- ComponentType componentType = assemblyFactory.createComponentType();
- componentType.setUnresolved(true);
- componentType.setURI(implementation.getURI() + ".componentType");
- componentType = resolver.resolveModel(ComponentType.class, componentType);
- if (!componentType.isUnresolved()) {
-
- // We have a component type description, merge it into the POJO model
- implementation.getServices().addAll(componentType.getServices());
- implementation.getReferences().addAll(componentType.getReferences());
- implementation.getProperties().addAll(componentType.getProperties());
-
- } else {
-
- // We have no component type description, simply introspect the POJO and
- // create a single Service for it
- Service service = assemblyFactory.createService();
- service.setName(pojoClass.getSimpleName());
- JavaInterface javaInterface;
- try {
- javaInterface = javaFactory.createJavaInterface(pojoClass);
- } catch (InvalidInterfaceException e) {
- throw new ContributionResolveException(e);
- }
- JavaInterfaceContract interfaceContract = javaFactory.createJavaInterfaceContract();
- interfaceContract.setInterface(javaInterface);
- service.setInterfaceContract(interfaceContract);
- implementation.getServices().add(service);
- }
-
- // Mark the implementation resolved now
- implementation.setUnresolved(false);
- }
-
- public void write(POJOImplementation implementation, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException {
-
- // Write <implementation.pojo> element
- policyProcessor.writePolicyPrefixes(implementation, writer);
- writer.writeStartElement(IMPLEMENTATION_POJO.getNamespaceURI(), IMPLEMENTATION_POJO.getLocalPart());
- policyProcessor.writePolicyAttributes(implementation, writer);
-
- if (implementation.getPOJOName() != null) {
- writer.writeAttribute("class", implementation.getPOJOName());
- }
-
- writer.writeEndElement();
- }
-}