summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/tags/2.0.1-RC1/modules/builder/src/test/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/tags/2.0.1-RC1/modules/builder/src/test/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentTestCase.java')
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/builder/src/test/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentTestCase.java151
1 files changed, 151 insertions, 0 deletions
diff --git a/sca-java-2.x/tags/2.0.1-RC1/modules/builder/src/test/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentTestCase.java b/sca-java-2.x/tags/2.0.1-RC1/modules/builder/src/test/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentTestCase.java
new file mode 100644
index 0000000000..9102257b77
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/modules/builder/src/test/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentTestCase.java
@@ -0,0 +1,151 @@
+/*
+ * 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.builder.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Base;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
+import org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
+import org.apache.tuscany.sca.definitions.Definitions;
+import org.apache.tuscany.sca.monitor.DefaultMonitorFactory;
+import org.apache.tuscany.sca.monitor.Monitor;
+import org.apache.tuscany.sca.monitor.MonitorFactory;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * Test reading SCA XML assembly documents.
+ *
+ * @version $Rev$ $Date$
+ */
+public class PolicyAttachmentTestCase {
+
+ private static StAXArtifactProcessor<Object> staxProcessor;
+ private static Monitor monitor;
+
+ private static ExtensionPointRegistry extensionPoints;
+ private static XMLInputFactory inputFactory;
+ private static AssemblyFactory assemblyFactory;
+ private static BuilderExtensionPoint builders;
+ private static ProcessorContext context;
+
+ @BeforeClass
+ public static void init() throws Exception {
+ extensionPoints = new DefaultExtensionPointRegistry();
+ context = new ProcessorContext(extensionPoints);
+
+ FactoryExtensionPoint factories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
+ assemblyFactory = factories.getFactory(AssemblyFactory.class);
+ inputFactory = factories.getFactory(XMLInputFactory.class);
+ // Create a monitor
+ UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
+ MonitorFactory monitorFactory = new DefaultMonitorFactory();
+ if (monitorFactory != null) {
+ monitor = monitorFactory.createMonitor();
+ utilities.addUtility(monitorFactory);
+ }
+ StAXArtifactProcessorExtensionPoint staxProcessors =
+ extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+ staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, null);
+ staxProcessors.addArtifactProcessor(new TestPolicyProcessor());
+
+ builders = extensionPoints.getExtensionPoint(BuilderExtensionPoint.class);
+ }
+
+ @Test
+ public void testBuild() throws Exception {
+ Definitions definitions = load("test_definitions.xml");
+ Composite composite = load("Calculator.composite");
+
+ CompositeBuilder uriBuilder = new StructuralURIBuilderImpl(extensionPoints);
+
+ BuilderContext builderContext = new BuilderContext(extensionPoints);
+ builderContext.setDefinitions(definitions);
+ composite = uriBuilder.build(composite, builderContext);
+ PolicyAttachmentBuilderImpl builder = new PolicyAttachmentBuilderImpl(extensionPoints);
+ builder.build(composite, builderContext);
+ }
+
+ private <T> T load(String file) throws IOException, XMLStreamException, ContributionReadException {
+ URL url = getClass().getResource(file);
+ InputStream urlStream = url.openStream();
+ XMLStreamReader reader = inputFactory.createXMLStreamReader(urlStream);
+ reader.nextTag();
+
+ T model = (T)staxProcessor.read(reader, context);
+ reader.close();
+ return model;
+ }
+
+ @Test
+ public void testComplexBuild() throws Exception {
+ Definitions definitions = load("definitions.xml");
+ Composite composite1 = load("Composite1.composite");
+ Composite composite2 = load("Composite2.composite");
+ Composite composite3 = load("Composite3.composite");
+ Composite composite4 = load("Composite4.composite");
+ composite1.getIncludes().clear();
+ composite1.getIncludes().add(composite3);
+
+ composite1.getComponent("Component1B").setImplementation(composite4);
+ composite2.getComponent("Component2B").setImplementation(composite4);
+
+ Composite domainComposite = assemblyFactory.createComposite();
+ domainComposite.setName(new QName(Base.SCA11_NS, ""));
+ domainComposite.setLocal(false);
+ domainComposite.getIncludes().add(composite1);
+ domainComposite.getIncludes().add(composite2);
+
+ CompositeBuilder includeBuilder = new CompositeIncludeBuilderImpl();
+ CompositeBuilder cloneBuilder = new CompositeCloneBuilderImpl();
+ CompositeBuilder uriBuilder = new StructuralURIBuilderImpl(extensionPoints);
+
+ BuilderContext context = new BuilderContext(extensionPoints);
+ context.setDefinitions(definitions);
+ domainComposite = cloneBuilder.build(domainComposite, context);
+ domainComposite = includeBuilder.build(domainComposite, context);
+ domainComposite = uriBuilder.build(domainComposite, context);
+
+ PolicyAttachmentBuilderImpl builder = new PolicyAttachmentBuilderImpl(extensionPoints);
+ domainComposite = builder.build(domainComposite, context);
+
+ }
+
+}