summaryrefslogtreecommitdiffstats
path: root/java/sca-contrib/vtest/assembly/component
diff options
context:
space:
mode:
Diffstat (limited to 'java/sca-contrib/vtest/assembly/component')
-rw-r--r--java/sca-contrib/vtest/assembly/component/pom.xml49
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/AService.java31
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/BService.java29
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/CService.java28
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/AServiceImpl.java49
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/BServiceImpl.java40
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/CServiceImpl.java31
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/main/resources/component.composite41
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/main/resources/nonuniquename.composite33
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/main/resources/serviceelement.composite42
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/main/resources/servicewithbinding.composite33
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/main/resources/servicewithinterface.composite32
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/main/resources/zerocomponents.composite26
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/main/resources/zeroimplelements.composite38
-rw-r--r--java/sca-contrib/vtest/assembly/component/src/test/java/org/apache/tuscany/sca/vtest/assembly/component/ComponentTestCase.java150
15 files changed, 652 insertions, 0 deletions
diff --git a/java/sca-contrib/vtest/assembly/component/pom.xml b/java/sca-contrib/vtest/assembly/component/pom.xml
new file mode 100644
index 0000000000..b2eac429c1
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/pom.xml
@@ -0,0 +1,49 @@
+<?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>vtest-assembly</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>vtest-assembly-component</artifactId>
+
+ <name>Apache Tuscany SCA Assembly Verification Tests - Component</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-embedded</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ </dependencies>
+
+
+</project>
diff --git a/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/AService.java b/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/AService.java
new file mode 100644
index 0000000000..592020c180
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/AService.java
@@ -0,0 +1,31 @@
+/*
+ * 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.vtest.assembly.component;
+
+/**
+ * Simple Remotable Service
+ */
+public interface AService {
+
+ public String getState();
+ public String getBProperty();
+ public String getB2Property();
+
+
+}
diff --git a/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/BService.java b/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/BService.java
new file mode 100644
index 0000000000..0d95c8e4b8
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/BService.java
@@ -0,0 +1,29 @@
+/*
+ * 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.vtest.assembly.component;
+
+/**
+ * Simple Service
+ */
+public interface BService {
+
+ public String getState();
+ public String getSomeProperty();
+
+}
diff --git a/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/CService.java b/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/CService.java
new file mode 100644
index 0000000000..c979c57f31
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/CService.java
@@ -0,0 +1,28 @@
+/*
+ * 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.vtest.assembly.component;
+
+/**
+ *
+ */
+public interface CService {
+
+ public String getState();
+
+}
diff --git a/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/AServiceImpl.java b/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/AServiceImpl.java
new file mode 100644
index 0000000000..ff17a71a3d
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/AServiceImpl.java
@@ -0,0 +1,49 @@
+/*
+ * 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.vtest.assembly.component.impl;
+
+import org.apache.tuscany.sca.vtest.assembly.component.AService;
+import org.apache.tuscany.sca.vtest.assembly.component.BService;
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Service;
+
+@Service(AService.class)
+public class AServiceImpl implements AService {
+
+ @Reference
+ protected BService b;
+
+ @Reference
+ protected BService b2;
+
+ public String getState() {
+ return b.getState();
+ }
+
+ public String getBProperty() {
+ return b.getSomeProperty();
+ }
+
+ public String getB2Property() {
+ return b2.getSomeProperty();
+ }
+
+}
+
diff --git a/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/BServiceImpl.java b/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/BServiceImpl.java
new file mode 100644
index 0000000000..e57ed2f951
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/BServiceImpl.java
@@ -0,0 +1,40 @@
+/*
+ * 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.vtest.assembly.component.impl;
+
+import org.apache.tuscany.sca.vtest.assembly.component.BService;
+import org.oasisopen.sca.annotation.Property;
+import org.oasisopen.sca.annotation.Service;
+
+@Service(BService.class)
+public class BServiceImpl implements BService {
+
+ @Property
+ protected String someProperty;
+
+ public String getState() {
+ return "SomeStateFromB";
+ }
+
+ public String getSomeProperty() {
+ return someProperty;
+ }
+
+}
diff --git a/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/CServiceImpl.java b/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/CServiceImpl.java
new file mode 100644
index 0000000000..b2b420ed6a
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/CServiceImpl.java
@@ -0,0 +1,31 @@
+/*
+ * 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.vtest.assembly.component.impl;
+
+public class CServiceImpl {
+
+ private String state = "Some State";
+
+ public String getState() {
+ return state;
+ }
+
+}
+
diff --git a/java/sca-contrib/vtest/assembly/component/src/main/resources/component.composite b/java/sca-contrib/vtest/assembly/component/src/main/resources/component.composite
new file mode 100644
index 0000000000..bb452feac9
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/main/resources/component.composite
@@ -0,0 +1,41 @@
+<?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.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://assembly-tests"
+ name="Assemby-component--Composite">
+
+ <component name="AComponent">
+ <implementation.java class="org.apache.tuscany.sca.vtest.assembly.component.impl.AServiceImpl"/>
+ <reference name="b" target="BComponent"/>
+ <reference name="b2" target="B2Component"/>
+ </component>
+
+ <component name="BComponent">
+ <implementation.java class="org.apache.tuscany.sca.vtest.assembly.component.impl.BServiceImpl"/>
+ <property name="someProperty">some b component value</property>
+ </component>
+
+ <component name="B2Component">
+ <implementation.java class="org.apache.tuscany.sca.vtest.assembly.component.impl.BServiceImpl"/>
+ <property name="someProperty">some b2 component value</property>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/vtest/assembly/component/src/main/resources/nonuniquename.composite b/java/sca-contrib/vtest/assembly/component/src/main/resources/nonuniquename.composite
new file mode 100644
index 0000000000..3019542091
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/main/resources/nonuniquename.composite
@@ -0,0 +1,33 @@
+<?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.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://assembly-tests"
+ name="Assemby-non-unique-name--Composite">
+
+ <component name="AComponent">
+ <implementation.java class="org.apache.tuscany.sca.vtest.assembly.component.impl.AServiceImpl"/>
+ </component>
+
+ <component name="AComponent">
+ <implementation.java class="org.apache.tuscany.sca.vtest.assembly.component.impl.BServiceImpl"/>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/vtest/assembly/component/src/main/resources/serviceelement.composite b/java/sca-contrib/vtest/assembly/component/src/main/resources/serviceelement.composite
new file mode 100644
index 0000000000..9460f5a2e1
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/main/resources/serviceelement.composite
@@ -0,0 +1,42 @@
+<?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.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://assembly-tests"
+ name="Assemby-component--Composite">
+
+ <component name="AComponent">
+ <implementation.java class="org.apache.tuscany.sca.vtest.assembly.component.impl.AServiceImpl"/>
+ <reference name="b" target="BComponent"/>
+ <reference name="b2" target="B2Component"/>
+ </component>
+
+ <component name="BComponent">
+ <implementation.java class="org.apache.tuscany.sca.vtest.assembly.component.impl.BServiceImpl"/>
+ <property name="someProperty">some b component value</property>
+ <service name="BService"/>
+ </component>
+
+ <component name="B2Component">
+ <implementation.java class="org.apache.tuscany.sca.vtest.assembly.component.impl.BServiceImpl"/>
+ <property name="someProperty">some b2 component value</property>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/vtest/assembly/component/src/main/resources/servicewithbinding.composite b/java/sca-contrib/vtest/assembly/component/src/main/resources/servicewithbinding.composite
new file mode 100644
index 0000000000..085d84f40e
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/main/resources/servicewithbinding.composite
@@ -0,0 +1,33 @@
+<?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.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://assembly-tests"
+ name="Assemby-component-servicewithbinding-Composite">
+
+ <component name="CComponent">
+ <implementation.java class="org.apache.tuscany.sca.vtest.assembly.component.impl.CServiceImpl"/>
+ <service name="CServiceImpl">
+ <interface.java interface="org.apache.tuscany.sca.vtest.assembly.component.CService"/>
+ <binding.sca/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/vtest/assembly/component/src/main/resources/servicewithinterface.composite b/java/sca-contrib/vtest/assembly/component/src/main/resources/servicewithinterface.composite
new file mode 100644
index 0000000000..cc915fbde5
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/main/resources/servicewithinterface.composite
@@ -0,0 +1,32 @@
+<?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.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://assembly-tests"
+ name="Assemby-component-servicewithinterface-Composite">
+
+ <component name="CComponent">
+ <implementation.java class="org.apache.tuscany.sca.vtest.assembly.component.impl.CServiceImpl"/>
+ <service name="CServiceImpl">
+ <interface.java interface="org.apache.tuscany.sca.vtest.assembly.component.CService"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/vtest/assembly/component/src/main/resources/zerocomponents.composite b/java/sca-contrib/vtest/assembly/component/src/main/resources/zerocomponents.composite
new file mode 100644
index 0000000000..6f02d7e941
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/main/resources/zerocomponents.composite
@@ -0,0 +1,26 @@
+<?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.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://assembly-tests"
+ name="Assemby-zero-components-Composite">
+
+
+</composite>
diff --git a/java/sca-contrib/vtest/assembly/component/src/main/resources/zeroimplelements.composite b/java/sca-contrib/vtest/assembly/component/src/main/resources/zeroimplelements.composite
new file mode 100644
index 0000000000..8629f3817a
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/main/resources/zeroimplelements.composite
@@ -0,0 +1,38 @@
+<?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.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://assembly-tests"
+ name="Assemby-component-zeroimplelements-Composite">
+
+ <component name="AComponent">
+ </component>
+
+ <component name="BComponent">
+ <implementation.java class="org.apache.tuscany.sca.vtest.assembly.component.impl.BServiceImpl"/>
+ <property name="someProperty">some b component value</property>
+ </component>
+
+ <component name="B2Component">
+ <implementation.java class="org.apache.tuscany.sca.vtest.assembly.component.impl.BServiceImpl"/>
+ <property name="someProperty">some b2 component value</property>
+ </component>
+
+</composite>
diff --git a/java/sca-contrib/vtest/assembly/component/src/test/java/org/apache/tuscany/sca/vtest/assembly/component/ComponentTestCase.java b/java/sca-contrib/vtest/assembly/component/src/test/java/org/apache/tuscany/sca/vtest/assembly/component/ComponentTestCase.java
new file mode 100644
index 0000000000..0938708b91
--- /dev/null
+++ b/java/sca-contrib/vtest/assembly/component/src/test/java/org/apache/tuscany/sca/vtest/assembly/component/ComponentTestCase.java
@@ -0,0 +1,150 @@
+/*
+ * 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.vtest.assembly.component;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.vtest.utilities.ServiceFinder;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.oasisopen.sca.ServiceRuntimeException;
+
+/**
+ *
+ */
+public class ComponentTestCase {
+
+ private void initDomain(String compositePath) {
+ System.out.println("Setting up");
+ ServiceFinder.init(compositePath);
+ }
+
+ private void cleanupDomain() {
+ System.out.println("Cleaning up");
+ ServiceFinder.cleanup();
+ }
+
+ /**
+ * Lines 92-96:
+ * <p>
+ * Components are configured instances of implementations. Components
+ * provide and consume services. More than one component can use and
+ * configure the same implementation, where each component configures the
+ * implementation differently.
+ */
+ @Test
+ public void components1() throws Exception {
+ initDomain("component.composite");
+ AService service = ServiceFinder.getService(AService.class, "AComponent/AService");
+ Assert.assertEquals("some b component value", service.getBProperty());
+ Assert.assertEquals("some b2 component value", service.getB2Property());
+ cleanupDomain();
+ }
+
+ /**
+ * Lines 96-97:
+ * <p>
+ * There can be zero or more component elements within a composite.
+ */
+ @Test
+ public void components2() throws Exception {
+ initDomain("zerocomponents.composite");
+ cleanupDomain();
+ }
+
+ /**
+ * Lines 142-143:
+ * <p>
+ * name (required) – the name of the component. The name must be unique
+ * across all the components in the composite.
+ */
+ @Test(expected = ServiceRuntimeException.class)
+ //@Ignore("TUSCANY-2455")
+ public void components3() throws Exception {
+ initDomain("nonuniquename.composite");
+ cleanupDomain();
+ }
+
+ /**
+ * Lines 154-158:
+ * <p>
+ * A component element has zero or one implementation element as its child,
+ * which points to the implementation used by the component. A component
+ * with no implementation element is not runnable, but components of this
+ * kind may be useful during a "top-down" development process as a means of
+ * defining the characteristics required of the implementation before the
+ * implementation is written.
+ */
+ @Test
+ public void components4() throws Exception {
+ initDomain("zeroimplelements.composite");
+ cleanupDomain();
+ }
+
+ /**
+ * Lines 159-160:
+ * <p>
+ * The component element can have zero or more service elements as children
+ * which are used to configure the services of the component.
+ */
+ @Test
+ public void components5() throws Exception {
+ initDomain("serviceelement.composite");
+ cleanupDomain();
+ }
+
+ /**
+ * Lines 174-179:
+ * <p>
+ * A service has zero or one interface, which describes the operations
+ * provided by the service. The interface is described by an interface
+ * element which is a child element of the service element. If no interface
+ * is specified, then the interface specified for the service by the
+ * implementation is in effect. If an interface is specified it must provide
+ * a compatible subset of the interface provided by the implementation, i.e.
+ * provide a subset of the operations defined by the implementation for the
+ * service.
+ */
+ @Test
+ public void components6() throws Exception {
+ initDomain("servicewithinterface.composite");
+ CService service = ServiceFinder.getService(CService.class, "CComponent");
+ Assert.assertEquals("Some State", service.getState());
+ cleanupDomain();
+ }
+
+ /**
+ * Lines 180-182:
+ * <p>
+ * A service element has one or more binding elements as children. If no
+ * bindings are specified, then the bindings specified for the service by
+ * the implementation are in effect. If bindings are specified, then those
+ * bindings override the bindings specified by the implementation.
+ */
+ @Test
+ public void components7() throws Exception {
+ initDomain("servicewithbinding.composite");
+ CService service = ServiceFinder.getService(CService.class, "CComponent");
+ Assert.assertEquals("Some State", service.getState());
+ cleanupDomain();
+ }
+
+
+}