diff options
Diffstat (limited to '')
88 files changed, 4312 insertions, 0 deletions
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/getting-started.odt b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/getting-started.odt Binary files differnew file mode 100644 index 0000000000..078cce7478 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/getting-started.odt diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/getting-started.pdf b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/getting-started.pdf Binary files differnew file mode 100644 index 0000000000..23f272d0c2 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/getting-started.pdf diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/README b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/README new file mode 100644 index 0000000000..fc306caa34 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/README @@ -0,0 +1,43 @@ +Tuscany - Getting Started - Helloworld Sample
+---------------------------------------------
+
+This sample demonstrates a simple helloworld style SCA application and how to run that with Tuscany.
+
+See the README in the top-level samples folder for general information on the Tuscany samples.
+
+This project creates an SCA contribution with a deployable composite named helloworld.composite.
+The composite defines an SCA component, HelloworldComponent, which provides a Helloworld service,
+the component is implemented by a Java class.
+
+You can use the contribution by starting the composite in the Tuscany Shell. To do that run the
+following command in the helloworld folder:
+
+ mvn tuscany:run
+
+Alternatively, the Tuscany Shell can be started with the scripts in the Tuscany binary distribution
+bin folder. To do that run the following command at the root of a Tuscany binary distribution:
+
+ bin\tuscany.bat samples\getting-started\helloworld
+
+Once the Shell has been started with one of those methods you can use Shell commands to explore
+the SCA domain, for example, use the "installed" command to get the status of installed contributions,
+"services" to see the available component services, and you may test calling the helloworld service by
+using the "invoke" command:
+
+ invoke HelloworldComponent sayHello yourName
+
+---
+
+This sample was created by the Tuscany contribution-jar Maven archetype. You can use that archetype to
+create your own SCA contribution projects by running the following Maven command:
+
+ mvn archetype:generate -DarchetypeCatalog=http://tuscany.apache.org
+
+then at the prompt select 1 to choose the contribution-jar archetype and then answer the questions.
+This project used the following answers:
+
+ Define value for property 'groupId': : org.apache.tuscany.sca.samples
+ Define value for property 'artifactId': : helloworld-contribution
+ Define value for property 'version': 1.0-SNAPSHOT: 2.0-SNAPSHOT
+ Define value for property 'package': org.apache.tuscany.sca.samples: sample
+
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/build.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/build.xml new file mode 100644 index 0000000000..d4f0d44c32 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/build.xml @@ -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. +--> + +<!-- ====================================================================== --> +<!-- Ant build file (http://ant.apache.org/) for Ant 1.6.2 or above. --> +<!-- ====================================================================== --> + +<project name="helloworld" default="package" basedir="."> + + <!-- ====================================================================== --> + <!-- Import maven-build.xml into the current project --> + <!-- ====================================================================== --> + + <import file="maven-build.xml"/> + + <!-- ====================================================================== --> + <!-- Help target --> + <!-- ====================================================================== --> + + <target name="help"> + <echo message="Please run: $ant -projecthelp"/> + </target> + +</project> diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/maven-build.properties b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/maven-build.properties new file mode 100644 index 0000000000..ed8ceeb73b --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/maven-build.properties @@ -0,0 +1,28 @@ +#Generated by Maven Ant Plugin - DO NOT EDIT THIS FILE! +#Sun Apr 10 08:39:39 BST 2011 +maven.settings.offline=true +maven.build.finalName=helloworld-ant-2.0-SNAPSHOT +maven.build.resourceDir.1=. +maven.build.resourceDir.0=src/main/resources +maven.build.testOutputDir=${maven.build.dir}/test-classes +maven.build.testResourceDir.0=src/test/resources +maven.reporting.outputDirectory=${maven.build.dir}/site +project.build.sourceEncoding=UTF-8 +distMgmtSnapshotsUrl=https\://repository.apache.org/content/repositories/snapshots +maven.build.srcDir.0=src/main/java +project.build.directory=${maven.build.dir} +dojo.version=1.5.0 +maven.test.reports=${maven.build.dir}/test-reports +maven.build.dir=target +tuscany.version=2.0-SNAPSHOT +project.build.outputDirectory=${maven.build.outputDir} +project.reporting.outputEncoding=UTF-8 +organization.logo=http\://www.apache.org/images/asf_logo_wide.gif +maven.build.testDir.0=src/test/java +maven.settings.interactiveMode=true +tools.jar=C\:\\Java\\jdk1.6.0_21\\jre/../lib/tools.jar +notice.dir=. +sourceReleaseAssemblyDescriptor=source-release +maven.repo.local=${user.home}/.m2/repository +distMgmtSnapshotsName=Apache Development Snapshot Repository +maven.build.outputDir=${maven.build.dir}/classes diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/maven-build.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/maven-build.xml new file mode 100644 index 0000000000..095bd9398a --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/maven-build.xml @@ -0,0 +1,366 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- ====================================================================== --> +<!-- Ant build file (http://ant.apache.org/) for Ant 1.6.2 or above. --> +<!-- ====================================================================== --> + +<!-- ====================================================================== --> +<!-- ===================== - DO NOT EDIT THIS FILE! - ===================== --> +<!-- ====================================================================== --> +<!-- --> +<!-- Any modifications will be overwritten. --> +<!-- --> +<!-- Generated by Maven Ant Plugin on 4/10/11 8:39 AM --> +<!-- See: http://maven.apache.org/plugins/maven-ant-plugin/ --> +<!-- --> +<!-- ====================================================================== --> + +<project name="helloworld-ant-from-maven" default="package" basedir="."> + + <!-- ====================================================================== --> + <!-- Build environment properties --> + <!-- ====================================================================== --> + + <property file="${user.home}/.m2/maven.properties"/> + <property file="maven-build.properties"/> + + <property name="maven.build.finalName" value="helloworld-ant-2.0-Beta4"/> + <property name="maven.build.dir" value="target"/> + <property name="maven.build.outputDir" value="${maven.build.dir}/classes"/> + <property name="maven.build.srcDir.0" value="src/main/java"/> + <property name="maven.build.resourceDir.0" value="src/main/resources"/> + <property name="maven.build.resourceDir.1" value="."/> + <property name="maven.build.testOutputDir" value="${maven.build.dir}/test-classes"/> + <property name="maven.build.testDir.0" value="src/test/java"/> + <property name="maven.build.testResourceDir.0" value="src/test/resources"/> + <property name="maven.test.reports" value="${maven.build.dir}/test-reports"/> + <property name="maven.reporting.outputDirectory" value="${maven.build.dir}/site"/> + + <property name="maven.repo.local" value="${user.home}/.m2/repository"/> + <property name="maven.settings.offline" value="true"/> + <property name="maven.settings.interactiveMode" value="true"/> + + <!-- ====================================================================== --> + <!-- Defining classpaths --> + <!-- ====================================================================== --> + + <path id="build.classpath"> + <pathelement location="${maven.repo.local}/org/apache/tuscany/sca/tuscany-sca-api/2.0-Beta4/tuscany-sca-api-2.0-Beta4.jar"/> + </path> + <path id="build.test.classpath"> + <pathelement location="${maven.repo.local}/org/apache/tuscany/sca/tuscany-sca-api/2.0-Beta4/tuscany-sca-api-2.0-Beta4.jar"/> + <pathelement location="${maven.repo.local}/junit/junit/4.8.1/junit-4.8.1.jar"/> + <pathelement location="${maven.repo.local}/org/apache/tuscany/sca/tuscany-base-runtime/2.0-Beta4/tuscany-base-runtime-2.0-Beta4.jar"/> + <pathelement location="${maven.repo.local}/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar"/> + <pathelement location="${maven.repo.local}/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar"/> + <pathelement location="${maven.repo.local}/cglib/cglib/2.2/cglib-2.2.jar"/> + <pathelement location="${maven.repo.local}/asm/asm/3.1/asm-3.1.jar"/> + </path> + + <!-- ====================================================================== --> + <!-- Cleaning up target --> + <!-- ====================================================================== --> + + <target name="clean" description="Clean the output directory"> + <delete dir="${maven.build.dir}"/> + </target> + + <!-- ====================================================================== --> + <!-- Compilation target --> + <!-- ====================================================================== --> + + <target name="compile" depends="get-deps" description="Compile the code"> + <mkdir dir="${maven.build.outputDir}"/> + <javac destdir="${maven.build.outputDir}" + encoding="UTF-8" + nowarn="false" + debug="true" + optimize="false" + deprecation="true" + target="1.6" + verbose="false" + fork="true" + memoryMaximumSize="512m" + memoryInitialSize="1024m" + source="1.6"> + <src> + <pathelement location="${maven.build.srcDir.0}"/> + </src> + <classpath refid="build.classpath"/> + </javac> + <copy todir="${maven.build.outputDir}"> + <fileset dir="${maven.build.resourceDir.0}"/> + </copy> + <copy todir="${maven.build.outputDir}"> + <fileset dir="${maven.build.resourceDir.1}"> + <include name="LICENSE"/> + <include name="NOTICE"/> + <include name="README"/> + <include name="META-INF/**/*"/> + <include name="OSGI-INF/**/*"/> + </fileset> + </copy> + </target> + + <!-- ====================================================================== --> + <!-- Test-compilation target --> + <!-- ====================================================================== --> + + <target name="compile-tests" + depends="compile" + description="Compile the test code" + unless="maven.test.skip"> + <mkdir dir="${maven.build.testOutputDir}"/> + <javac destdir="${maven.build.testOutputDir}" + encoding="UTF-8" + nowarn="false" + debug="true" + optimize="false" + deprecation="true" + target="1.6" + verbose="false" + fork="true" + memoryMaximumSize="512m" + memoryInitialSize="1024m" + source="1.6"> + <src> + <pathelement location="${maven.build.testDir.0}"/> + </src> + <classpath> + <path refid="build.test.classpath"/> + <pathelement location="${maven.build.outputDir}"/> + </classpath> + </javac> + </target> + + <!-- ====================================================================== --> + <!-- Run all tests --> + <!-- ====================================================================== --> + + <target name="test" + depends="compile-tests, junit-missing" + unless="junit.skipped" + description="Run the test cases"> + <mkdir dir="${maven.test.reports}"/> + <junit printSummary="yes" haltonerror="true" haltonfailure="true" fork="true" dir="."> + <sysproperty key="basedir" value="."/> + <formatter type="xml"/> + <formatter type="plain" usefile="false"/> + <classpath> + <path refid="build.test.classpath"/> + <pathelement location="${maven.build.outputDir}"/> + <pathelement location="${maven.build.testOutputDir}"/> + </classpath> + <batchtest todir="${maven.test.reports}" unless="test"> + <fileset dir="${maven.build.testDir.0}"> + <include name="**/*TestCase.java"/> + <exclude name="**/*Abstract*Test.java"/> + </fileset> + </batchtest> + <batchtest todir="${maven.test.reports}" if="test"> + <fileset dir="${maven.build.testDir.0}"> + <include name="**/${test}.java"/> + <exclude name="**/*Abstract*Test.java"/> + </fileset> + </batchtest> + </junit> + </target> + + <target name="test-junit-present"> + <available classname="junit.framework.Test" property="junit.present"/> + </target> + + <target name="test-junit-status" + depends="test-junit-present"> + <condition property="junit.missing"> + <and> + <isfalse value="${junit.present}"/> + <isfalse value="${maven.test.skip}"/> + </and> + </condition> + <condition property="junit.skipped"> + <or> + <isfalse value="${junit.present}"/> + <istrue value="${maven.test.skip}"/> + </or> + </condition> + </target> + + <target name="junit-missing" + depends="test-junit-status" + if="junit.missing"> + <echo>=================================== WARNING ===================================</echo> + <echo> JUnit is not present in your $ANT_HOME/lib directory. Tests not executed.</echo> + <echo>===============================================================================</echo> + </target> + + <!-- ====================================================================== --> + <!-- Javadoc target --> + <!-- ====================================================================== --> + + <target name="javadoc" description="Generates the Javadoc of the application"> + <javadoc sourcepath="${maven.build.srcDir.0}" + packagenames="*" + destdir="${maven.reporting.outputDirectory}/apidocs" + access="protected" + old="false" + verbose="false" + version="true" + use="true" + author="true" + splitindex="false" + nodeprecated="false" + nodeprecatedlist="false" + notree="false" + noindex="false" + nohelp="false" + nonavbar="false" + serialwarn="false" + charset="ISO-8859-1" + linksource="false" + breakiterator="false" + maxmemory="1024m"> + <group title="Extension Developer's SPIs (Work in Progress)"/> + <tag name="tuscany.spi.extension.inheritfrom" + scope="t" + description="Provides part of the Tuscany SPI for Extension Developers by specialization of this class/interface"/> + <tag name="tuscany.spi.extension.asclient" + scope="t" + description="Provides part of the Tuscany SPI for Extension Developers by calling methods on this interface/class."/> + <tag name="tuscany.spi.extension" + scope="a" + description="Elements of the Tuscany SPI for Extension developers are provided."/> + </javadoc> + </target> + + <!-- ====================================================================== --> + <!-- Package target --> + <!-- ====================================================================== --> + + <target name="package" depends="compile,test" description="Package the application"> + <jar jarfile="${maven.build.dir}/${maven.build.finalName}.jar" + compress="true" + index="false" + basedir="${maven.build.outputDir}" + excludes="**/package.html"> + <manifest> + <attribute name="Main-Class"/> + </manifest> + </jar> + </target> + + <!-- ====================================================================== --> + <!-- A dummy target for the package named after the type it creates --> + <!-- ====================================================================== --> + + <target name="jar" depends="package" description="Builds the jar for the application"/> + + <!-- ====================================================================== --> + <!-- Download dependencies target --> + <!-- ====================================================================== --> + + <target name="test-offline"> + <condition property="maven.mode.offline"> + <equals arg1="${maven.settings.offline}" arg2="true"/> + </condition> + </target> + + <target name="get-deps" + depends="test-offline" + description="Download all dependencies" + unless="maven.mode.offline"> + <mkdir dir="${maven.repo.local}"/> + <mkdir dir="${maven.repo.local}/org/apache/tuscany/sca/tuscany-sca-api/2.0-Beta4"/> + <get src="http://svn.apache.org/repos/asf/tuscany/maven/org/apache/tuscany/sca/tuscany-sca-api/2.0-Beta4/tuscany-sca-api-2.0-Beta4.jar" + dest="${maven.repo.local}/org/apache/tuscany/sca/tuscany-sca-api/2.0-Beta4/tuscany-sca-api-2.0-Beta4.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repository.apache.org/snapshots/org/apache/tuscany/sca/tuscany-sca-api/2.0-Beta4/tuscany-sca-api-2.0-Beta4.jar" + dest="${maven.repo.local}/org/apache/tuscany/sca/tuscany-sca-api/2.0-Beta4/tuscany-sca-api-2.0-Beta4.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repo1.maven.org/maven2/org/apache/tuscany/sca/tuscany-sca-api/2.0-Beta4/tuscany-sca-api-2.0-Beta4.jar" + dest="${maven.repo.local}/org/apache/tuscany/sca/tuscany-sca-api/2.0-Beta4/tuscany-sca-api-2.0-Beta4.jar" + usetimestamp="false" + ignoreerrors="true"/> + <mkdir dir="${maven.repo.local}/junit/junit/4.8.1"/> + <get src="http://svn.apache.org/repos/asf/tuscany/maven/junit/junit/4.8.1/junit-4.8.1.jar" + dest="${maven.repo.local}/junit/junit/4.8.1/junit-4.8.1.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repository.apache.org/snapshots/junit/junit/4.8.1/junit-4.8.1.jar" + dest="${maven.repo.local}/junit/junit/4.8.1/junit-4.8.1.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repo1.maven.org/maven2/junit/junit/4.8.1/junit-4.8.1.jar" + dest="${maven.repo.local}/junit/junit/4.8.1/junit-4.8.1.jar" + usetimestamp="false" + ignoreerrors="true"/> + <mkdir dir="${maven.repo.local}/org/apache/tuscany/sca/tuscany-base-runtime/2.0-Beta4"/> + <get src="http://svn.apache.org/repos/asf/tuscany/maven/org/apache/tuscany/sca/tuscany-base-runtime/2.0-Beta4/tuscany-base-runtime-2.0-Beta4.jar" + dest="${maven.repo.local}/org/apache/tuscany/sca/tuscany-base-runtime/2.0-Beta4/tuscany-base-runtime-2.0-Beta4.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repository.apache.org/snapshots/org/apache/tuscany/sca/tuscany-base-runtime/2.0-Beta4/tuscany-base-runtime-2.0-Beta4.jar" + dest="${maven.repo.local}/org/apache/tuscany/sca/tuscany-base-runtime/2.0-Beta4/tuscany-base-runtime-2.0-Beta4.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repo1.maven.org/maven2/org/apache/tuscany/sca/tuscany-base-runtime/2.0-Beta4/tuscany-base-runtime-2.0-Beta4.jar" + dest="${maven.repo.local}/org/apache/tuscany/sca/tuscany-base-runtime/2.0-Beta4/tuscany-base-runtime-2.0-Beta4.jar" + usetimestamp="false" + ignoreerrors="true"/> + <mkdir dir="${maven.repo.local}/org/apache/ws/commons/schema/XmlSchema/1.4.3"/> + <get src="http://svn.apache.org/repos/asf/tuscany/maven/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar" + dest="${maven.repo.local}/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repository.apache.org/snapshots/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar" + dest="${maven.repo.local}/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repo1.maven.org/maven2/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar" + dest="${maven.repo.local}/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar" + usetimestamp="false" + ignoreerrors="true"/> + <mkdir dir="${maven.repo.local}/wsdl4j/wsdl4j/1.6.2"/> + <get src="http://svn.apache.org/repos/asf/tuscany/maven/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar" + dest="${maven.repo.local}/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repository.apache.org/snapshots/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar" + dest="${maven.repo.local}/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repo1.maven.org/maven2/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar" + dest="${maven.repo.local}/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar" + usetimestamp="false" + ignoreerrors="true"/> + <mkdir dir="${maven.repo.local}/cglib/cglib/2.2"/> + <get src="http://svn.apache.org/repos/asf/tuscany/maven/cglib/cglib/2.2/cglib-2.2.jar" + dest="${maven.repo.local}/cglib/cglib/2.2/cglib-2.2.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repository.apache.org/snapshots/cglib/cglib/2.2/cglib-2.2.jar" + dest="${maven.repo.local}/cglib/cglib/2.2/cglib-2.2.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repo1.maven.org/maven2/cglib/cglib/2.2/cglib-2.2.jar" + dest="${maven.repo.local}/cglib/cglib/2.2/cglib-2.2.jar" + usetimestamp="false" + ignoreerrors="true"/> + <mkdir dir="${maven.repo.local}/asm/asm/3.1"/> + <get src="http://svn.apache.org/repos/asf/tuscany/maven/asm/asm/3.1/asm-3.1.jar" + dest="${maven.repo.local}/asm/asm/3.1/asm-3.1.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repository.apache.org/snapshots/asm/asm/3.1/asm-3.1.jar" + dest="${maven.repo.local}/asm/asm/3.1/asm-3.1.jar" + usetimestamp="false" + ignoreerrors="true"/> + <get src="http://repo1.maven.org/maven2/asm/asm/3.1/asm-3.1.jar" + dest="${maven.repo.local}/asm/asm/3.1/asm-3.1.jar" + usetimestamp="false" + ignoreerrors="true"/> + </target> + +</project> diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/pom.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/pom.xml new file mode 100644 index 0000000000..39c791147b --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/pom.xml @@ -0,0 +1,93 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.tuscany.sca.samples</groupId>
+ <artifactId>tuscany-samples</artifactId>
+ <version>2.0-Beta4</version>
+ <relativePath/>
+ </parent>
+
+ <artifactId>helloworld-ant</artifactId>
+ <version>2.0-Beta4</version>
+
+ <name>Apache Tuscany SCA Samples Helloworld Using Ant build</name>
+
+ <properties>
+ <tuscany.version>${project.version}</tuscany.version>
+ </properties>
+
+ <!-- ASF repositories so sample can be built from SVN without building trunk-->
+ <repositories><repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </repository></repositories>
+ <pluginRepositories><pluginRepository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </pluginRepository></pluginRepositories>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-base-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+
+ <plugins>
+
+ <!-- to support running the composite with mvn tuscany:run -->
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-plugin</artifactId>
+ <version>${tuscany.version}</version>
+ </plugin>
+ </plugins>
+
+ </build>
+
+</project>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/main/java/sample/Helloworld.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/main/java/sample/Helloworld.java new file mode 100644 index 0000000000..f4e8c50448 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/main/java/sample/Helloworld.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 sample;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Helloworld {
+
+ String sayHello(String name);
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/main/java/sample/HelloworldImpl.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/main/java/sample/HelloworldImpl.java new file mode 100644 index 0000000000..089b1a4290 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/main/java/sample/HelloworldImpl.java @@ -0,0 +1,27 @@ +/*
+ * 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 sample;
+
+public class HelloworldImpl implements Helloworld {
+
+ public String sayHello(String name) {
+ return "Hello " + name;
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..95c32fb5bf --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,25 @@ +<?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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://sample">
+
+ <deployable composite="sample:helloworld-contribution" />
+
+</contribution>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/main/resources/helloworld.composite b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/main/resources/helloworld.composite new file mode 100644 index 0000000000..e0206cd6e8 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/main/resources/helloworld.composite @@ -0,0 +1,29 @@ +<?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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://sample"
+ name="helloworld-contribution">
+
+ <component name="HelloworldComponent">
+ <implementation.java class="sample.HelloworldImpl"/>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/test/java/sample/HelloworldTestCase.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/test/java/sample/HelloworldTestCase.java new file mode 100644 index 0000000000..be27aa68ef --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/test/java/sample/HelloworldTestCase.java @@ -0,0 +1,48 @@ +/*
+ * 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 sample;
+
+import org.junit.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchServiceException;
+
+public class HelloworldTestCase {
+
+ @Test
+ public void testSayHello() throws NoSuchServiceException {
+
+ // Run the SCA composite in a Tuscany runtime
+ Node node = TuscanyRuntime.runComposite("helloworld.composite", "target/classes");
+ try {
+
+ // Get the Helloworld service proxy
+ Helloworld helloworld = node.getService(Helloworld.class, "HelloworldComponent");
+
+ // test that it works as expected
+ Assert.assertEquals("Hello Amelia", helloworld.sayHello("Amelia"));
+
+ } finally {
+ // Stop the Tuscany runtime Node
+ node.stop();
+ }
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/test/java/sample/Main.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/test/java/sample/Main.java new file mode 100644 index 0000000000..fe9fedbd45 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-ant/src/test/java/sample/Main.java @@ -0,0 +1,44 @@ +/* + * 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 sample; + +import org.apache.tuscany.sca.Node; +import org.apache.tuscany.sca.TuscanyRuntime; +import org.oasisopen.sca.NoSuchServiceException; + +public class Main { + + public static void main(String[] args) throws NoSuchServiceException { + + // Run the SCA composite in a Tuscany runtime + Node node = TuscanyRuntime.runComposite("helloworld.composite", "target/classes"); + try { + + // Get the Helloworld service proxy + Helloworld helloworld = node.getService(Helloworld.class, "HelloworldComponent"); + + // Call the sayHello method + System.out.println(helloworld.sayHello(args.length>0 ? args[0]: "World")); + + } finally { + // Stop the Tuscany runtime Node + node.stop(); + } + } +} diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/README b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/README new file mode 100644 index 0000000000..17676cf5dd --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/README @@ -0,0 +1,18 @@ +Tuscany - Getting Started - Helloworld Spring Sample
+----------------------------------------------------
+
+This sample is an alternative version of the helloworld sample which uses the Spring Framework instead of an SCA Java component.
+
+The changes to the helloworld sample are:
+- update the pom.xml with the additional Spring dependencies
+- add a Spring context xml file
+- update the composite to use <implementation.spring>
+
+As with all the getting-started samples you can run this sample with:
+
+ mvn tuscany:run
+
+And then as with the original helloworld sample you may test the service by using the Shell "invoke" command:
+
+ invoke HelloworldComponent sayHello yourName
+
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/pom.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/pom.xml new file mode 100644 index 0000000000..3fd40f4112 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/pom.xml @@ -0,0 +1,136 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.tuscany.sca.samples</groupId>
+ <artifactId>tuscany-samples</artifactId>
+ <version>2.0-Beta4</version>
+ <relativePath />
+ </parent>
+
+ <!-- packaging>zip</packaging -->
+ <artifactId>helloworld-bpel</artifactId>
+ <version>2.0-Beta4</version>
+
+ <name>Apache Tuscany SCA Samples Helloworld BPEL</name>
+
+ <properties>
+ <tuscany.version>${project.version}</tuscany.version>
+ </properties>
+
+ <!-- ASF repositories so sample can be built from SVN without building trunk-->
+ <repositories><repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </repository></repositories>
+ <pluginRepositories><pluginRepository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </pluginRepository></pluginRepositories>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-base-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-bpel-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+
+ <plugins>
+
+ <!-- to support zip packaging -->
+ <plugin>
+ <groupId>org.apache.tuscany.maven.plugins</groupId>
+ <artifactId>maven-zip-plugin</artifactId>
+ <version>alpha2</version>
+ <extensions>true</extensions>
+ </plugin>
+
+ <!-- to support running the composite with mvn tuscany:run -->
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-plugin</artifactId>
+ <version>${tuscany.version}</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-bpel-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack</id>
+ <phase>test-compile</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.apache.ode</groupId>
+ <artifactId>ode-dao-jpa-ojpa-derby</artifactId>
+ <version>1.1</version>
+ <type>zip</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${project.build.directory}/test-classes/</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+
+ </build>
+
+</project>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..95c32fb5bf --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,25 @@ +<?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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://sample">
+
+ <deployable composite="sample:helloworld-contribution" />
+
+</contribution>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/main/resources/helloworld.bpel b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/main/resources/helloworld.bpel new file mode 100644 index 0000000000..ab31ee1d0b --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/main/resources/helloworld.bpel @@ -0,0 +1,80 @@ +<!--
+ ~ 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.
+ -->
+<process name="HelloWorld"
+ targetNamespace="http://tuscany.apache.org/implementation/bpel/example/helloworld"
+ xmlns="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:tns="http://tuscany.apache.org/implementation/bpel/example/helloworld"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:test="http://testing/"
+ queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
+
+ <import location="helloworld.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"
+ namespace="http://testing/"/>
+
+ <partnerLinks>
+ <partnerLink name="helloPartnerLink" partnerLinkType="test:HelloPartnerLinkType" myRole="me" />
+ </partnerLinks>
+
+ <variables>
+ <variable name="helloMessage" messageType="test:HelloMessage"/>
+ <variable name="helloMessageResponse" messageType="test:HelloMessageResponse"/>
+ <variable name="tmpVar" type="xsd:string"/>
+ </variables>
+
+ <sequence>
+ <receive
+ name="start"
+ partnerLink="helloPartnerLink"
+ portType="test:HelloPortType"
+ operation="sayHello"
+ variable="helloMessage"
+ createInstance="yes"/>
+
+ <assign name="assign1">
+ <copy>
+ <!-- from>concat($helloMessage.TestPart/test:message/text(), ' World')</from -->
+ <from>concat($helloMessage.TestPart/test:arg0/text(), ' World')</from>
+ <!-- from>concat('Hello ', 'world')</from -->
+ <to variable="tmpVar"/>
+ </copy>
+ <!-- Initialize the response -->
+ <copy>
+ <from>
+ <literal>
+ <test:helloResponse>
+ <test:messageResponse>Dummy</test:messageResponse>
+ </test:helloResponse>
+ </literal>
+ </from>
+ <to variable="helloMessageResponse" part="TestResponse"/>
+ </copy>
+ <copy>
+ <from variable="tmpVar"/>
+ <to>$helloMessageResponse.TestResponse/test:messageResponse</to>
+ </copy>
+ </assign>
+ <reply name="end"
+ partnerLink="helloPartnerLink"
+ portType="test:HelloPortType"
+ operation="sayHello"
+ variable="helloMessageResponse"/>
+ </sequence>
+</process>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/main/resources/helloworld.composite b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/main/resources/helloworld.composite new file mode 100644 index 0000000000..2b032b696b --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/main/resources/helloworld.composite @@ -0,0 +1,30 @@ +<?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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://sample"
+xmlns:hns="http://tuscany.apache.org/implementation/bpel/example/helloworld"
+ name="helloworld-contribution">
+
+ <component name="HelloworldComponent">
+ <implementation.bpel process="hns:HelloWorld"/>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/main/resources/helloworld.wsdl b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/main/resources/helloworld.wsdl new file mode 100644 index 0000000000..a866d29f2d --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/main/resources/helloworld.wsdl @@ -0,0 +1,94 @@ +<?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. + --> + +<wsdl:definitions name="helloworld" + targetNamespace="http://testing/" + xmlns="http://schemas.xmlsoap.org/wsdl/" + xmlns:tns="http://testing/" + xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" + xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" + xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/" + xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/"> + + <wsdl:types> + <schema elementFormDefault="qualified" + targetNamespace="http://testing/" + xmlns="http://www.w3.org/2001/XMLSchema"> + + <element name="hello"> + <complexType> + <sequence> + <element name="message" type="xsd:string"/> + </sequence> + </complexType> + </element> + + <element name="helloResponse"> + <complexType> + <sequence> + <element name="messageResponse" type="xsd:string"/> + </sequence> + </complexType> + </element> + </schema> + </wsdl:types> + + <wsdl:message name="HelloMessage"> + <wsdl:part element="tns:hello" name="TestPart"/> + </wsdl:message> + + <wsdl:message name="HelloMessageResponse"> + <wsdl:part element="tns:helloResponse" name="TestResponse"/> + </wsdl:message> + + <wsdl:portType name="HelloPortType"> + <wsdl:operation name="sayHello"> + <wsdl:input message="tns:HelloMessage" name="TestIn"/> + <wsdl:output message="tns:HelloMessageResponse" name="TestOut"/> + </wsdl:operation> + </wsdl:portType> + + + <wsdl:binding name="HelloSoapBinding" type="tns:HelloPortType"> + <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> + <wsdl:operation name="sayHello"> + <wsdlsoap:operation soapAction=""/> + <wsdl:input name="TestIn"> + <wsdlsoap:body use="literal"/> + </wsdl:input> + <wsdl:output name="TestOut"> + <wsdlsoap:body use="literal"/> + </wsdl:output> + </wsdl:operation> + </wsdl:binding> + + <wsdl:service name="HelloService"> + <wsdl:port name="HelloPort" binding="tns:HelloSoapBinding"> + <soap:address location="http://localhost:8085/ode/processes/helloWorld"/> + </wsdl:port> + </wsdl:service> + + <plnk:partnerLinkType name="HelloPartnerLinkType"> + <plnk:role name="me" portType="tns:HelloPortType"/> + <plnk:role name="you" portType="tns:HelloPortType"/> + </plnk:partnerLinkType> +</wsdl:definitions> diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/test/java/sample/Helloworld.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/test/java/sample/Helloworld.java new file mode 100644 index 0000000000..f4e8c50448 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/test/java/sample/Helloworld.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 sample;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Helloworld {
+
+ String sayHello(String name);
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/test/java/sample/HelloworldTestCase.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/test/java/sample/HelloworldTestCase.java new file mode 100644 index 0000000000..be27aa68ef --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-bpel/src/test/java/sample/HelloworldTestCase.java @@ -0,0 +1,48 @@ +/*
+ * 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 sample;
+
+import org.junit.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchServiceException;
+
+public class HelloworldTestCase {
+
+ @Test
+ public void testSayHello() throws NoSuchServiceException {
+
+ // Run the SCA composite in a Tuscany runtime
+ Node node = TuscanyRuntime.runComposite("helloworld.composite", "target/classes");
+ try {
+
+ // Get the Helloworld service proxy
+ Helloworld helloworld = node.getService(Helloworld.class, "HelloworldComponent");
+
+ // test that it works as expected
+ Assert.assertEquals("Hello Amelia", helloworld.sayHello("Amelia"));
+
+ } finally {
+ // Stop the Tuscany runtime Node
+ node.stop();
+ }
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/README b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/README new file mode 100644 index 0000000000..ae2a0101e0 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/README @@ -0,0 +1,22 @@ +Tuscany - Getting Started - Helloworld JAX-RS Sample
+----------------------------------------------------
+
+This sample extends the helloworld sample to make the helloworld service available as an HTTP endpoint by using JAX-RS and the Tuscany REST binding.
+
+The changes to the helloworld sample are:
+- update the pom.xml with the additional dependencies
+- add a new Java interface which uses JAX-RS annotations
+- update the composite to use the new interface and binding
+
+As with all the getting-started samples you can run this sample with:
+
+ mvn tuscany:run
+
+Then at a web browser enter the following URL:
+
+http://localhost:8080/HelloworldComponent/Helloworld/sayHello?name=world
+
+which should return a page saying:
+
+Hello world
+
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/cors.html b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/cors.html new file mode 100644 index 0000000000..9b5106673c --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/cors.html @@ -0,0 +1,41 @@ +<!--
+ * 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.
+-->
+<html>
+<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
+<script type="text/javascript">
+
+function corsGet() {
+ jQuery.get('http://localhost:8080/HelloworldComponent/Helloworld/sayHello?name=world', null, function(data){alert(data);}, null);
+}
+
+</script>
+
+<body>
+<h1>Apache Tuscany Helloworld JAX-RS Sample</h1>
+
+<p>This page uses the Tuscany 'Cross-Origin Resource Sharing' (CORS) support to enable calling the Helloworld JAX-RS service with JQuery<br/><br/>
+
+<a href="#" onclick="corsGet(); return false;">Invoke the Helloworld service</a>
+
+</p><p>
+Clicking the above link should result in a pop-up alert box saying "Hello World".
+</p>
+
+</body>
+</html>
\ No newline at end of file diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/pom.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/pom.xml new file mode 100644 index 0000000000..037eee40c4 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/pom.xml @@ -0,0 +1,120 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.tuscany.sca.samples</groupId>
+ <artifactId>tuscany-samples</artifactId>
+ <version>2.0-Beta4</version>
+ <relativePath />
+ </parent>
+ <artifactId>helloworld-jaxrs</artifactId>
+ <version>2.0-Beta4</version>
+
+ <name>Apache Tuscany SCA Samples Helloworld JAX-RS</name>
+
+ <properties>
+ <tuscany.version>${project.version}</tuscany.version>
+ </properties>
+
+ <!-- ASF repositories so sample can be built from SVN without building trunk-->
+ <repositories><repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </repository></repositories>
+ <pluginRepositories><pluginRepository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </pluginRepository></pluginRepositories>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.ws.rs</groupId>
+ <artifactId>jsr311-api</artifactId>
+ <version>1.1.1</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-base-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-rest-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>6.1.26</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+
+ <plugins>
+
+ <!-- to support running the composite with mvn tuscany:run -->
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-plugin</artifactId>
+ <version>${tuscany.version}</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-rest-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+
+ </build>
+
+</project>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/java/sample/Helloworld.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/java/sample/Helloworld.java new file mode 100644 index 0000000000..f4e8c50448 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/java/sample/Helloworld.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 sample;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Helloworld {
+
+ String sayHello(String name);
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/java/sample/HelloworldImpl.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/java/sample/HelloworldImpl.java new file mode 100644 index 0000000000..089b1a4290 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/java/sample/HelloworldImpl.java @@ -0,0 +1,27 @@ +/*
+ * 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 sample;
+
+public class HelloworldImpl implements Helloworld {
+
+ public String sayHello(String name) {
+ return "Hello " + name;
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/java/sample/JaxrsHelloworld.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/java/sample/JaxrsHelloworld.java new file mode 100644 index 0000000000..a944736144 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/java/sample/JaxrsHelloworld.java @@ -0,0 +1,36 @@ +/*
+ * 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 sample;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface JaxrsHelloworld {
+
+ @GET
+ @Path("sayHello")
+ @Produces(MediaType.TEXT_PLAIN)
+ String sayHello(@QueryParam("name") String name);
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..95c32fb5bf --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,25 @@ +<?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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://sample">
+
+ <deployable composite="sample:helloworld-contribution" />
+
+</contribution>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/resources/helloworld.composite b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/resources/helloworld.composite new file mode 100644 index 0000000000..88df3636c3 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/main/resources/helloworld.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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://sample"
+ name="helloworld-contribution">
+
+ <component name="HelloworldComponent">
+ <implementation.java class="sample.HelloworldImpl"/>
+ <service name="Helloworld">
+ <interface.java interface="sample.JaxrsHelloworld"/>
+ <tuscany:binding.rest/>
+ </service>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/test/java/sample/HelloworldTestCase.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/test/java/sample/HelloworldTestCase.java new file mode 100644 index 0000000000..93a9a0e719 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jaxrs/src/test/java/sample/HelloworldTestCase.java @@ -0,0 +1,71 @@ +/*
+ * 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 sample;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import org.apache.tuscany.sca.monitor.ValidationException;
+import org.apache.tuscany.sca.runtime.ActivationException;
+import org.junit.Assert;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchServiceException;
+
+public class HelloworldTestCase {
+
+ @Test
+ public void testSayHello() throws NoSuchServiceException, IOException, ContributionReadException, ActivationException, ValidationException {
+
+ // Run the SCA composite in a Tuscany runtime
+ Node node = TuscanyRuntime.runComposite("helloworld.composite", "target/classes");
+ try {
+
+ // test that has exposed an HTTP endpoint that works as expected
+ URL url = new URL("http://localhost:8080/HelloworldComponent/Helloworld/sayHello?name=Amelia");
+ Assert.assertEquals("Hello Amelia", read(url.openStream()));
+
+ } finally {
+ // Stop the Tuscany runtime Node
+ node.stop();
+ }
+ }
+
+ private static String read(InputStream is) throws IOException {
+ BufferedReader reader = null;
+ try {
+ reader = new BufferedReader(new InputStreamReader(is));
+ StringBuffer sb = new StringBuffer();
+ String str;
+ while ((str = reader.readLine()) != null) {
+ sb.append(str);
+ }
+ return sb.toString();
+ } finally {
+ if (reader != null) {
+ reader.close();
+ }
+ }
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/README b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/README new file mode 100644 index 0000000000..5a99f91036 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/README @@ -0,0 +1,23 @@ +Tuscany - Getting Started - Helloworld JSONP Sample
+---------------------------------------------------
+
+This sample extends the helloworld sample to make the helloworld service available as an HTTP endpoint using JSONP.
+JSONP is a protocol supported by many Web clients that enables client requests to a server in a different domain.
+
+The changes to the helloworld sample are:
+- update the pom.xml with the additional dependencies
+- update the composite to use the JSONP binding
+
+As with all the getting-started samples you can run this sample with:
+
+ mvn tuscany:run
+
+Then at a web browser enter the following URL:
+
+http://localhost:8080/HelloworldComponent/Helloworld/sayHello?name=world&callback=respFunc
+
+which should return a page saying:
+
+respFunc("Hello world");
+
+
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/pom.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/pom.xml new file mode 100644 index 0000000000..931779ac65 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/pom.xml @@ -0,0 +1,113 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.tuscany.sca.samples</groupId>
+ <artifactId>tuscany-samples</artifactId>
+ <version>2.0-Beta4</version>
+ <relativePath />
+ </parent>
+
+ <artifactId>helloworld-jsonp</artifactId>
+ <version>2.0-Beta4</version>
+
+ <name>Apache Tuscany SCA Samples Helloworld JSONP</name>
+
+ <properties>
+ <tuscany.version>${project.version}</tuscany.version>
+ </properties>
+
+ <!-- ASF repositories so sample can be built from SVN without building trunk-->
+ <repositories><repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </repository></repositories>
+ <pluginRepositories><pluginRepository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </pluginRepository></pluginRepositories>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-base-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonp-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>6.1.26</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+
+ <plugins>
+
+ <!-- to support running the composite with mvn tuscany:run -->
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-plugin</artifactId>
+ <version>${tuscany.version}</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonp-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+
+ </build>
+
+</project>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/main/java/sample/Helloworld.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/main/java/sample/Helloworld.java new file mode 100644 index 0000000000..f4e8c50448 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/main/java/sample/Helloworld.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 sample;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Helloworld {
+
+ String sayHello(String name);
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/main/java/sample/HelloworldImpl.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/main/java/sample/HelloworldImpl.java new file mode 100644 index 0000000000..089b1a4290 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/main/java/sample/HelloworldImpl.java @@ -0,0 +1,27 @@ +/*
+ * 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 sample;
+
+public class HelloworldImpl implements Helloworld {
+
+ public String sayHello(String name) {
+ return "Hello " + name;
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..95c32fb5bf --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,25 @@ +<?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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://sample">
+
+ <deployable composite="sample:helloworld-contribution" />
+
+</contribution>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/main/resources/helloworld.composite b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/main/resources/helloworld.composite new file mode 100644 index 0000000000..4c33fd2b70 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/main/resources/helloworld.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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://sample"
+ name="helloworld-contribution">
+
+ <component name="HelloworldComponent">
+ <implementation.java class="sample.HelloworldImpl"/>
+ <service name="Helloworld">
+ <tuscany:binding.jsonp/>
+ </service>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/test/java/sample/HelloworldTestCase.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/test/java/sample/HelloworldTestCase.java new file mode 100644 index 0000000000..7951e4d6e8 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonp/src/test/java/sample/HelloworldTestCase.java @@ -0,0 +1,74 @@ +/*
+ * 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 sample;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.junit.Assert;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchServiceException;
+
+public class HelloworldTestCase {
+
+ @Test
+ public void testSayHello() throws NoSuchServiceException, IOException {
+
+ // Run the SCA composite in a Tuscany runtime
+ Node node = TuscanyRuntime.runComposite("helloworld.composite", "target/classes");
+ try {
+
+ // Get the Helloworld service proxy
+ Helloworld helloworld = node.getService(Helloworld.class, "HelloworldComponent");
+
+ // test that it works as expected
+ Assert.assertEquals("Hello Amelia", helloworld.sayHello("Amelia"));
+
+ // test that has exposed an HTTP endpoint that works as expected
+ URL url = new URL("http://localhost:8080/HelloworldComponent/Helloworld/sayHello?name=Amelia&callback=someFunc");
+ Assert.assertEquals("someFunc(\"Hello Amelia\");", read(url.openStream()));
+
+ } finally {
+ // Stop the Tuscany runtime Node
+ node.stop();
+ }
+ }
+
+ private static String read(InputStream is) throws IOException {
+ BufferedReader reader = null;
+ try {
+ reader = new BufferedReader(new InputStreamReader(is));
+ StringBuffer sb = new StringBuffer();
+ String str;
+ while ((str = reader.readLine()) != null) {
+ sb.append(str);
+ }
+ return sb.toString();
+ } finally {
+ if (reader != null) {
+ reader.close();
+ }
+ }
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/README b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/README new file mode 100644 index 0000000000..c197ddcd95 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/README @@ -0,0 +1,27 @@ +Tuscany - Getting Started - Helloworld JSONRPC Sample
+-----------------------------------------------------
+
+This sample extends the helloworld sample to make the helloworld service available as a JSON-RPC endpoint.
+JSON-RPC is a protocol for doing remote procedure calls encoded in JSON.
+
+The changes to the helloworld sample are:
+- update the pom.xml with the additional dependencies
+- update the composite to use the JSON-RPC binding
+
+As with all the getting-started samples you can run this sample with:
+
+ mvn tuscany:run
+
+Then at a web browser enter the following URL:
+(JSON-RPC aruguments are base64 encoded, so in this URL "WyJXb3JsZCJd" unecoded is "["World"]")
+
+ http://localhost:8080/HelloworldComponent/Helloworld?method=sayHello¶ms=WyJXb3JsZCJd&id=1
+
+which should return a page saying:
+
+ {"id":1,"result":"Hello World"}
+
+
+
+
+
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/pom.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/pom.xml new file mode 100644 index 0000000000..668d321889 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/pom.xml @@ -0,0 +1,113 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.tuscany.sca.samples</groupId>
+ <artifactId>tuscany-samples</artifactId>
+ <version>2.0-Beta4</version>
+ <relativePath />
+ </parent>
+
+ <artifactId>helloworld-jsonrpc</artifactId>
+ <version>2.0-Beta4</version>
+
+ <name>Apache Tuscany SCA Samples Helloworld JSON-RPC</name>
+
+ <properties>
+ <tuscany.version>${project.version}</tuscany.version>
+ </properties>
+
+ <!-- ASF repositories so sample can be built from SVN without building trunk-->
+ <repositories><repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </repository></repositories>
+ <pluginRepositories><pluginRepository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </pluginRepository></pluginRepositories>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-base-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>6.1.26</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+
+ <plugins>
+
+ <!-- to support running the composite with mvn tuscany:run -->
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-plugin</artifactId>
+ <version>${tuscany.version}</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+
+ </build>
+
+</project>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/main/java/sample/Helloworld.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/main/java/sample/Helloworld.java new file mode 100644 index 0000000000..f4e8c50448 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/main/java/sample/Helloworld.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 sample;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Helloworld {
+
+ String sayHello(String name);
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/main/java/sample/HelloworldImpl.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/main/java/sample/HelloworldImpl.java new file mode 100644 index 0000000000..089b1a4290 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/main/java/sample/HelloworldImpl.java @@ -0,0 +1,27 @@ +/*
+ * 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 sample;
+
+public class HelloworldImpl implements Helloworld {
+
+ public String sayHello(String name) {
+ return "Hello " + name;
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..95c32fb5bf --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,25 @@ +<?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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://sample">
+
+ <deployable composite="sample:helloworld-contribution" />
+
+</contribution>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/main/resources/helloworld.composite b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/main/resources/helloworld.composite new file mode 100644 index 0000000000..5b37e6f3db --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/main/resources/helloworld.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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://sample"
+ name="helloworld-contribution">
+
+ <component name="HelloworldComponent">
+ <implementation.java class="sample.HelloworldImpl"/>
+ <service name="Helloworld">
+ <tuscany:binding.jsonrpc/>
+ </service>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/test/java/sample/HelloworldTestCase.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/test/java/sample/HelloworldTestCase.java new file mode 100644 index 0000000000..f4f382a590 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-jsonrpc/src/test/java/sample/HelloworldTestCase.java @@ -0,0 +1,77 @@ +/*
+ * 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 sample;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.junit.Assert;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchServiceException;
+
+public class HelloworldTestCase {
+
+ @Test
+ public void testSayHello() throws NoSuchServiceException, IOException {
+
+ // Run the SCA composite in a Tuscany runtime
+ Node node = TuscanyRuntime.runComposite("helloworld.composite", "target/classes");
+ try {
+
+ // Get the Helloworld service proxy
+ Helloworld helloworld = node.getService(Helloworld.class, "HelloworldComponent");
+
+ // test that it works as expected
+ Assert.assertEquals("Hello Amelia", helloworld.sayHello("Amelia"));
+
+ // test that has exposed an HTTP endpoint that works as expected
+ // JSONRPC args are base64 encoded, ["World"] = WyJXb3JsZCJd
+ URL url = new URL("http://localhost:8080/HelloworldComponent/Helloworld?method=sayHello¶ms=WyJXb3JsZCJd&id=1");
+ String response = read(url.openStream());
+ System.out.println(response);
+ Assert.assertTrue(response.contains("\"id\":1,\"result\":\"Hello World\""));
+
+ } finally {
+ // Stop the Tuscany runtime Node
+ node.stop();
+ }
+ }
+
+ private static String read(InputStream is) throws IOException {
+ BufferedReader reader = null;
+ try {
+ reader = new BufferedReader(new InputStreamReader(is));
+ StringBuffer sb = new StringBuffer();
+ String str;
+ while ((str = reader.readLine()) != null) {
+ sb.append(str);
+ }
+ return sb.toString();
+ } finally {
+ if (reader != null) {
+ reader.close();
+ }
+ }
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/README b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/README new file mode 100644 index 0000000000..5672944c8f --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/README @@ -0,0 +1,25 @@ +Tuscany - Getting Started - Helloworld SCAClient Sample
+-------------------------------------------------------
+
+This sample demonstrates using the OASIS SCAClient API to invoke a service in a remote SCA domain.
+
+See the README in the top-level samples folder for general information on the Tuscany samples.
+
+This project has a plain Java SE class with a main method which uses the OASIS SCAClient API to invoke a Helloworld service in a remote SCA domain.
+
+Before running this sample you must have a helloworld service running in a SCA domain somewhere, for example, you can do that by using a separate command prompt to run one of the Tuscany "Getting Started" samples which provide a helloworld service, for examaple, helloworld, or helloworld-spring.
+
+You can then run this SCAClient sample with the Maven command:
+
+ mvn tuscany:run
+
+As this sample uses a standard Java SE main class you can also run it with the maven exec java plugin:
+
+ mvn exec:java
+
+You should see the following output:
+
+ HelloworldSCAClient, using domainURI uri:default
+ Calling HelloworldComponent.sayHello("world")
+ Hello world
+
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/pom.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/pom.xml new file mode 100644 index 0000000000..b90e0f5415 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/pom.xml @@ -0,0 +1,121 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.tuscany.sca.samples</groupId> + <artifactId>tuscany-samples</artifactId> + <version>2.0-Beta4</version> + <relativePath /> + </parent> + + <artifactId>helloworld-scaclient</artifactId> + <version>2.0-Beta4</version> + + <name>Apache Tuscany SCA Samples Helloworld SCAClient</name> + + <properties> + <tuscany.version>${project.version}</tuscany.version> + </properties> + + <!-- ASF repositories so sample can be built from SVN without building trunk--> + <repositories><repository> + <id>apache.snapshots</id> + <name>Apache Snapshot Repository</name> + <url>http://repository.apache.org/snapshots</url> + <releases><enabled>false</enabled></releases> + </repository></repositories> + <pluginRepositories><pluginRepository> + <id>apache.snapshots</id> + <name>Apache Snapshot Repository</name> + <url>http://repository.apache.org/snapshots</url> + <releases><enabled>false</enabled></releases> + </pluginRepository></pluginRepositories> + + <dependencies> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca-api</artifactId> + <version>${tuscany.version}</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.8.1</version> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-base-runtime</artifactId> + <version>${tuscany.version}</version> + <scope>test</scope> + </dependency> + + <!-- this is for the Tuscany distributed domain support --> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-domain-hazelcast</artifactId> + <version>${tuscany.version}</version> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + + <plugins> + + <!-- to support running the application with mvn tuscany:run --> + <plugin> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-maven-plugin</artifactId> + <version>${tuscany.version}</version> + <configuration> + <mainClass>sample.HelloworldSCAClient</mainClass> + </configuration> + </plugin> + + <!-- to support running the application with mvn exec:java --> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <version>1.1.1</version> + <executions> + <execution> + <goals> + <goal>java</goal> + </goals> + </execution> + </executions> + <configuration> + <mainClass>sample.HelloworldSCAClient</mainClass> + <classpathScope>test</classpathScope> + </configuration> + </plugin> + + </plugins> + </build> +</project> diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/src/main/java/sample/Helloworld.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/src/main/java/sample/Helloworld.java new file mode 100644 index 0000000000..1eeb8be9fd --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/src/main/java/sample/Helloworld.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 sample; + +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface Helloworld { + + String sayHello(String name); + +} diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/src/main/java/sample/HelloworldSCAClient.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/src/main/java/sample/HelloworldSCAClient.java new file mode 100644 index 0000000000..0a91fdb70f --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/src/main/java/sample/HelloworldSCAClient.java @@ -0,0 +1,45 @@ +/* + * 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 sample; + +import java.net.URI; + +import org.oasisopen.sca.NoSuchDomainException; +import org.oasisopen.sca.NoSuchServiceException; +import org.oasisopen.sca.client.SCAClientFactory; + +public class HelloworldSCAClient { + + public static void main(String[] args) throws NoSuchDomainException, NoSuchServiceException { + + String domainURI = System.getProperties().getProperty("domainURI"); + if (domainURI == null || domainURI.length() < 1) { + domainURI = "uri:default"; + } + + System.out.println("HelloworldSCAClient, using domainURI " + domainURI); + SCAClientFactory factory = SCAClientFactory.newInstance(URI.create(domainURI)); + + String name = args.length < 1 ? "world" : args[0]; + System.out.println("Calling HelloworldComponent.sayHello(\"" + name + "\"):"); + Helloworld service = factory.getService(Helloworld.class, "HelloworldComponent"); + System.out.println(service.sayHello(name)); + } + +} diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/src/test/java/sample/HelloworldTestCase.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/src/test/java/sample/HelloworldTestCase.java new file mode 100644 index 0000000000..d983c25b61 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-scaclient/src/test/java/sample/HelloworldTestCase.java @@ -0,0 +1,56 @@ +/* + * 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 sample; + +import org.apache.tuscany.sca.Node; +import org.apache.tuscany.sca.TuscanyRuntime; +import org.apache.tuscany.sca.contribution.processor.ContributionReadException; +import org.apache.tuscany.sca.monitor.ValidationException; +import org.apache.tuscany.sca.runtime.ActivationException; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.oasisopen.sca.NoSuchDomainException; +import org.oasisopen.sca.NoSuchServiceException; + +public class HelloworldTestCase { + + static Node node; + + @Test + public void testSayHello() throws NoSuchDomainException, NoSuchServiceException { + System.setProperty("domainURI", "uri:default?wka=127.0.0.1:7654"); + HelloworldSCAClient.main(new String[0]); + } + + @BeforeClass + public static void start() throws ContributionReadException, ActivationException, ValidationException { + node = TuscanyRuntime.newInstance().createNode("uri:default?bind=127.0.0.1:7654"); + String curi = node.installContribution(null, "../helloworld/target/classes", null, null); + node.startDeployables(curi); + } + + @AfterClass + public static void stop() { + if (node != null) { + node.stop(); + } + } + +} diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/README b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/README new file mode 100644 index 0000000000..5fb675b502 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/README @@ -0,0 +1,18 @@ +Tuscany - Getting Started - Helloworld Spring Sample
+----------------------------------------------------
+
+This sample is an alternative version of the helloworld sample which uses the Spring Framework instead of an SCA Java component.
+
+The changes to the helloworld sample are:
+- update the pom.xml with the additional Spring dependencies
+- add a Spring context xml file to define the Spring application
+- update the composite to use <implementation.spring>
+
+As with all the getting-started samples you can run this sample with:
+
+ mvn tuscany:run
+
+And then as with the original helloworld sample you may test the service by using the Shell "invoke" command:
+
+ invoke HelloworldComponent sayHello yourName
+
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/pom.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/pom.xml new file mode 100644 index 0000000000..a19ca5d8b5 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/pom.xml @@ -0,0 +1,106 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.tuscany.sca.samples</groupId>
+ <artifactId>tuscany-samples</artifactId>
+ <version>2.0-Beta4</version>
+ <relativePath />
+ </parent>
+ <artifactId>helloworld-spring</artifactId>
+ <version>2.0-Beta4</version>
+
+ <name>Apache Tuscany SCA Samples Helloworld Spring</name>
+
+ <properties>
+ <tuscany.version>${project.version}</tuscany.version>
+ </properties>
+
+ <!-- ASF repositories so sample can be built from SVN without building trunk-->
+ <repositories><repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </repository></repositories>
+ <pluginRepositories><pluginRepository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </pluginRepository></pluginRepositories>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-base-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-spring-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+
+ <plugins>
+
+ <!-- to support running the composite with mvn tuscany:run -->
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-plugin</artifactId>
+ <version>${tuscany.version}</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-spring-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+
+ </build>
+
+</project>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/java/sample/Helloworld.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/java/sample/Helloworld.java new file mode 100644 index 0000000000..f4e8c50448 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/java/sample/Helloworld.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 sample;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Helloworld {
+
+ String sayHello(String name);
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/java/sample/HelloworldImpl.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/java/sample/HelloworldImpl.java new file mode 100644 index 0000000000..089b1a4290 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/java/sample/HelloworldImpl.java @@ -0,0 +1,27 @@ +/*
+ * 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 sample;
+
+public class HelloworldImpl implements Helloworld {
+
+ public String sayHello(String name) {
+ return "Hello " + name;
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..95c32fb5bf --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,25 @@ +<?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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://sample">
+
+ <deployable composite="sample:helloworld-contribution" />
+
+</contribution>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/resources/helloworld-context.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/resources/helloworld-context.xml new file mode 100644 index 0000000000..a6b11d2399 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/resources/helloworld-context.xml @@ -0,0 +1,27 @@ +<?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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca-j/spring/200810" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">
+
+ <sca:service name="HelloworldService" target="HelloworldBean"/>
+
+ <bean id="HelloworldBean" class="sample.HelloworldImpl">
+ </bean>
+
+</beans>
\ No newline at end of file diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/resources/helloworld.composite b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/resources/helloworld.composite new file mode 100644 index 0000000000..4ed0fb51dc --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/main/resources/helloworld.composite @@ -0,0 +1,29 @@ +<?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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://sample"
+ name="helloworld-contribution">
+
+ <component name="HelloworldComponent">
+ <implementation.spring location="helloworld-context.xml"/>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/test/java/sample/HelloworldTestCase.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/test/java/sample/HelloworldTestCase.java new file mode 100644 index 0000000000..be27aa68ef --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-spring/src/test/java/sample/HelloworldTestCase.java @@ -0,0 +1,48 @@ +/*
+ * 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 sample;
+
+import org.junit.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchServiceException;
+
+public class HelloworldTestCase {
+
+ @Test
+ public void testSayHello() throws NoSuchServiceException {
+
+ // Run the SCA composite in a Tuscany runtime
+ Node node = TuscanyRuntime.runComposite("helloworld.composite", "target/classes");
+ try {
+
+ // Get the Helloworld service proxy
+ Helloworld helloworld = node.getService(Helloworld.class, "HelloworldComponent");
+
+ // test that it works as expected
+ Assert.assertEquals("Hello Amelia", helloworld.sayHello("Amelia"));
+
+ } finally {
+ // Stop the Tuscany runtime Node
+ node.stop();
+ }
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/README b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/README new file mode 100644 index 0000000000..bcf11d9886 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/README @@ -0,0 +1,32 @@ +Tuscany - Getting Started - Helloworld WebApp Sample
+----------------------------------------------------
+
+This sample demonstrates how to use SCA contributions with Web Applications
+
+See the README in the top-level samples folder for general information on the Tuscany samples.
+
+This sample project creates a .war web application which includes Tuscany. The SCA contribution
+from the helloworld sample is included within the war and its SCA composite started by the webapp,
+and there is a JSP page which shows how to invoke SCA services by using the SCA taglib.
+
+As this sample creates a web application .war archive there is a manual step to deploy the WAR file
+to your web application server. The archive is the helloworld-webapp-<version>.war in the target folder.
+Alternatively, you can run it by using the Maven Tomcat plugin by using the following command:
+
+ mvn tomcat:run
+
+or if you prefer Jetty then:
+
+ mvn jetty:run
+
+Once the web app is running use your browser to visit the following URL;
+
+http://localhost:8080/helloworld-webapp
+
+(The port and hostname will of course vary depending on your local installation)
+
+You should then see the web page return the following:
+
+ Calling HelloworldService sayHello("world") returns:
+
+ Hello world
\ No newline at end of file diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/pom.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/pom.xml new file mode 100644 index 0000000000..7827f3b10b --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/pom.xml @@ -0,0 +1,181 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.tuscany.sca.samples</groupId> + <artifactId>tuscany-samples</artifactId> + <version>2.0-Beta4</version> + <relativePath /> + </parent> + + <artifactId>helloworld-webapp</artifactId> + <version>2.0-Beta4</version> + + <name>Apache Tuscany SCA Samples Helloworld WebApp</name> + <packaging>war</packaging> + + <properties> + <tuscany.version>${project.version}</tuscany.version> + </properties> + + <!-- ASF repositories so sample can be built from SVN without building trunk--> + <repositories><repository> + <id>apache.snapshots</id> + <name>Apache Snapshot Repository</name> + <url>http://repository.apache.org/snapshots</url> + <releases><enabled>false</enabled></releases> + </repository></repositories> + <pluginRepositories><pluginRepository> + <id>apache.snapshots</id> + <name>Apache Snapshot Repository</name> + <url>http://repository.apache.org/snapshots</url> + <releases><enabled>false</enabled></releases> + </pluginRepository></pluginRepositories> + + <dependencies> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-base-runtime</artifactId> + <version>${tuscany.version}</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.8.1</version> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>net.sourceforge.htmlunit</groupId> + <artifactId>htmlunit</artifactId> + <version>2.6</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>xalan</groupId> + <artifactId>xalan</artifactId> + </exclusion> + </exclusions> + </dependency> + + <!-- replace HTMLUnit dependency with verstion that Tuscany is using --> + <dependency> + <groupId>xalan</groupId> + <artifactId>xalan</artifactId> + <version>2.7.0</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>xml-apis</groupId> + <artifactId>xml-apis</artifactId> + </exclusion> + </exclusions> + </dependency> + + </dependencies> + + <build> + <plugins> + + <!-- this copies the SCA contribution from the helloworld sample into this webapp --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>copy</id> + <phase>compile</phase> + <goals> + <goal>copy</goal> + </goals> + <configuration> + <artifactItems> + <artifactItem> + <groupId>org.apache.tuscany.sca.samples</groupId> + <artifactId>helloworld</artifactId> + <version>${project.version}</version> + <!-- should really go in the target folder but i can't get jetty:run or tomcat:run to work using that --> + <outputDirectory>src/main/webapp/WEB-INF/sca-contributions</outputDirectory> + </artifactItem> + </artifactItems> + </configuration> + </execution> + </executions> + </plugin> + + <!-- to support running thw webapp with mvn tuscany:run --> + <plugin> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-maven-plugin</artifactId> + <version>${tuscany.version}</version> + </plugin> + + <!-- to support using mvn jetty:run and also to run the webapp for the integration test --> + <plugin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>maven-jetty-plugin</artifactId> + <version>6.1.26</version> + <configuration> + <contextPath>helloworld-webapp</contextPath> + <stopKey>foo</stopKey> + <stopPort>9999</stopPort> + </configuration> + <executions> + <execution> + <id>start-jetty</id> + <phase>process-test-classes</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <scanIntervalSeconds>0</scanIntervalSeconds> + <daemon>true</daemon> + <connectors> + <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> + <port>8085</port> + </connector> + </connectors> + </configuration> + </execution> + <execution> + <id>stop-jetty</id> + <phase>prepare-package</phase> + <goals> + <goal>stop</goal> + </goals> + </execution> + </executions> + </plugin> + + <!-- to support using mvn tomcat:run --> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>tomcat-maven-plugin</artifactId> + <version>1.1</version> + </plugin> + + </plugins> + </build> +</project> diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/main/java/sample/Helloworld.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/main/java/sample/Helloworld.java new file mode 100644 index 0000000000..1eeb8be9fd --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/main/java/sample/Helloworld.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 sample; + +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface Helloworld { + + String sayHello(String name); + +} diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/main/webapp/WEB-INF/web.composite new file mode 100644 index 0000000000..0c03826f99 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/main/webapp/WEB-INF/web.composite @@ -0,0 +1,30 @@ +<?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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://samples"
+ name="Helloworld">
+
+ <component name="foo">
+ <implementation.web web-uri=""/>
+ <reference name="service" target="HelloworldComponent"/>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..b83a9c3417 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/main/webapp/WEB-INF/web.xml @@ -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. +--> +<web-app version="2.4" + xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" > + + <display-name>Apache Tuscany Helloworld Sample</display-name> + + <filter> + <filter-name>tuscany</filter-name> + <filter-class>org.apache.tuscany.sca.host.webapp.TuscanyServletFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>tuscany</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + + <welcome-file-list id="WelcomeFileList"> + <welcome-file>hello.jsp</welcome-file> + </welcome-file-list> + +</web-app> diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/main/webapp/hello.jsp b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/main/webapp/hello.jsp new file mode 100644 index 0000000000..57abb08ca2 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/main/webapp/hello.jsp @@ -0,0 +1,37 @@ +<!--
+ * 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.
+-->
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib uri="http://www.osoa.org/sca/sca_jsp.tld" prefix="sca" %>
+
+<sca:reference name="service" type="sample.Helloworld" />
+
+<html>
+ <body >
+
+ <h2>Apache Tuscany Helloworld JSP Sample</h2>
+
+ Calling HelloworldService sayHello("world") returns:
+
+ <p>
+
+ <%= service.sayHello("world") %>
+
+ </body>
+</html>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/test/java/itest/HelloworldTestCase.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/test/java/itest/HelloworldTestCase.java new file mode 100644 index 0000000000..40da70b98d --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/test/java/itest/HelloworldTestCase.java @@ -0,0 +1,53 @@ +/* + * 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 itest; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.util.Iterator; + +import org.junit.Test; + +import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; +import com.gargoylesoftware.htmlunit.WebClient; +import com.gargoylesoftware.htmlunit.html.HtmlElement; +import com.gargoylesoftware.htmlunit.html.HtmlPage; +import com.gargoylesoftware.htmlunit.html.HtmlParagraph; + +/** + */ +public class HelloworldTestCase { + + @Test + public void testA() throws FailingHttpStatusCodeException, MalformedURLException, IOException { + HtmlPage page = (HtmlPage)new WebClient().getPage("http://localhost:8085/helloworld-webapp"); + Iterator<?> ss = page.getAllHtmlChildElements().iterator(); + while(ss.hasNext()) { + HtmlElement htmlElement = (HtmlElement) ss.next(); + if( htmlElement instanceof HtmlParagraph) { + assertEquals("Hello world", htmlElement.asText()); + break; + } + } + } + +} diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/test/resources/test-web.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/test/resources/test-web.xml new file mode 100644 index 0000000000..4ca1c962a0 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webapp/src/test/resources/test-web.xml @@ -0,0 +1,30 @@ +<?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. +--> +<web-app version="2.4" + xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" > + + <context-param> + <param-name>org.apache.tuscany.sca.config</param-name> + <param-value>uri:default?bind=127.0.0.1:54321</param-value> + </context-param> + +</web-app> diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/README b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/README new file mode 100644 index 0000000000..b61a694fa9 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/README @@ -0,0 +1,18 @@ +Tuscany - Getting Started - Helloworld Web Service Sample
+---------------------------------------------------------
+
+This sample extends the helloworld sample to make the helloworld service available as a SOAP based Web Service endpoint.
+
+The changes to the helloworld sample are:
+- update the pom.xml with the additional dependencies
+- update the composite to use the Web Service binding
+
+As with all the getting-started samples you can run this sample with:
+
+ mvn tuscany:run
+
+You really need a Web Service client to invoke the service but you can get the WSDL description for the service by using a web browser with the following URL:
+
+ http://localhost:8080/HelloworldComponent/Helloworld?wsdl
+
+which should return the WSDL document for the service.
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/pom.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/pom.xml new file mode 100644 index 0000000000..f1e29882bb --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/pom.xml @@ -0,0 +1,113 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.tuscany.sca.samples</groupId>
+ <artifactId>tuscany-samples</artifactId>
+ <version>2.0-Beta4</version>
+ <relativePath />
+ </parent>
+
+ <artifactId>helloworld-webservice</artifactId>
+ <version>2.0-Beta4</version>
+
+ <name>Apache Tuscany SCA Samples Helloworld Web Service</name>
+
+ <properties>
+ <tuscany.version>${project.version}</tuscany.version>
+ </properties>
+
+ <!-- ASF repositories so sample can be built from SVN without building trunk-->
+ <repositories><repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </repository></repositories>
+ <pluginRepositories><pluginRepository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </pluginRepository></pluginRepositories>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-base-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-runtime-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>6.1.26</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+
+ <plugins>
+
+ <!-- to support running the composite with mvn tuscany:run -->
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-plugin</artifactId>
+ <version>${tuscany.version}</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-runtime-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+
+ </build>
+
+</project>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/main/java/sample/Helloworld.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/main/java/sample/Helloworld.java new file mode 100644 index 0000000000..f4e8c50448 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/main/java/sample/Helloworld.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 sample;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Helloworld {
+
+ String sayHello(String name);
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/main/java/sample/HelloworldImpl.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/main/java/sample/HelloworldImpl.java new file mode 100644 index 0000000000..089b1a4290 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/main/java/sample/HelloworldImpl.java @@ -0,0 +1,27 @@ +/*
+ * 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 sample;
+
+public class HelloworldImpl implements Helloworld {
+
+ public String sayHello(String name) {
+ return "Hello " + name;
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..95c32fb5bf --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,25 @@ +<?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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://sample">
+
+ <deployable composite="sample:helloworld-contribution" />
+
+</contribution>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/main/resources/helloworld.composite b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/main/resources/helloworld.composite new file mode 100644 index 0000000000..5f001c05a9 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/main/resources/helloworld.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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://sample"
+ name="helloworld-contribution">
+
+ <component name="HelloworldComponent">
+ <implementation.java class="sample.HelloworldImpl"/>
+ <service name="Helloworld">
+ <binding.ws/>
+ </service>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/test/java/sample/HelloworldTestCase.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/test/java/sample/HelloworldTestCase.java new file mode 100644 index 0000000000..0680e8cd01 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-webservice/src/test/java/sample/HelloworldTestCase.java @@ -0,0 +1,76 @@ +/*
+ * 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 sample;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.junit.Assert;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchServiceException;
+
+public class HelloworldTestCase {
+
+ @Test
+ public void testSayHello() throws NoSuchServiceException, IOException {
+
+ // Run the SCA composite in a Tuscany runtime
+ Node node = TuscanyRuntime.runComposite("helloworld.composite", "target/classes");
+ try {
+
+ // Get the Helloworld service proxy
+ Helloworld helloworld = node.getService(Helloworld.class, "HelloworldComponent");
+
+ // test that it works as expected
+ Assert.assertEquals("Hello Amelia", helloworld.sayHello("Amelia"));
+
+ // test that has exposed an HTTP endpoint that works as expected
+ // to keep this test simple just do ?wsdl on the endpoint
+ URL url = new URL("http://localhost:8080/HelloworldComponent/Helloworld?wsdl");
+ Assert.assertTrue(read(url.openStream()).contains("address location="));
+
+ } finally {
+ // Stop the Tuscany runtime Node
+ node.stop();
+ }
+ }
+
+ private static String read(InputStream is) throws IOException {
+ BufferedReader reader = null;
+ try {
+ reader = new BufferedReader(new InputStreamReader(is));
+ StringBuffer sb = new StringBuffer();
+ String str;
+ while ((str = reader.readLine()) != null) {
+ sb.append(str);
+ }
+ return sb.toString();
+ } finally {
+ if (reader != null) {
+ reader.close();
+ }
+ }
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/README b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/README new file mode 100644 index 0000000000..a5d5272d8f --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/README @@ -0,0 +1,35 @@ +Tuscany - Getting Started - Helloworld With Dependencies Sample
+---------------------------------------------------------------
+
+This sample extends the helloworld sample to show how to use ZIP format contributions which include dependencys jar which are made available on the contribution classpath. To demonstrate this the Helloworld service is updated to use a Apache Commons Lang 3.0 utility to capatalize the first letter of the name.
+
+The changes to the helloworld sample are:
+- update sample.HelloworldImpl class is updated to use the Apache Commons Lang 3.0 WordUtils utility
+- the Maven build is updated to use the Assembly plugin to create a ZIP archive of the contrubution which includes the dependency jars
+
+Presently the Tuscany Shell does not work "as is" to run this sample with "mvn tuscany:run". Instead you need to do the following in the helloworld-withdeps directory:
+
+- build the ZIP contribution
+
+ mvn clean install
+
+- start the Tuscany Shell
+
+ mvn tuscany:shell
+
+- install the sample contribution
+
+ install target\helloworld-withdeps-2.0-SNAPSHOT.zip
+
+- start the SCA composite
+
+ start helloworld-withdeps META-INF/helloworld.composite
+
+And then as with the original helloworld sample you may test the service by using the Shell "invoke" command:
+
+ invoke HelloworldComponent sayHello yourName
+
+which should return a hello text with the name capatilized:
+
+ Hello YourName
+
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/pom.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/pom.xml new file mode 100644 index 0000000000..006005dd14 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/pom.xml @@ -0,0 +1,120 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.tuscany.sca.samples</groupId>
+ <artifactId>tuscany-samples</artifactId>
+ <version>2.0-Beta4</version>
+ <relativePath />
+ </parent>
+ <artifactId>helloworld-withdeps</artifactId>
+ <version>2.0-Beta4</version>
+
+ <name>Apache Tuscany SCA Samples Helloworld With Dependencies</name>
+
+ <properties>
+ <tuscany.version>${project.version}</tuscany.version>
+ </properties>
+
+ <!-- ASF repositories so sample can be built from SVN without building trunk-->
+ <repositories><repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </repository></repositories>
+ <pluginRepositories><pluginRepository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </pluginRepository></pluginRepositories>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ <version>3.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-base-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+
+ <plugins>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.2.1</version>
+ <executions>
+ <execution>
+ <id>zip</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <appendAssemblyId>false</appendAssemblyId>
+ <descriptors>
+ <descriptor>src/main/assembly/zip.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- to support running the composite with mvn tuscany:run -->
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-plugin</artifactId>
+ <version>${tuscany.version}</version>
+ </plugin>
+
+ </plugins>
+
+ </build>
+
+</project>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/assembly/resources/META-INF/helloworld.composite b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/assembly/resources/META-INF/helloworld.composite new file mode 100644 index 0000000000..8e23a93895 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/assembly/resources/META-INF/helloworld.composite @@ -0,0 +1,29 @@ +<?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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://sample"
+ name="helloworld-withdeps">
+
+ <component name="HelloworldComponent">
+ <implementation.java class="sample.HelloworldImpl"/>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/assembly/resources/META-INF/sca-contribution.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/assembly/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..9112e02cbe --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/assembly/resources/META-INF/sca-contribution.xml @@ -0,0 +1,25 @@ +<?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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://sample">
+
+ <deployable composite="sample:helloworld-withdeps" />
+
+</contribution>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/assembly/zip.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/assembly/zip.xml new file mode 100644 index 0000000000..1d71d28a6f --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/assembly/zip.xml @@ -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.
+-->
+<assembly>
+ <id>zip</id>
+ <includeBaseDirectory>false</includeBaseDirectory>
+
+ <formats>
+ <format>zip</format>
+ </formats>
+
+ <fileSets>
+ <fileSet>
+ <directory>src/main/assembly/resources</directory>
+ <outputDirectory>.</outputDirectory>
+ </fileSet>
+ </fileSets>
+
+ <dependencySets>
+ <dependencySet>
+ <outputDirectory>lib</outputDirectory>
+ </dependencySet>
+ </dependencySets>
+
+</assembly>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/java/sample/Helloworld.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/java/sample/Helloworld.java new file mode 100644 index 0000000000..f4e8c50448 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/java/sample/Helloworld.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 sample;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Helloworld {
+
+ String sayHello(String name);
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/java/sample/HelloworldImpl.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/java/sample/HelloworldImpl.java new file mode 100644 index 0000000000..1852632429 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/main/java/sample/HelloworldImpl.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 sample;
+
+import org.apache.commons.lang3.text.WordUtils;
+
+public class HelloworldImpl implements Helloworld {
+
+ public String sayHello(String name) {
+ return "Hello " + WordUtils.capitalize(name);
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/test/java/sample/HelloworldTestCase.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/test/java/sample/HelloworldTestCase.java new file mode 100644 index 0000000000..6770d288fd --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld-withdeps/src/test/java/sample/HelloworldTestCase.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 sample;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchServiceException;
+
+public class HelloworldTestCase {
+
+ @Test
+ public void testSayHello() throws NoSuchServiceException {
+
+// // Run the SCA composite in a Tuscany runtime
+// Node node = TuscanyRuntime.runComposite(null, "target/helloworld-withdeps-2.0-SNAPSHOT.zip");
+// try {
+//
+// // Get the Helloworld service proxy
+// Helloworld helloworld = node.getService(Helloworld.class, "HelloworldComponent");
+//
+// // test that it works as expected
+// Assert.assertEquals("Hello Amelia", helloworld.sayHello("amelia"));
+//
+// } finally {
+// // Stop the Tuscany runtime Node
+// node.stop();
+// }
+ Helloworld helloworld = new HelloworldImpl();
+
+ // Test that a lower case name does get capitalized
+ Assert.assertEquals("Hello Amelia", helloworld.sayHello("amelia"));
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/README b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/README new file mode 100644 index 0000000000..fc306caa34 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/README @@ -0,0 +1,43 @@ +Tuscany - Getting Started - Helloworld Sample
+---------------------------------------------
+
+This sample demonstrates a simple helloworld style SCA application and how to run that with Tuscany.
+
+See the README in the top-level samples folder for general information on the Tuscany samples.
+
+This project creates an SCA contribution with a deployable composite named helloworld.composite.
+The composite defines an SCA component, HelloworldComponent, which provides a Helloworld service,
+the component is implemented by a Java class.
+
+You can use the contribution by starting the composite in the Tuscany Shell. To do that run the
+following command in the helloworld folder:
+
+ mvn tuscany:run
+
+Alternatively, the Tuscany Shell can be started with the scripts in the Tuscany binary distribution
+bin folder. To do that run the following command at the root of a Tuscany binary distribution:
+
+ bin\tuscany.bat samples\getting-started\helloworld
+
+Once the Shell has been started with one of those methods you can use Shell commands to explore
+the SCA domain, for example, use the "installed" command to get the status of installed contributions,
+"services" to see the available component services, and you may test calling the helloworld service by
+using the "invoke" command:
+
+ invoke HelloworldComponent sayHello yourName
+
+---
+
+This sample was created by the Tuscany contribution-jar Maven archetype. You can use that archetype to
+create your own SCA contribution projects by running the following Maven command:
+
+ mvn archetype:generate -DarchetypeCatalog=http://tuscany.apache.org
+
+then at the prompt select 1 to choose the contribution-jar archetype and then answer the questions.
+This project used the following answers:
+
+ Define value for property 'groupId': : org.apache.tuscany.sca.samples
+ Define value for property 'artifactId': : helloworld-contribution
+ Define value for property 'version': 1.0-SNAPSHOT: 2.0-SNAPSHOT
+ Define value for property 'package': org.apache.tuscany.sca.samples: sample
+
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/pom.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/pom.xml new file mode 100644 index 0000000000..703b1245ea --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/pom.xml @@ -0,0 +1,92 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.tuscany.sca.samples</groupId>
+ <artifactId>tuscany-samples</artifactId>
+ <version>2.0-Beta4</version>
+ <relativePath />
+ </parent>
+ <artifactId>helloworld</artifactId>
+ <version>2.0-Beta4</version>
+
+ <name>Apache Tuscany SCA Samples Helloworld</name>
+
+ <properties>
+ <tuscany.version>${project.version}</tuscany.version>
+ </properties>
+
+ <!-- ASF repositories so sample can be built from SVN without building trunk-->
+ <repositories><repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </repository></repositories>
+ <pluginRepositories><pluginRepository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://repository.apache.org/snapshots</url>
+ <releases><enabled>false</enabled></releases>
+ </pluginRepository></pluginRepositories>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-base-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+
+ <plugins>
+
+ <!-- to support running the composite with mvn tuscany:run -->
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-plugin</artifactId>
+ <version>${tuscany.version}</version>
+ </plugin>
+ </plugins>
+
+ </build>
+
+</project>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/main/java/sample/Helloworld.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/main/java/sample/Helloworld.java new file mode 100644 index 0000000000..f4e8c50448 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/main/java/sample/Helloworld.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 sample;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Helloworld {
+
+ String sayHello(String name);
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/main/java/sample/HelloworldImpl.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/main/java/sample/HelloworldImpl.java new file mode 100644 index 0000000000..089b1a4290 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/main/java/sample/HelloworldImpl.java @@ -0,0 +1,27 @@ +/*
+ * 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 sample;
+
+public class HelloworldImpl implements Helloworld {
+
+ public String sayHello(String name) {
+ return "Hello " + name;
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..95c32fb5bf --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,25 @@ +<?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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://sample">
+
+ <deployable composite="sample:helloworld-contribution" />
+
+</contribution>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/main/resources/helloworld.composite b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/main/resources/helloworld.composite new file mode 100644 index 0000000000..e0206cd6e8 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/main/resources/helloworld.composite @@ -0,0 +1,29 @@ +<?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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://sample"
+ name="helloworld-contribution">
+
+ <component name="HelloworldComponent">
+ <implementation.java class="sample.HelloworldImpl"/>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/test/java/sample/HelloworldTestCase.java b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/test/java/sample/HelloworldTestCase.java new file mode 100644 index 0000000000..be27aa68ef --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/helloworld/src/test/java/sample/HelloworldTestCase.java @@ -0,0 +1,48 @@ +/*
+ * 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 sample;
+
+import org.junit.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchServiceException;
+
+public class HelloworldTestCase {
+
+ @Test
+ public void testSayHello() throws NoSuchServiceException {
+
+ // Run the SCA composite in a Tuscany runtime
+ Node node = TuscanyRuntime.runComposite("helloworld.composite", "target/classes");
+ try {
+
+ // Get the Helloworld service proxy
+ Helloworld helloworld = node.getService(Helloworld.class, "HelloworldComponent");
+
+ // test that it works as expected
+ Assert.assertEquals("Hello Amelia", helloworld.sayHello("Amelia"));
+
+ } finally {
+ // Stop the Tuscany runtime Node
+ node.stop();
+ }
+ }
+}
diff --git a/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/pom.xml b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/pom.xml new file mode 100644 index 0000000000..beccffcc09 --- /dev/null +++ b/sca-java-2.x/tags/2.0-Beta4-RC1/samples/getting-started/pom.xml @@ -0,0 +1,45 @@ +<?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.samples</groupId> + <artifactId>tuscany-samples</artifactId> + <version>2.0-Beta4</version> + </parent> + + <artifactId>tuscany-samples-getting-started</artifactId> + <version>2.0-Beta4</version> + <packaging>pom</packaging> + <name>Apache Tuscany SCA Samples Getting Started</name> + + <modules> + <module>helloworld</module> + <module>helloworld-jaxrs</module> + <module>helloworld-jsonp</module> + <module>helloworld-jsonrpc</module> + <module>helloworld-scaclient</module> + <module>helloworld-spring</module> + <module>helloworld-webapp</module> + <module>helloworld-webservice</module> + <module>helloworld-withdeps</module> + </modules> + +</project> |