summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-10-22 17:12:05 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-10-22 17:12:05 +0000
commit756bf45a97409eb42ecd2e478abbbee4101ae997 (patch)
tree75055eb5cd2e5e397c1cd04503246870387b0d5b /java
parent83ac0d81c3ac10a7452a5d54d347feb52ae7a5e9 (diff)
Remove tuscany-scdl module as it is now replaced by tuscany-deployment
Adjust itest-scdl to use the Deployer from tuscany-deployment git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@828787 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/sca/itest/scdl/pom.xml24
-rw-r--r--java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ContributionTestCase.java14
-rw-r--r--java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/SCDLTestCase.java14
-rw-r--r--java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java2
-rw-r--r--java/sca/modules/pom.xml3
-rw-r--r--java/sca/modules/scdl/LICENSE205
-rw-r--r--java/sca/modules/scdl/META-INF/MANIFEST.MF33
-rw-r--r--java/sca/modules/scdl/NOTICE6
-rw-r--r--java/sca/modules/scdl/pom.xml72
-rw-r--r--java/sca/modules/scdl/src/main/java/org/apache/tuscany/sca/scdl/Contributions.java160
-rw-r--r--java/sca/modules/scdl/src/main/java/org/apache/tuscany/sca/scdl/SCDLUtils.java465
11 files changed, 46 insertions, 952 deletions
diff --git a/java/sca/itest/scdl/pom.xml b/java/sca/itest/scdl/pom.xml
index 2ed073493f..54e1c132ec 100644
--- a/java/sca/itest/scdl/pom.xml
+++ b/java/sca/itest/scdl/pom.xml
@@ -32,11 +32,31 @@
<dependencies>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-scdl</artifactId>
+ <artifactId>tuscany-deployment</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonp</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-rmi</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jms</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
</dependencies>
-
+
<build>
<plugins>
<!-- Copy all the dependencies so the test can verify only the expected ones get dragged in -->
diff --git a/java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ContributionTestCase.java b/java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ContributionTestCase.java
index 22370f4e39..c56545dd3b 100644
--- a/java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ContributionTestCase.java
+++ b/java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ContributionTestCase.java
@@ -19,6 +19,9 @@
package org.apache.tuscany.sca.itest.scdl;
+import java.io.File;
+import java.net.URL;
+import java.util.Arrays;
import java.util.List;
import junit.framework.Assert;
@@ -28,8 +31,10 @@ import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.Implementation;
import org.apache.tuscany.sca.assembly.Reference;
import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.deployment.DefaultDeployer;
+import org.apache.tuscany.sca.deployment.Deployer;
import org.apache.tuscany.sca.implementation.java.JavaImplementation;
-import org.apache.tuscany.sca.scdl.SCDLUtils;
+import org.apache.tuscany.sca.monitor.Monitor;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -41,7 +46,12 @@ public class ContributionTestCase {
@Test
public void testRead() throws Exception {
- Contribution contribution = SCDLUtils.readContribution("../../samples/calculator/target/sample-calculator.jar");
+ Deployer deployer = new DefaultDeployer();
+ File file = new File("../../samples/calculator/target/sample-calculator.jar");
+ URL url = file.toURI().toURL();
+ Monitor monitor = deployer.createMonitor();
+ Contribution contribution = deployer.loadContribution(url.toURI(), url, monitor);
+ deployer.build(Arrays.asList(contribution), null, monitor);
// Ferkle around in the contribution verifying it looks as expected
Assert.assertNotNull(contribution);
diff --git a/java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/SCDLTestCase.java b/java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/SCDLTestCase.java
index a21de6f819..18fb9394bf 100644
--- a/java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/SCDLTestCase.java
+++ b/java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/SCDLTestCase.java
@@ -19,7 +19,7 @@
package org.apache.tuscany.sca.itest.scdl;
-import java.io.InputStream;
+import java.net.URL;
import javax.xml.stream.XMLStreamException;
@@ -32,7 +32,10 @@ import org.apache.tuscany.sca.binding.jms.JMSBinding;
import org.apache.tuscany.sca.binding.jsonp.JSONPBinding;
import org.apache.tuscany.sca.binding.rmi.RMIBinding;
import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
-import org.apache.tuscany.sca.scdl.SCDLUtils;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
+import org.apache.tuscany.sca.deployment.Deployer;
import org.junit.Test;
/**
@@ -42,8 +45,11 @@ public class SCDLTestCase {
@Test
public void testRead() throws ContributionReadException, XMLStreamException {
- InputStream r = getClass().getClassLoader().getResourceAsStream("test.composite");
- Composite composite = SCDLUtils.readComposite(r);
+ ExtensionPointRegistry registry = new DefaultExtensionPointRegistry();
+ Deployer deployer = registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(Deployer.class);
+
+ URL r = getClass().getResource("/test.composite");
+ Composite composite = deployer.loadXMLDocument(r, null);
Assert.assertNotNull(composite);
Component JavaComp = composite.getComponent("JavaComponent");
diff --git a/java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java b/java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java
index edb6ec85e6..44695e5dde 100644
--- a/java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java
+++ b/java/sca/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java
@@ -68,6 +68,6 @@ public class ValidateDependenciesTestCase {
Assert.assertTrue(dependenciesDir.exists());
File[] dependencyFiles = dependenciesDir.listFiles();
- Assert.assertEquals(25, dependencyFiles.length);
+ Assert.assertEquals(20, dependencyFiles.length);
}
}
diff --git a/java/sca/modules/pom.xml b/java/sca/modules/pom.xml
index d277137991..a69f055942 100644
--- a/java/sca/modules/pom.xml
+++ b/java/sca/modules/pom.xml
@@ -98,10 +98,9 @@
<module>policy-logging</module>
<module>sca-api</module>
<module>sca-client-impl</module>
- <module>scdl</module>
<module>stripes</module>
<module>xsd</module>
- <!-- OSGi RFC 119 -->
+ <!-- OSGi Remote Services with SCA -->
<module>contribution-osgi</module>
<module>implementation-osgi</module>
<module>implementation-osgi-runtime</module>
diff --git a/java/sca/modules/scdl/LICENSE b/java/sca/modules/scdl/LICENSE
deleted file mode 100644
index 6e529a25c4..0000000000
--- a/java/sca/modules/scdl/LICENSE
+++ /dev/null
@@ -1,205 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed 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.
-
-
-
diff --git a/java/sca/modules/scdl/META-INF/MANIFEST.MF b/java/sca/modules/scdl/META-INF/MANIFEST.MF
deleted file mode 100644
index 2246e4c1a9..0000000000
--- a/java/sca/modules/scdl/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,33 +0,0 @@
-Manifest-Version: 1.0
-Export-Package: org.apache.tuscany.sca.scdl;version="2.0.0"
-Tool: Bnd-0.0.255
-Bundle-Name: Apache Tuscany SCA SCDL
-Created-By: 1.6.0_07 (Sun Microsystems Inc.)
-Bundle-Vendor: The Apache Software Foundation
-Bundle-Version: 2.0.0
-Bnd-LastModified: 1225397097203
-Bundle-ManifestVersion: 2
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Bundle-Description: Apache Tuscany SCA SCDL
-Import-Package: javax.xml.transform.stream,
- org.apache.tuscany.sca.assembly;version="2.0.0",
- org.apache.tuscany.sca.contribution;version="2.0.0",
- org.apache.tuscany.sca.contribution.processor;version="2.0.0",
- org.apache.tuscany.sca.contribution.resolver;version="2.0.0",
- org.apache.tuscany.sca.core;version="2.0.0",
- org.apache.tuscany.sca.definitions;version="2.0.0",
- org.apache.tuscany.sca.definitions.util;version="2.0.0",
- org.apache.tuscany.sca.definitions.xml;version="2.0.0",
- org.apache.tuscany.sca.extensibility;version="2.0.0",
- org.apache.tuscany.sca.interfacedef;version="2.0.0",
- org.apache.tuscany.sca.common.java.io;version="2.0.0",
- org.apache.tuscany.sca.monitor;version="2.0.0",
- org.apache.tuscany.sca.policy;version="2.0.0",
- org.apache.tuscany.sca.policy.impl;version="2.0.0",
- org.apache.tuscany.sca.policy.util;version="2.0.0",
- org.apache.tuscany.sca.scdl;version="2.0.0",
- org.w3c.dom,
- org.xml.sax
-Bundle-SymbolicName: org.apache.tuscany.sca.scdl
-Bundle-DocURL: http://www.apache.org/
-Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6
diff --git a/java/sca/modules/scdl/NOTICE b/java/sca/modules/scdl/NOTICE
deleted file mode 100644
index 51042eab05..0000000000
--- a/java/sca/modules/scdl/NOTICE
+++ /dev/null
@@ -1,6 +0,0 @@
-${pom.name}
-Copyright (c) 2005 - 2009 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/java/sca/modules/scdl/pom.xml b/java/sca/modules/scdl/pom.xml
deleted file mode 100644
index de13920bb0..0000000000
--- a/java/sca/modules/scdl/pom.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * 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.
--->
-<project>
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-modules</artifactId>
- <version>2.0-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
- <artifactId>tuscany-scdl</artifactId>
- <name>Apache Tuscany SCA SCDL</name>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-implementation-java</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-implementation-bpel</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-binding-jms</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-binding-jsonp</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-binding-rmi</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-binding-ws</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-assembly-xml</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
-
- </dependencies>
-
-</project>
diff --git a/java/sca/modules/scdl/src/main/java/org/apache/tuscany/sca/scdl/Contributions.java b/java/sca/modules/scdl/src/main/java/org/apache/tuscany/sca/scdl/Contributions.java
deleted file mode 100644
index dc35af5da6..0000000000
--- a/java/sca/modules/scdl/src/main/java/org/apache/tuscany/sca/scdl/Contributions.java
+++ /dev/null
@@ -1,160 +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 org.apache.tuscany.sca.scdl;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.assembly.Extension;
-import org.apache.tuscany.sca.contribution.Artifact;
-import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.Export;
-import org.apache.tuscany.sca.contribution.Import;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-
-/**
- * A Contribution impl wrapping multiple other contributions
- * Currently the sole reason for this is so
- */
-public class Contributions implements Contribution {
-
- private List<Contribution> contributions = new ArrayList<Contribution>();
- private String location;
- private String uri;
- private Object model;
- private byte[] contents;
- private boolean unresolved;
- private ModelResolver modelResolver;
- private List<Contribution> dependencies = new ArrayList<Contribution>();
-
- public Contributions(List<Contribution> contributions) {
- this.contributions = contributions;
- }
-
- public String getLocation() {
- return location;
- }
-
- public Object getModel() {
- return model;
- }
-
- public String getURI() {
- return uri;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public void setModel(Object model) {
- this.model = model;
- }
-
- public byte[] getContents() {
- return contents;
- }
-
- public void setContents(byte[] contents) {
- this.contents = contents;
- }
-
- public void setURI(String uri) {
- this.uri = uri;
- }
-
- public boolean isUnresolved() {
- return unresolved;
- }
-
- public void setUnresolved(boolean unresolved) {
- this.unresolved = unresolved;
- }
-
- public List<Contribution> getContributions() {
- return contributions;
- }
-
- public List<Artifact> getArtifacts() {
- return (List<Artifact>)(Object)contributions;
- }
-
- public List<Contribution> getDependencies() {
- return dependencies;
- }
-
- public ClassLoader getClassLoader() {
- //FIXME Remove later
- return null;
- }
-
- public void setClassLoader(ClassLoader classLoader) {
- //FIXME Remove later
- }
-
- public List<Composite> getDeployables() {
- List<Composite> deployables = new ArrayList<Composite>();
- for (Contribution contribution: contributions) {
- deployables.addAll(contribution.getDeployables());
- }
- return deployables;
- }
-
- public List<Export> getExports() {
- List<Export> exports = new ArrayList<Export>();
- for (Contribution contribution: contributions) {
- exports.addAll(contribution.getExports());
- }
- return exports;
- }
-
- public List<Import> getImports() {
- List<Import> imports = new ArrayList<Import>();
- for (Contribution contribution: contributions) {
- imports.addAll(contribution.getImports());
- }
- return imports;
- }
-
- public ModelResolver getModelResolver() {
- return modelResolver;
- }
-
- public void setModelResolver(ModelResolver modelResolver) {
- this.modelResolver = modelResolver;
- }
-
- public List<Extension> getAttributeExtensions() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public List<Object> getExtensions() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public Set<String> getTypes() {
- return Collections.emptySet();
- }
-}
diff --git a/java/sca/modules/scdl/src/main/java/org/apache/tuscany/sca/scdl/SCDLUtils.java b/java/sca/modules/scdl/src/main/java/org/apache/tuscany/sca/scdl/SCDLUtils.java
deleted file mode 100644
index 05908c18f6..0000000000
--- a/java/sca/modules/scdl/src/main/java/org/apache/tuscany/sca/scdl/SCDLUtils.java
+++ /dev/null
@@ -1,465 +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 org.apache.tuscany.sca.scdl;
-
-import static org.apache.tuscany.sca.common.java.io.IOHelper.createURI;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-
-import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.contribution.Artifact;
-import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.contribution.ContributionFactory;
-import org.apache.tuscany.sca.contribution.DefaultImport;
-import org.apache.tuscany.sca.contribution.Export;
-import org.apache.tuscany.sca.contribution.Import;
-import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
-import org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
-import org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.ExtendedURLArtifactProcessor;
-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.contribution.processor.URLArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.contribution.resolver.DefaultImportModelResolver;
-import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
-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.definitions.DefinitionsFactory;
-import org.apache.tuscany.sca.definitions.util.DefinitionsUtil;
-import org.apache.tuscany.sca.definitions.xml.DefinitionsExtensionPoint;
-import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.MonitorFactory;
-import org.apache.tuscany.sca.monitor.Problem;
-
-public class SCDLUtils {
-
- // private static final String SCA11_TUSCANY_NS = "http://tuscany.apache.org/xmlns/sca/1.1";
-
- public static Composite readComposite(InputStream is) throws XMLStreamException, ContributionReadException {
- DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry();
- ProcessorContext context = new ProcessorContext(extensionPoints);
- XMLInputFactory inputFactory = XMLInputFactory.newInstance();
- UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
- MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
- Monitor monitor = monitorFactory.createMonitor();
- StAXArtifactProcessorExtensionPoint staxProcessors =
- new DefaultStAXArtifactProcessorExtensionPoint(extensionPoints);
- StAXArtifactProcessor<Object> staxProcessor =
- new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, null);
- XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
- Composite composite = (Composite)staxProcessor.read(reader, context);
-
- List<Problem> ps = monitor.getProblems();
- if (ps.size() > 0) {
- throw new ContributionReadException(ps.get(0).toString());
- }
-
- return composite;
- }
-
- public static Contribution readContribution(String location) throws Exception {
-
- DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry();
- ProcessorContext context = new ProcessorContext(extensionPoints);
- extensionPoints.start();
-
- UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
- MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
- Monitor monitor = monitorFactory.createMonitor();
- URLArtifactProcessorExtensionPoint docProcessorExtensions =
- extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
- ExtendedURLArtifactProcessor<Contribution> contributionProcessor =
- (ExtendedURLArtifactProcessor<Contribution>)docProcessorExtensions.getProcessor(Contribution.class);
-
- File f = new File(location);
- List<Contribution> contributions = new ArrayList<Contribution>();
- contributions.add(contributionProcessor.read(null, f.toURI(), f.toURI().toURL(), context));
-
- FactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
- // AssemblyFactory assemblyFactory = new RuntimeAssemblyFactory(extensionPoints);
- // modelFactories.addFactory(assemblyFactory);
-
- monitor = monitorFactory.createMonitor();
-
- ContributionFactory contributionFactory = modelFactories.getFactory(ContributionFactory.class);
-
- contributionProcessor =
- (ExtendedURLArtifactProcessor<Contribution>)docProcessorExtensions.getProcessor(Contribution.class);
-
- ModelResolverExtensionPoint modelResolvers =
- extensionPoints.getExtensionPoint(ModelResolverExtensionPoint.class);
-
- DefinitionsFactory definitionsFactory = modelFactories.getFactory(DefinitionsFactory.class);
- Definitions systemDefinitions = definitionsFactory.createDefinitions();
-
- // create a system contribution to hold the definitions. The contribution
- // will be extended later with definitions from application contributions
- Contribution systemContribution = contributionFactory.createContribution();
- systemContribution.setURI("http://tuscany.apache.org/SystemContribution");
- systemContribution.setLocation("http://tuscany.apache.org/SystemContribution");
- ModelResolver modelResolverSys =
- new ExtensibleModelResolver(systemContribution, modelResolvers, modelFactories);
- systemContribution.setModelResolver(modelResolverSys);
- systemContribution.setUnresolved(true);
-
- // create an artifact to represent the system defintions and
- // add it to the contribution
- List<Artifact> systemArtifacts = systemContribution.getArtifacts();
- Artifact definitionsArtifact = contributionFactory.createArtifact();
- definitionsArtifact.setURI("http://tuscany.apache.org/SystemContribution/Definitions");
- definitionsArtifact.setLocation("Derived");
- definitionsArtifact.setModel(systemDefinitions);
- systemArtifacts.add(definitionsArtifact);
-
- // Build an aggregated SCA definitions model. Must be done before we try and
- // resolve any contributions or composites as they may depend on the full
- // definitions.xml picture
-
- monitor.pushContext("Extension points definitions");
- DefinitionsExtensionPoint definitionsExtensionPoint =
- extensionPoints.getExtensionPoint(DefinitionsExtensionPoint.class);
- for (Definitions defs : definitionsExtensionPoint.getDefinitions()) {
- DefinitionsUtil.aggregate(defs, systemDefinitions, monitor);
- }
- monitor.popContext();
-
- // get all definitions.xml artifacts from contributions and aggregate
- // into the system contribution. In turn add a default import into
- // each contribution so that for unresolved items the resolution
- // processing will look in the system contribution
- for (Contribution contribution : contributions) {
- try {
- monitor.pushContext("Contribution: " + contribution.getURI());
- // aggregate definitions
- for (Artifact artifact : contribution.getArtifacts()) {
- Object model = artifact.getModel();
- if (model instanceof Definitions) {
- monitor.pushContext("Definitions: " + artifact.getLocation());
- DefinitionsUtil.aggregate((Definitions)model, systemDefinitions, monitor);
- monitor.popContext();
- }
- }
-
- // create a default import and wire it up to the system contribution
- // model resolver. This is the trick that makes the resolution processing
- // skip over to the system contribution if resolution is unsuccessful
- // in the current contribution
- DefaultImport defaultImport = contributionFactory.createDefaultImport();
- defaultImport.setModelResolver(systemContribution.getModelResolver());
- contribution.getImports().add(defaultImport);
- } finally {
- monitor.popContext();
- }
- }
-
- ExtensibleModelResolver modelResolver =
- new ExtensibleModelResolver(new Contributions(contributions), modelResolvers, modelFactories);
-
- contributionProcessor.resolve(systemContribution, modelResolver, context);
- contributions.add(systemContribution);
-
- // TODO - Now we can calculate applicable policy sets for each composite
-
- // pre-resolve the contributions
- contributionsPreresolve(contributionProcessor, contributions, modelResolver, context);
-
- // Build the contribution dependencies
- Set<Contribution> resolved = new HashSet<Contribution>();
- for (Contribution contribution : contributions) {
- buildDependencies(contribution, contributions, monitor);
-
- // Resolve contributions
- for (Contribution dependency : contribution.getDependencies()) {
- if (!resolved.contains(dependency)) {
- resolved.add(dependency);
- contributionProcessor.resolve(dependency, modelResolver, context);
- }
- }
- }
-
- // // Create a top level composite to host our composite
- // // This is temporary to make the activator happy
- // AssemblyFactory assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
- //// AssemblyFactory assemblyFactory = new RuntimeAssemblyFactory(extensionPoints);
- //// modelFactories.addFactory(assemblyFactory);
- // Composite tempComposite = assemblyFactory.createComposite();
- // tempComposite.setName(new QName(SCA11_TUSCANY_NS, "_tempComposite"));
- // tempComposite.setURI(SCA11_TUSCANY_NS);
- //
- // for (Contribution contribution : contributions) {
- // for (Composite composite : contribution.getDeployables()) {
- // // Include the node composite in the top-level composite
- // tempComposite.getIncludes().add(composite);
- // }
- // }
- //
- //
- // CompositeActivator compositeActivator = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class).getUtility(CompositeActivator.class);
- //
- // // get the top level composite for this node
- // compositeActivator.setDomainComposite(tempComposite);
- //
- // // Activate the composite
- // compositeActivator.activate(compositeActivator.getDomainComposite());
- //
- // // Start the composite
- // compositeActivator.start(compositeActivator.getDomainComposite());
- //
- //
- //// // TODO - EPR - create a binding map to pass down into the builders
- //// // for use during URI calculation.
- //// Map<QName, List<String>> bindingMap = new HashMap<QName, List<String>>();
- //// for (BindingConfiguration config : configuration.getBindings()) {
- //// bindingMap.put(config.getBindingType(), config.getBaseURIs());
- //// }
- //
- // CompositeBuilderExtensionPoint compositeBuilders = extensionPoints.getExtensionPoint(CompositeBuilderExtensionPoint.class);
- // CompositeBuilder compositeBuilder = compositeBuilders.getCompositeBuilder("org.apache.tuscany.sca.assembly.builder.CompositeBuilder");
- // ((CompositeBuilderTmp)compositeBuilder).build(tempComposite, systemDefinitions, new HashMap<QName, List<String>>(), monitor);
- //// analyzeProblems();
- //
- //// endpointReferenceBuilder.buildtimeBuild(tempComposite);
- //// analyzeProblems();
- //
- //// return tempComposite;
- //// Composite xxx = configureNode(extensionPoints, cs, monitor);
- return contributions.get(0);
-
- }
-
- /**
- * Pre-resolve phase for contributions, to set up handling of imports and exports prior to full resolution
- * @param contributionProcessor
- * @param contributions - the contributions to preresolve
- * @param resolver - the ModelResolver to use
- * @throws ContributionResolveException
- */
- private static void contributionsPreresolve(ExtendedURLArtifactProcessor<Contribution> contributionProcessor,
- List<Contribution> contributions,
- ModelResolver resolver,
- ProcessorContext context) throws ContributionResolveException {
-
- for (Contribution contribution : contributions) {
- contributionProcessor.preResolve(contribution, resolver, context);
- } // end for
- } // end method contributionsPreresolve
-
- private static void buildDependencies(Contribution contribution, List<Contribution> contributions, Monitor monitor) {
- contribution.getDependencies().clear();
-
- List<Contribution> dependencies = new ArrayList<Contribution>();
- Set<Contribution> set = new HashSet<Contribution>();
-
- dependencies.add(contribution);
- set.add(contribution);
- addContributionDependencies(contribution, contributions, dependencies, set, monitor);
-
- Collections.reverse(dependencies);
-
- contribution.getDependencies().addAll(dependencies);
- }
-
- /**
- * Analyze a contribution and add its dependencies to the given dependency set.
- */
- private static void addContributionDependencies(Contribution contribution,
- List<Contribution> contributions,
- List<Contribution> dependencies,
- Set<Contribution> set,
- Monitor monitor) {
-
- // Go through the contribution imports
- for (Import import_ : contribution.getImports()) {
- boolean resolved = false;
-
- // Go through all contribution candidates and their exports
- List<Export> matchingExports = new ArrayList<Export>();
- for (Contribution dependency : contributions) {
- if (dependency == contribution) {
- // Do not self import
- continue;
- }
- for (Export export : dependency.getExports()) {
-
- // If an export from a contribution matches the import in hand
- // add that contribution to the dependency set
- if (import_.match(export)) {
- resolved = true;
- matchingExports.add(export);
-
- if (!set.contains(dependency)) {
- set.add(dependency);
- dependencies.add(dependency);
-
- // Now add the dependencies of that contribution
- addContributionDependencies(dependency, contributions, dependencies, set, monitor);
- } // end if
- } // end if
- } // end for
- } // end for
-
- if (resolved) {
- // Initialize the import's model resolver with a delegating model
- // resolver which will delegate to the matching exports
- import_.setModelResolver(new DefaultImportModelResolver(matchingExports));
-
- } else {
- // Record import resolution issue
- if (!(import_ instanceof DefaultImport)) {
- // Add the (empty) matchingExports List and report a warning
- import_.setModelResolver(new DefaultImportModelResolver(matchingExports));
- // warning(monitor, "UnresolvedImport", import_, import_);
- }
- } // end if
- }
- }
-
- private static List<Contribution> loadContributions(ExtensionPointRegistry extensionPoints, String s, ProcessorContext context)
- throws MalformedURLException, ContributionReadException, XMLStreamException, IOException,
- UnsupportedEncodingException, Exception {
- List<Contribution> contributions = new ArrayList<Contribution>();
-
- URI contributionURI = createURI(s);
-
- URI uri = createURI(s);
- if (uri.getScheme() == null) {
- uri = new File(s).toURI();
- }
- URL contributionURL = uri.toURL();
-
- URLArtifactProcessorExtensionPoint docProcessorExtensions =
- extensionPoints.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
- ExtendedURLArtifactProcessor<Contribution> contributionProcessor =
- (ExtendedURLArtifactProcessor<Contribution>)docProcessorExtensions.getProcessor(Contribution.class);
-
- // Load the contribution
- Contribution contribution = contributionProcessor.read(null, contributionURI, contributionURL, context);
- contributions.add(contribution);
-
- boolean attached = false;
- // for (DeploymentComposite dc : contrib.getDeploymentComposites()) {
- // if (dc.getContent() != null) {
- // Reader xml = new StringReader(dc.getContent());
- // attached = attachDeploymentComposite(extensionPoints, contribution, xml, null, attached);
- // } else if (dc.getLocation() != null) {
- // URI dcURI = createURI(dc.getLocation());
- // if (!dcURI.isAbsolute()) {
- // Composite composite = null;
- // // The location is pointing to an artifact within the contribution
- // for (Artifact a : contribution.getArtifacts()) {
- // if (dcURI.toString().equals(a.getURI())) {
- // composite = (Composite)a.getModel();
- // if (!attached) {
- // contribution.getDeployables().clear();
- // attached = true;
- // }
- // contribution.getDeployables().add(composite);
- // break;
- // }
- // }
- // if (composite == null) {
- // // Not found
- // throw new ServiceRuntimeException("Deployment composite " + dcURI
- // + " cannot be found within contribution "
- // + contribution.getLocation());
- // }
- // } else {
- // URL url = dcURI.toURL();
- // InputStream is = openStream(url);
- // Reader xml = new InputStreamReader(is, "UTF-8");
- // attached = attachDeploymentComposite(extensionPoints, contribution, xml, url.toString(), attached);
- // }
- // }
- //// analyzeProblems();
- // }
- return contributions;
- }
-
- private boolean attachDeploymentComposite(ExtensionPointRegistry extensionPoints,
- Contribution contribution,
- Reader xml,
- String location,
- boolean attached,
- ProcessorContext context) throws XMLStreamException,
- ContributionReadException {
-
- XMLInputFactory inputFactory = XMLInputFactory.newInstance();
- XMLStreamReader reader = inputFactory.createXMLStreamReader(xml);
- reader.nextTag();
-
- StAXArtifactProcessorExtensionPoint xmlProcessors =
- extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
- StAXArtifactProcessor<Composite> compositeProcessor = xmlProcessors.getProcessor(Composite.class);
-
- // Read the composite model
- Composite composite = (Composite)compositeProcessor.read(reader, context);
- reader.close();
-
- FactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
- ContributionFactory contributionFactory = modelFactories.getFactory(ContributionFactory.class);
-
- // Create an artifact for the deployment composite
- Artifact artifact = contributionFactory.createArtifact();
- String uri = composite.getName().getLocalPart() + ".composite";
- artifact.setURI(uri);
- // Set the location to avoid NPE
- if (location == null) {
- location = uri;
- }
- artifact.setLocation(location);
- artifact.setModel(composite);
- artifact.setUnresolved(false);
- // Add it to the contribution
- contribution.getArtifacts().add(artifact);
-
- // Replace the deployable composites with the deployment composites
- // Clear the deployable composites if it's the first deployment composite
- if (!attached) {
- contribution.getDeployables().clear();
- attached = true;
- }
- contribution.getDeployables().add(composite);
-
- return attached;
- }
-}