diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-10-05 17:57:15 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-10-05 17:57:15 +0000 |
commit | 194369b022823a4c869c0018222b2ee9360169d9 (patch) | |
tree | a92e5b52fd3960d6f2c44e3175ef8568a21a7f1f /sandbox/lresende/sca/samples/expertise-rest-appengine-webapp | |
parent | ffc889e69a078e968d730a5b689b178408cdebe6 (diff) |
Tuscany expertise REST service appengine sample application
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@821941 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sandbox/lresende/sca/samples/expertise-rest-appengine-webapp')
23 files changed, 690 insertions, 0 deletions
diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.classpath b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.classpath new file mode 100644 index 0000000000..ccc7355a00 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.classpath @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="com.google.appengine.eclipse.core.GAE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="lib" path="war/WEB-INF/lib/tuscany-sca-api-2.0-SNAPSHOT.jar"/> + <classpathentry kind="output" path="war/WEB-INF/classes"/> +</classpath> + diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.project b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.project new file mode 100644 index 0000000000..22c776f675 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.project @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>expertise-rest-appengine-webapp</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.google.appengine.eclipse.core.enhancerbuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.google.appengine.eclipse.core.projectValidator</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.google.gdt.eclipse.core.webAppProjectValidator</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>com.google.appengine.eclipse.core.gaeNature</nature> + <nature>com.google.gdt.eclipse.core.webAppNature</nature> + </natures> +</projectDescription> diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.settings/com.google.appengine.eclipse.core.prefs b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.settings/com.google.appengine.eclipse.core.prefs new file mode 100644 index 0000000000..4cb9799348 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.settings/com.google.appengine.eclipse.core.prefs @@ -0,0 +1,3 @@ +#Mon Sep 21 17:52:18 PDT 2009 +eclipse.preferences.version=1 +filesCopiedToWebInfLib=appengine-api-1.0-sdk-1.2.5.jar|appengine-api-labs-1.2.5.jar|datanucleus-appengine-1.0.3.jar|datanucleus-core-1.1.5.jar|datanucleus-jpa-1.1.5.jar|geronimo-jpa_3.0_spec-1.1.1.jar|geronimo-jta_1.1_spec-1.1.1.jar|jdo2-api-2.3-eb.jar diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.settings/com.google.gdt.eclipse.core.prefs b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.settings/com.google.gdt.eclipse.core.prefs new file mode 100644 index 0000000000..9fc852536a --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.settings/com.google.gdt.eclipse.core.prefs @@ -0,0 +1,3 @@ +#Mon Sep 21 18:15:57 PDT 2009 +eclipse.preferences.version=1 +jarsExcludedFromWebInfLib= diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.settings/com.google.gwt.eclipse.core.prefs b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.settings/com.google.gwt.eclipse.core.prefs new file mode 100644 index 0000000000..2d3aa6f07f --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/.settings/com.google.gwt.eclipse.core.prefs @@ -0,0 +1,3 @@ +#Mon Sep 21 18:15:57 PDT 2009 +eclipse.preferences.version=1 +filesCopiedToWebInfLib= diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/pom.xml b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/pom.xml new file mode 100644 index 0000000000..38781fc649 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/pom.xml @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>2.0-SNAPSHOT</version> + <relativePath>../pom.xml</relativePath> + </parent> + <artifactId>expertise-rest-appengine-webapp</artifactId> + <packaging>war</packaging> + <name>Apache Tuscany SCA RESTFull Expertise Locator</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca-api</artifactId> + <version>2.0-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-implementation-java-runtime</artifactId> + <version>2.0-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-binding-http-runtime</artifactId> + <version>2.0-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-host-webapp</artifactId> + <version>2.0-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + <version>2.5</version> + <scope>provided</scope> + </dependency> + </dependencies> + + <build> + <finalName>${artifactId}</finalName> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-eclipse-plugin</artifactId> + <configuration> + <projectnatures> + <projectnature>org.eclipse.jdt.core.javanature</projectnature> + <projectnature>com.google.appengine.eclipse.core.gaeNature</projectnature> + <projectnature>com.google.gdt.eclipse.core.webAppNature</projectnature> + </projectnatures> + <buildcommands> + <buildCommand>org.eclipse.jdt.core.javabuilder</buildCommand> + <buildCommand>com.google.appengine.eclipse.core.enhancerbuilder</buildCommand> + <buildCommand>com.google.appengine.eclipse.core.projectValidator> </buildCommand> + <buildCommand>com.google.gdt.eclipse.core.webAppProjectValidator> </buildCommand> + </buildcommands> + <classpathContainers> + <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer> + <classpathContainer>com.google.appengine.eclipse.core.GAE_CONTAINER</classpathContainer> + </classpathContainers> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <version>2.1</version> + <executions> + <execution> + <id>copy-dependencies</id> + <phase>process-sources</phase> + <goals> + <goal>copy-dependencies</goal> + </goals> + <configuration> + <outputDirectory>war/WEB-INF/lib</outputDirectory> + <overWriteIfNewer>true</overWriteIfNewer> + </configuration> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-war-plugin</artifactId> + <version>2.1-beta-1</version> + <configuration> + <warSourceDirectory>war</warSourceDirectory> + </configuration> + </plugin> + </plugins> + </build> + +</project> diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/log4j.properties b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/log4j.properties new file mode 100644 index 0000000000..d9c3edc9fe --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/log4j.properties @@ -0,0 +1,24 @@ +# A default log4j configuration for log4j users. +# +# To use this configuration, deploy it into your application's WEB-INF/classes +# directory. You are also encouraged to edit it as you like. + +# Configure the console as our one appender +log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%c] - %m%n + +# tighten logging on the DataNucleus Categories +log4j.category.DataNucleus.JDO=WARN, A1 +log4j.category.DataNucleus.Persistence=WARN, A1 +log4j.category.DataNucleus.Cache=WARN, A1 +log4j.category.DataNucleus.MetaData=WARN, A1 +log4j.category.DataNucleus.General=WARN, A1 +log4j.category.DataNucleus.Utility=WARN, A1 +log4j.category.DataNucleus.Transaction=WARN, A1 +log4j.category.DataNucleus.Datastore=WARN, A1 +log4j.category.DataNucleus.ClassLoading=WARN, A1 +log4j.category.DataNucleus.Plugin=WARN, A1 +log4j.category.DataNucleus.ValueGeneration=WARN, A1 +log4j.category.DataNucleus.Enhancer=WARN, A1 +log4j.category.DataNucleus.SchemaTool=WARN, A1 diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/org/apache/tuscany/expertise/Expert.java b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/org/apache/tuscany/expertise/Expert.java new file mode 100644 index 0000000000..61ac1c12b7 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/org/apache/tuscany/expertise/Expert.java @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.expertise; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +public class Expert implements Serializable { + private static final long serialVersionUID = 2026687637313310397L; + + private String id; + private String name; + private String location; + private List<String> expertises = new ArrayList<String>(); + + public Expert() { + + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public List<String> getExpertise() { + return this.expertises; + } +} diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/org/apache/tuscany/expertise/restfull/ExpertRegistry.java b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/org/apache/tuscany/expertise/restfull/ExpertRegistry.java new file mode 100644 index 0000000000..04dc7424a6 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/org/apache/tuscany/expertise/restfull/ExpertRegistry.java @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.expertise.restfull; + +import java.util.List; + +import org.apache.tuscany.expertise.Expert; + +public interface ExpertRegistry { + + void addExpert(Expert expert); + + void removeExpert(Expert expert); + + List<Expert> getExperts(); + + List<Expert> getExpertsByExpertise(String expertise); +}
\ No newline at end of file diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/org/apache/tuscany/expertise/restfull/ExpertRegistryImpl.java b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/org/apache/tuscany/expertise/restfull/ExpertRegistryImpl.java new file mode 100644 index 0000000000..800dc101a0 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/org/apache/tuscany/expertise/restfull/ExpertRegistryImpl.java @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.expertise.restfull; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.tuscany.expertise.Expert; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Service; + +@Service(ExpertRegistry.class) +public class ExpertRegistryImpl implements ExpertRegistry { + private List<Expert> experts = new ArrayList<Expert>(); + + public ExpertRegistryImpl() { + + } + + @Init + public void init() { + Expert expert; + + expert = new Expert(); + expert.setId("1"); + expert.setName("John Smith"); + expert.setLocation("CA"); + expert.getExpertise().add("SOA"); + expert.getExpertise().add("SCA"); + expert.getExpertise().add("WAS"); + + experts.add(expert); + + expert = new Expert(); + expert.setId("2"); + expert.setName("Ken Johnson"); + expert.setLocation("NY"); + expert.getExpertise().add("Search"); + + experts.add(expert); + + expert = new Expert(); + expert.setId("3"); + expert.setName("Mark Smith"); + expert.setLocation("CA"); + expert.getExpertise().add("SCA"); + expert.getExpertise().add("WASCE"); + + experts.add(expert); + } + + public void addExpert(Expert expert) { + experts.add(expert); + } + + public void removeExpert(Expert expert) { + experts.remove(expert); + } + + public List<Expert> getExperts() { + return experts; + } + + public List<Expert> getExpertsByExpertise(String expertise) { + List<Expert> expertsByExpertise = new ArrayList<Expert>(); + + for (Expert expert : experts) { + if (expert.getExpertise().contains(expertise)) { + expertsByExpertise.add(expert); + } + } + + return expertsByExpertise; + } +} diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/org/apache/tuscany/expertise/restfull/RestfulExpertiseLocator.java b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/org/apache/tuscany/expertise/restfull/RestfulExpertiseLocator.java new file mode 100644 index 0000000000..73828c639f --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/org/apache/tuscany/expertise/restfull/RestfulExpertiseLocator.java @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.expertise.restfull; + +import java.io.IOException; +import java.net.URLDecoder; +import java.util.List; + +import javax.servlet.Servlet; +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.tuscany.expertise.Expert; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(Servlet.class) +@Scope("COMPOSITE") +public class RestfulExpertiseLocator extends HttpServlet implements Servlet { + + private static final long serialVersionUID = 4021701701436888369L; + + @Reference + protected ExpertRegistry experts; + + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String path = URLDecoder.decode(getRequestPath(request), "UTF-8"); + String expertise = path.substring(1); + + if (expertise != null && expertise.length() > 0 ) { + printExperts(response.getOutputStream(), experts.getExpertsByExpertise(expertise)); + } else { + printExperts(response.getOutputStream(), experts.getExperts()); + } + + } + + + private void printExperts(ServletOutputStream out, List<Expert> experts) throws IOException { + out.print("<html><body>"); + out.print("<h2>Expertise Locator</h2>"); + + if (experts.size() > 0) { + for (Expert expert: experts) { + out.print("<b>Location:</b> " + expert.getLocation() + " - " + expert.getName() +" ==> "); + for (String expertise : expert.getExpertise()) { + out.print(expertise + ";"); + } + out.print("<br/>"); + } + } else { + out.println("No experts found"); + } + out.print("</body></html>"); + } + + /** + * + * @param request + * @return + */ + private static String getRequestPath(HttpServletRequest request) { + // Get the request path + String contextPath = request.getContextPath(); + String servletPath = request.getServletPath(); + String requestURI = request.getRequestURI(); + + int contextPathLength = request.getContextPath().length(); + int servletPathLenght = servletPath.contains(contextPath) ? servletPath.length() - contextPath.length() : servletPath.length(); + + String requestPath = requestURI.substring(contextPathLength + servletPathLenght); + + if (requestURI.startsWith("/")) { + requestPath = requestPath.substring(1); + } + + return requestPath; + } + + +} diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/rest.composite b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/rest.composite new file mode 100644 index 0000000000..9e32209a18 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/src/rest.composite @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. +--> +<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903" + xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1" + targetNamespace="http://sample" + xmlns:s="http://sample" + name="rest" > + <component name="ExpertRegistryComponent"> + <implementation.java class="org.apache.tuscany.expertise.restfull.ExpertRegistryImpl"/> + <service name="ExpertRegistry"> + <interface.java interface="org.apache.tuscany.expertise.restfull.ExpertRegistry"/> + </service> + </component> + <component name="RestExpertiseLocatorComponent"> + <implementation.java class="org.apache.tuscany.expertise.restfull.RestfulExpertiseLocator"/> + <service name="Servlet"> + <tuscany:binding.http uri="/experts"/> + </service> + <reference name="experts" target="ExpertRegistryComponent"/> + </component> +</composite>
\ No newline at end of file diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/META-INF/sca-contribution.xml b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..13eb0dbc2b --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/META-INF/sca-contribution.xml @@ -0,0 +1,24 @@ +<?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/200903" + xmlns:sample="http://sample"> + + <deployable composite="sample:rest"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/appengine-web.xml b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/appengine-web.xml new file mode 100644 index 0000000000..42e4330edf --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/appengine-web.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> + <application>scaapps</application> + <version>1</version> + + <!-- Configure java.util.logging --> + <system-properties> + <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/> + </system-properties> + +</appengine-web-app>
\ No newline at end of file diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/log4j.properties b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/log4j.properties new file mode 100644 index 0000000000..d9c3edc9fe --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/log4j.properties @@ -0,0 +1,24 @@ +# A default log4j configuration for log4j users. +# +# To use this configuration, deploy it into your application's WEB-INF/classes +# directory. You are also encouraged to edit it as you like. + +# Configure the console as our one appender +log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%c] - %m%n + +# tighten logging on the DataNucleus Categories +log4j.category.DataNucleus.JDO=WARN, A1 +log4j.category.DataNucleus.Persistence=WARN, A1 +log4j.category.DataNucleus.Cache=WARN, A1 +log4j.category.DataNucleus.MetaData=WARN, A1 +log4j.category.DataNucleus.General=WARN, A1 +log4j.category.DataNucleus.Utility=WARN, A1 +log4j.category.DataNucleus.Transaction=WARN, A1 +log4j.category.DataNucleus.Datastore=WARN, A1 +log4j.category.DataNucleus.ClassLoading=WARN, A1 +log4j.category.DataNucleus.Plugin=WARN, A1 +log4j.category.DataNucleus.ValueGeneration=WARN, A1 +log4j.category.DataNucleus.Enhancer=WARN, A1 +log4j.category.DataNucleus.SchemaTool=WARN, A1 diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/org/apache/tuscany/expertise/Expert.class b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/org/apache/tuscany/expertise/Expert.class Binary files differnew file mode 100644 index 0000000000..b814e12956 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/org/apache/tuscany/expertise/Expert.class diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/org/apache/tuscany/expertise/restfull/ExpertRegistry.class b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/org/apache/tuscany/expertise/restfull/ExpertRegistry.class Binary files differnew file mode 100644 index 0000000000..9cb8566552 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/org/apache/tuscany/expertise/restfull/ExpertRegistry.class diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/org/apache/tuscany/expertise/restfull/ExpertRegistryImpl.class b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/org/apache/tuscany/expertise/restfull/ExpertRegistryImpl.class Binary files differnew file mode 100644 index 0000000000..2bbf290930 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/org/apache/tuscany/expertise/restfull/ExpertRegistryImpl.class diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/org/apache/tuscany/expertise/restfull/RestfulExpertiseLocator.class b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/org/apache/tuscany/expertise/restfull/RestfulExpertiseLocator.class Binary files differnew file mode 100644 index 0000000000..67f5ca9cc7 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/org/apache/tuscany/expertise/restfull/RestfulExpertiseLocator.class diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/rest.composite b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/rest.composite new file mode 100644 index 0000000000..9e32209a18 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/classes/rest.composite @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. +--> +<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903" + xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1" + targetNamespace="http://sample" + xmlns:s="http://sample" + name="rest" > + <component name="ExpertRegistryComponent"> + <implementation.java class="org.apache.tuscany.expertise.restfull.ExpertRegistryImpl"/> + <service name="ExpertRegistry"> + <interface.java interface="org.apache.tuscany.expertise.restfull.ExpertRegistry"/> + </service> + </component> + <component name="RestExpertiseLocatorComponent"> + <implementation.java class="org.apache.tuscany.expertise.restfull.RestfulExpertiseLocator"/> + <service name="Servlet"> + <tuscany:binding.http uri="/experts"/> + </service> + <reference name="experts" target="ExpertRegistryComponent"/> + </component> +</composite>
\ No newline at end of file diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/logging.properties b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/logging.properties new file mode 100644 index 0000000000..4a78b7f353 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/logging.properties @@ -0,0 +1,28 @@ +# A default java.util.logging configuration. +# (All App Engine logging is through java.util.logging by default). +# +# To use this configuration, copy it into your application's WEB-INF +# folder and add the following to your appengine-web.xml: +# +# <system-properties> +# <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/> +# </system-properties> +# + +# Set the default logging level for all loggers to WARNING +.level = WARNING + +# Set the default logging level for ORM, specifically, to WARNING +DataNucleus.JDO.level=WARNING +DataNucleus.Persistence.level=WARNING +DataNucleus.Cache.level=WARNING +DataNucleus.MetaData.level=WARNING +DataNucleus.General.level=WARNING +DataNucleus.Utility.level=WARNING +DataNucleus.Transaction.level=WARNING +DataNucleus.Datastore.level=WARNING +DataNucleus.ClassLoading.level=WARNING +DataNucleus.Plugin.level=WARNING +DataNucleus.ValueGeneration.level=WARNING +DataNucleus.Enhancer.level=WARNING +DataNucleus.SchemaTool.level=WARNING diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/web.xml b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/web.xml new file mode 100644 index 0000000000..ddfd262176 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/WEB-INF/web.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE web-app + PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" + "http://java.sun.com/dtd/web-app_2_3.dtd"> + +<web-app> + + <!-- Tuscany Filter --> + <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> + + <!-- Default page to serve --> + <welcome-file-list> + <welcome-file>index.html</welcome-file> + </welcome-file-list> + +</web-app> diff --git a/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/index.html b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/index.html new file mode 100644 index 0000000000..9c151de2c0 --- /dev/null +++ b/sandbox/lresende/sca/samples/expertise-rest-appengine-webapp/war/index.html @@ -0,0 +1,10 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>Insert title here</title> +</head> +<body> +Tuscany Restfull Application +</body> +</html>
\ No newline at end of file |