diff options
Diffstat (limited to 'sandbox/lresende/sca-1.x/samples/expertise-atom')
9 files changed, 598 insertions, 0 deletions
diff --git a/sandbox/lresende/sca-1.x/samples/expertise-atom/pom.xml b/sandbox/lresende/sca-1.x/samples/expertise-atom/pom.xml new file mode 100644 index 0000000000..54840dca7e --- /dev/null +++ b/sandbox/lresende/sca-1.x/samples/expertise-atom/pom.xml @@ -0,0 +1,96 @@ +<?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>1.7-SNAPSHOT</version> + </parent> + <artifactId>sample-expertise-atom</artifactId> + <name>Apache Tuscany SCA ATOM Expertise Locator</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca-api</artifactId> + <version>1.7-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-data-api</artifactId> + <version>1.7-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-host-embedded</artifactId> + <version>1.7-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-implementation-java-runtime</artifactId> + <version>1.7-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-implementation-widget-runtime-tuscany</artifactId> + <version>1.7-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-binding-atom-abdera</artifactId> + <version>1.7-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-binding-atom-js</artifactId> + <version>1.7-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-binding-http-runtime</artifactId> + <version>1.7-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-host-tomcat</artifactId> + <version>1.7-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + </dependencies> + + <build> + <finalName>${artifactId}</finalName> + </build> + +</project> diff --git a/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/java/org/apache/tuscany/expertise/Expert.java b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/java/org/apache/tuscany/expertise/Expert.java new file mode 100644 index 0000000000..5bc3325a18 --- /dev/null +++ b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/java/org/apache/tuscany/expertise/Expert.java @@ -0,0 +1,67 @@ +/* + * 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; + +import org.apache.tuscany.expertise.Expert; + +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-1.x/samples/expertise-atom/src/main/java/org/apache/tuscany/expertise/atom/AtomExpertiseLocator.java b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/java/org/apache/tuscany/expertise/atom/AtomExpertiseLocator.java new file mode 100644 index 0000000000..a2fde8f938 --- /dev/null +++ b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/java/org/apache/tuscany/expertise/atom/AtomExpertiseLocator.java @@ -0,0 +1,130 @@ +/* + * 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.atom; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.tuscany.expertise.Expert; +import org.apache.tuscany.sca.data.collection.Entry; +import org.apache.tuscany.sca.data.collection.NotFoundException; +import org.osoa.sca.annotations.Init; +import org.osoa.sca.annotations.Scope; + +@Scope("COMPOSITE") +public class AtomExpertiseLocator implements ExpertiseLocator { + + private Map<String, Expert> experts = new HashMap<String, Expert>(); + + @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.put(expert.getId(), expert); + + expert = new Expert(); + expert.setId("2"); + expert.setName("Ken Johnson"); + expert.setLocation("NY"); + expert.getExpertise().add("Search"); + + experts.put(expert.getId(), expert); + + expert = new Expert(); + expert.setId("3"); + expert.setName("Mark Smith"); + expert.setLocation("CA"); + expert.getExpertise().add("SCA"); + expert.getExpertise().add("WASCE"); + + experts.put(expert.getId(), expert); + } + + + public Entry<String, Expert>[] getAll() { + Entry<String, Expert>[] entries = new Entry[experts.size()]; + int i = 0; + for (Map.Entry<String, Expert> e: experts.entrySet()) { + entries[i++] = new Entry<String, Expert>(e.getKey(), e.getValue()); + } + return entries; + + } + + public Expert get(String key) throws NotFoundException { + Expert item = experts.get(key); + if (item == null) { + throw new NotFoundException(key); + } else { + return item; + } + } + + public String post(String key, Expert item) { + if (key == null) { + int size = experts.entrySet().size() + 1; + key = Integer.toString(size); + item.setId(key); + } + experts.put(key, item); + return key; + } + + public void put(String key, Expert item) throws NotFoundException { + if (!experts.containsKey(key)) { + throw new NotFoundException(key); + } + experts.put(key, item); + } + + public void delete(String key) throws NotFoundException { + if (key == null || key.equals("")) { + experts.clear(); + } else { + Expert expert = experts.remove(key); + if (expert == null) + throw new NotFoundException(key); + } + } + + public Entry<String, Expert>[] query(String queryString) { + List<Entry<String, Expert>> entries = new ArrayList<Entry<String,Expert>>(); + if (queryString.startsWith("location=")) { + String location = queryString.substring(9); + for (Map.Entry<String, Expert> e: experts.entrySet()) { + Expert expert = e.getValue(); + if (expert.getLocation().equals(location)) { + entries.add(new Entry<String, Expert>(e.getKey(), e.getValue())); + } + } + } + return entries.toArray(new Entry[entries.size()]); + } +} diff --git a/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/java/org/apache/tuscany/expertise/atom/ExpertiseLocator.java b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/java/org/apache/tuscany/expertise/atom/ExpertiseLocator.java new file mode 100644 index 0000000000..84683528cc --- /dev/null +++ b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/java/org/apache/tuscany/expertise/atom/ExpertiseLocator.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.expertise.atom; + +import org.apache.tuscany.expertise.Expert; +import org.apache.tuscany.sca.data.collection.Collection; +import org.osoa.sca.annotations.Remotable; + +@Remotable +public interface ExpertiseLocator extends Collection<String, Expert> { + +} diff --git a/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/java/org/apache/tuscany/expertise/launch/Launch.java b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/java/org/apache/tuscany/expertise/launch/Launch.java new file mode 100644 index 0000000000..eb82100092 --- /dev/null +++ b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/java/org/apache/tuscany/expertise/launch/Launch.java @@ -0,0 +1,34 @@ +/* + * 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.launch; + +import org.apache.tuscany.sca.host.embedded.SCADomain; + +public class Launch { + public static void main(String[] args) throws Exception { + System.out.println("Starting ..."); + SCADomain scaDomain = SCADomain.newInstance("atom.composite"); + System.out.println("atom.composite ready for big business !!!"); + System.in.read(); + System.out.println("Stopping ..."); + scaDomain.close(); + System.out.println(); + } +} diff --git a/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/resources/META-INF/sca-contribution.xml b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..c1e9be425c --- /dev/null +++ b/sandbox/lresende/sca-1.x/samples/expertise-atom/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://www.osoa.org/xmlns/sca/1.0" + xmlns:sample="http://sample"> + <import.java package="org.apache.tuscany.expertise"/> + + <deployable composite="sample:atom"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/resources/atom.composite b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/resources/atom.composite new file mode 100644 index 0000000000..75d04f1fe4 --- /dev/null +++ b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/resources/atom.composite @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. +--> +<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:s="http://sample" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0" name="atom" targetNamespace="http://sample"> + <component name="ExpertiseLocatorWidget"> + <t:implementation.widget location="expertLocator.html"/> + <service name="Widget"> + <t:binding.http uri="http://localhost:8100/ui"/> + </service> + <reference name="expertiseLocator" target="AtomExpertiseLocatorComponent/ExpertiseLocator"> + <t:binding.atom/> + </reference> + </component> + <component name="AtomExpertiseLocatorComponent"> + <implementation.java class="org.apache.tuscany.expertise.atom.AtomExpertiseLocator"/> + <service name="ExpertiseLocator"> + <t:binding.atom uri="http://localhost:8100/experts"/> + </service> + </component> +</composite>
\ No newline at end of file diff --git a/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/resources/atom.composite_diagram b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/resources/atom.composite_diagram new file mode 100644 index 0000000000..50c1ccf578 --- /dev/null +++ b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/resources/atom.composite_diagram @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8"?> +<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:sca="http://www.osoa.org/xmlns/sca/1.0" xmi:id="_-bz9UJT-Ed6D4MBlxOyxqQ" type="Sca" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_-cvxcJT-Ed6D4MBlxOyxqQ" type="2001"> + <children xmi:type="notation:Node" xmi:id="_-cvxc5T-Ed6D4MBlxOyxqQ" type="5008"/> + <children xmi:type="notation:Node" xmi:id="_-cwYgJT-Ed6D4MBlxOyxqQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_-cwYgZT-Ed6D4MBlxOyxqQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_-cwYgpT-Ed6D4MBlxOyxqQ"/> + </children> + <children xmi:type="notation:Node" xmi:id="_-cwYg5T-Ed6D4MBlxOyxqQ" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_-cwYhJT-Ed6D4MBlxOyxqQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_-cwYhZT-Ed6D4MBlxOyxqQ"/> + </children> + <children xmi:type="notation:Node" xmi:id="_-cwYhpT-Ed6D4MBlxOyxqQ" type="7003"> + <styles xmi:type="notation:SortingStyle" xmi:id="_-cwYh5T-Ed6D4MBlxOyxqQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_-cwYiJT-Ed6D4MBlxOyxqQ"/> + </children> + <children xmi:type="notation:Node" xmi:id="_-cwYiZT-Ed6D4MBlxOyxqQ" type="7004"> + <children xmi:type="notation:Node" xmi:id="_-cyNsJT-Ed6D4MBlxOyxqQ" type="3012"> + <children xmi:type="notation:Node" xmi:id="_-cy0wJT-Ed6D4MBlxOyxqQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_-cy0wZT-Ed6D4MBlxOyxqQ" type="7009"> + <styles xmi:type="notation:SortingStyle" xmi:id="_-cy0wpT-Ed6D4MBlxOyxqQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_-cy0w5T-Ed6D4MBlxOyxqQ"/> + </children> + <children xmi:type="notation:Node" xmi:id="_-cy0xJT-Ed6D4MBlxOyxqQ" type="7010"> + <styles xmi:type="notation:SortingStyle" xmi:id="_-cy0xZT-Ed6D4MBlxOyxqQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_-cy0xpT-Ed6D4MBlxOyxqQ"/> + </children> + <children xmi:type="notation:Node" xmi:id="_-cy0x5T-Ed6D4MBlxOyxqQ" type="7011"> + <styles xmi:type="notation:SortingStyle" xmi:id="_-cy0yJT-Ed6D4MBlxOyxqQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_-cy0yZT-Ed6D4MBlxOyxqQ"/> + </children> + <children xmi:type="notation:Node" xmi:id="_-czb0JT-Ed6D4MBlxOyxqQ" type="7012"> + <styles xmi:type="notation:SortingStyle" xmi:id="_-czb0ZT-Ed6D4MBlxOyxqQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_-czb0pT-Ed6D4MBlxOyxqQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_-cyNsZT-Ed6D4MBlxOyxqQ" fontName="Lucida Grande"/> + <element xmi:type="sca:Component" href="atom.composite#//@composite/@component.0"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-cyNspT-Ed6D4MBlxOyxqQ" x="33" y="1"/> + </children> + <children xmi:type="notation:Node" xmi:id="_-c0C4JT-Ed6D4MBlxOyxqQ" type="3012"> + <children xmi:type="notation:Node" xmi:id="_-c0p8pT-Ed6D4MBlxOyxqQ" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_-c0p85T-Ed6D4MBlxOyxqQ" type="7009"> + <styles xmi:type="notation:SortingStyle" xmi:id="_-c0p9JT-Ed6D4MBlxOyxqQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_-c0p9ZT-Ed6D4MBlxOyxqQ"/> + </children> + <children xmi:type="notation:Node" xmi:id="_-c1RAJT-Ed6D4MBlxOyxqQ" type="7010"> + <styles xmi:type="notation:SortingStyle" xmi:id="_-c1RAZT-Ed6D4MBlxOyxqQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_-c1RApT-Ed6D4MBlxOyxqQ"/> + </children> + <children xmi:type="notation:Node" xmi:id="_-c1RA5T-Ed6D4MBlxOyxqQ" type="7011"> + <styles xmi:type="notation:SortingStyle" xmi:id="_-c1RBJT-Ed6D4MBlxOyxqQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_-c1RBZT-Ed6D4MBlxOyxqQ"/> + </children> + <children xmi:type="notation:Node" xmi:id="_-c1RBpT-Ed6D4MBlxOyxqQ" type="7012"> + <styles xmi:type="notation:SortingStyle" xmi:id="_-c1RB5T-Ed6D4MBlxOyxqQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_-c1RCJT-Ed6D4MBlxOyxqQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_-c0p8JT-Ed6D4MBlxOyxqQ" fontName="Lucida Grande"/> + <element xmi:type="sca:Component" href="atom.composite#//@composite/@component.1"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-c0p8ZT-Ed6D4MBlxOyxqQ" x="249" y="1"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_-cwYipT-Ed6D4MBlxOyxqQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_-cwYi5T-Ed6D4MBlxOyxqQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_-cvxcZT-Ed6D4MBlxOyxqQ" fontName="Lucida Grande"/> + <element xmi:type="sca:Composite" href="atom.composite#//@composite"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-cvxcpT-Ed6D4MBlxOyxqQ" width="550" height="217"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_-bz9UZT-Ed6D4MBlxOyxqQ"/> + <element xmi:type="sca:DocumentRoot" href="atom.composite#/"/> +</notation:Diagram> diff --git a/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/resources/expertLocator.html b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/resources/expertLocator.html new file mode 100644 index 0000000000..22579cb0ce --- /dev/null +++ b/sandbox/lresende/sca-1.x/samples/expertise-atom/src/main/resources/expertLocator.html @@ -0,0 +1,110 @@ +<!-- + * 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> +<head> +<title>Expert Locator</title> + +<script type="text/javascript" src="expertLocator.js"></script> + +<script language="JavaScript"> + + //@Reference + var expertiseLocator = new tuscany.sca.Reference("expertiseLocator"); + + var experts; + + function expertiseLocator_getResponse(feed) { + document.getElementById("experts").innerHTML = ""; + if (feed != null) { + var entries = feed.getElementsByTagName("entry"); + var list = ""; + for (var i=0; i<entries.length; i++) { + var content = entries[i].getElementsByTagName("content")[0]; + var id = content.getElementsByTagName("id")[0].firstChild.nodeValue; + var name = content.getElementsByTagName("name")[0].firstChild.nodeValue; + var location = content.getElementsByTagName("location")[0].firstChild.nodeValue; + //var expertises = content.getElementsByTagName("expertises")[0].firstChild.nodeValue; + list += location + ' - ' + name + ' <br>'; + } + document.getElementById("experts").innerHTML = list; + } + } + + function expertiseLocator_postResponse(feed) { + expertiseLocator.get("", expertiseLocator_getResponse); + } + + function addExpert() { + var name = document.getElementById("fieldName").value; + var location = document.getElementById("fieldLocation").value; + var expertises = document.getElementById("fieldExpertises").value.split(','); + + var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title>expert</title><content type="text/xml">' + + '<Expert xmlns="http://services/">' + + '<name xmlns="">' + name + '</name>' + + '<location xmlns="">' + location + '</location>' + + '</Expert>' + '</content></entry>'; + + try { + expertiseLocator.post(entry, expertiseLocator_postResponse); + } + catch(e) { + alert(e); + } + } + + function init() { + try { + expertiseLocator.get("", expertiseLocator_getResponse); + } + catch(e) { + alert(e); + } + } + +</script> + +</head> + +<body onload="init()"> +<h1>Expertise Locator</h1> + <div> + <h2>Add new Expert</h2> + <form name="expertForm"> + Name<br/> + <input type="text" id="fieldName" name="name"/> <br/> + Location<br/> + <input type="text" id="fieldLocation" name="location"/> <br/> + Expertise <br/> + <input type="text" id="fieldExpertises" name="expertises"/> <b>separate multiple values with commas (,)</b> <br/> + <br/> + <input type="button" onClick="addExpert()" value="Submit new Expert"/> + </form> + </div> + + <div id="expertiseLocator"> + <h2>Experts</h2> + <form name="expertiseLocatorForm"> + <div id="experts" ></div> + <br> + </form> + </div> + +</body> +</html> |