Add real-time suggestion sample using a service with non-void return type. Rename the weather-webapp sample.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1127833 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3b7fe3acfa
commit
b120b4af2d
27 changed files with 530 additions and 3 deletions
|
@ -27,10 +27,10 @@
|
|||
</parent>
|
||||
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>sample-binding-comet-weather-webapp</artifactId>
|
||||
<artifactId>sample-binding-comet-multiple-response-webapp</artifactId>
|
||||
<packaging>war</packaging>
|
||||
<version>1.0</version>
|
||||
<name>Apache Tuscany SCA Sample binding.comet Weather Webapp</name>
|
||||
<name>Apache Tuscany SCA Sample binding.comet Multiple Response Webapp</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
|
@ -36,7 +36,8 @@
|
|||
<activeByDefault>true</activeByDefault>
|
||||
</activation>
|
||||
<modules>
|
||||
<module>weather-webapp</module>
|
||||
<module>single-response-webapp</module>
|
||||
<module>multiple-response-webapp</module>
|
||||
<module>pubsub-webapp</module>
|
||||
<module>chat-webapp</module>
|
||||
</modules>
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
<?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</groupId>
|
||||
<artifactId>tuscany-samples</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
<relativePath>../../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>sample-binding-comet-single-response-webapp</artifactId>
|
||||
<packaging>war</packaging>
|
||||
<version>1.0</version>
|
||||
<name>Apache Tuscany SCA Sample binding.comet Single Response Webapp</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-binding-comet-runtime</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax</groupId>
|
||||
<artifactId>javaee-web-api</artifactId>
|
||||
<version>6.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-base-runtime-pom</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
<type>pom</type>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<version>r09</version>
|
||||
<type>jar</type>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
package org.apache.tuscany.sca.sample.comet;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class Country implements Serializable {
|
||||
|
||||
private String name;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return name;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package org.apache.tuscany.sca.sample.comet;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.oasisopen.sca.annotation.Remotable;
|
||||
|
||||
@Remotable
|
||||
public interface CountryRepository {
|
||||
|
||||
List<Country> getStartingWith(String text);
|
||||
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
package org.apache.tuscany.sca.sample.comet;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.oasisopen.sca.ComponentContext;
|
||||
import org.oasisopen.sca.annotation.Constructor;
|
||||
import org.oasisopen.sca.annotation.Context;
|
||||
import org.oasisopen.sca.annotation.EagerInit;
|
||||
import org.oasisopen.sca.annotation.Init;
|
||||
import org.oasisopen.sca.annotation.Property;
|
||||
import org.oasisopen.sca.annotation.Scope;
|
||||
import org.oasisopen.sca.annotation.Service;
|
||||
|
||||
@EagerInit
|
||||
@Scope("COMPOSITE")
|
||||
@Service(CountryRepository.class)
|
||||
public class CountryRepositoryImpl implements CountryRepository {
|
||||
|
||||
@Context
|
||||
protected ComponentContext context;
|
||||
|
||||
private String fileName;
|
||||
private List<Country> countries;
|
||||
|
||||
@Constructor
|
||||
public CountryRepositoryImpl(@Property(name = "fileName") String fileName) {
|
||||
this.fileName = fileName;
|
||||
countries = new ArrayList<Country>();
|
||||
}
|
||||
|
||||
@Init
|
||||
public void start() {
|
||||
try {
|
||||
BufferedReader reader = new BufferedReader(new FileReader(fileName));
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
Country c = new Country();
|
||||
c.setName(line);
|
||||
countries.add(c);
|
||||
}
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Country> getStartingWith(String text) {
|
||||
List<Country> result = new ArrayList<Country>();
|
||||
for (Country c : countries) {
|
||||
if (c.getName().toLowerCase().startsWith(text.toLowerCase())) {
|
||||
result.add(c);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package org.apache.tuscany.sca.sample.comet;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.oasisopen.sca.annotation.Remotable;
|
||||
|
||||
@Remotable
|
||||
public interface CountryService {
|
||||
|
||||
List<Country> getCountriesStartingWith(String text);
|
||||
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package org.apache.tuscany.sca.sample.comet;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.oasisopen.sca.annotation.Reference;
|
||||
import org.oasisopen.sca.annotation.Service;
|
||||
|
||||
@Service(CountryService.class)
|
||||
public class CountryServiceImpl implements CountryService {
|
||||
|
||||
@Reference
|
||||
protected CountryRepository repository;
|
||||
|
||||
@Override
|
||||
public List<Country> getCountriesStartingWith(String text) {
|
||||
return repository.getStartingWith(text);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
Manifest-Version: 1.0
|
||||
|
|
@ -0,0 +1,195 @@
|
|||
Afghanistan
|
||||
Albania
|
||||
Algeria
|
||||
Andorra
|
||||
Angola
|
||||
Antigua & Barbuda
|
||||
Argentina
|
||||
Armenia
|
||||
Australia
|
||||
Austria
|
||||
Azerbaijan
|
||||
Bahamas
|
||||
Bahrain
|
||||
Bangladesh
|
||||
Barbados
|
||||
Belarus
|
||||
Belgium
|
||||
Belize
|
||||
Benin
|
||||
Bhutan
|
||||
Bolivia
|
||||
Bosnia & Herzegovina
|
||||
Botswana
|
||||
Brazil
|
||||
Brunei
|
||||
Bulgaria
|
||||
Burkina Faso
|
||||
Burundi
|
||||
Cambodia
|
||||
Cameroon
|
||||
Canada
|
||||
Cape Verde
|
||||
Central African Republic
|
||||
Chad
|
||||
Chile
|
||||
China
|
||||
Colombia
|
||||
Comoros
|
||||
Congo
|
||||
Congo Democratic Republic of
|
||||
Costa Rica
|
||||
Cote d'Ivoire
|
||||
Croatia
|
||||
Cuba
|
||||
Cyprus
|
||||
Czech Republic
|
||||
Denmark
|
||||
Djibouti
|
||||
Dominica
|
||||
Dominican Republic
|
||||
Ecuador
|
||||
East Timor
|
||||
Egypt
|
||||
El Salvador
|
||||
Equatorial Guinea
|
||||
Eritrea
|
||||
Estonia
|
||||
Ethiopia
|
||||
Fiji
|
||||
Finland
|
||||
France
|
||||
Gabon
|
||||
Gambia
|
||||
Georgia
|
||||
Germany
|
||||
Ghana
|
||||
Greece
|
||||
Grenada
|
||||
Guatemala
|
||||
Guinea
|
||||
Guinea-Bissau
|
||||
Guyana
|
||||
Haiti
|
||||
Honduras
|
||||
Hungary
|
||||
Iceland
|
||||
India
|
||||
Indonesia
|
||||
Iran
|
||||
Iraq
|
||||
Ireland
|
||||
Israel
|
||||
Italy
|
||||
Jamaica
|
||||
Japan
|
||||
Jordan
|
||||
Kazakhstan
|
||||
Kenya
|
||||
Kiribati
|
||||
Korea North
|
||||
Korea South
|
||||
Kosovo
|
||||
Kuwait
|
||||
Kyrgyzstan
|
||||
Laos
|
||||
Latvia
|
||||
Lebanon
|
||||
Lesotho
|
||||
Liberia
|
||||
Libya
|
||||
Liechtenstein
|
||||
Lithuania
|
||||
Luxembourg
|
||||
Macedonia
|
||||
Madagascar
|
||||
Malawi
|
||||
Malaysia
|
||||
Maldives
|
||||
Mali
|
||||
Malta
|
||||
Marshall Islands
|
||||
Mauritania
|
||||
Mauritius
|
||||
Mexico
|
||||
Micronesia
|
||||
Moldova
|
||||
Monaco
|
||||
Mongolia
|
||||
Montenegro
|
||||
Morocco
|
||||
Mozambique
|
||||
Myanmar (Burma)
|
||||
Namibia
|
||||
Nauru
|
||||
Nepal
|
||||
The Netherlands
|
||||
New Zealand
|
||||
Nicaragua
|
||||
Niger
|
||||
Nigeria
|
||||
Norway
|
||||
Oman
|
||||
Pakistan
|
||||
Palau
|
||||
Palestinian State*
|
||||
Panama
|
||||
Papua New Guinea
|
||||
Paraguay
|
||||
Peru
|
||||
The Philippines
|
||||
Poland
|
||||
Portugal
|
||||
Qatar
|
||||
Romania
|
||||
Russia
|
||||
Rwanda
|
||||
St. Kitts & Nevis
|
||||
St. Lucia
|
||||
St. Vincent & The Grenadines
|
||||
Samoa
|
||||
San Marino
|
||||
Sao Tome & Principe
|
||||
Saudi Arabia
|
||||
Senegal
|
||||
Serbia
|
||||
Seychelles
|
||||
Sierra Leone
|
||||
Singapore
|
||||
Slovakia
|
||||
Slovenia
|
||||
Solomon Islands
|
||||
Somalia
|
||||
South Africa
|
||||
Spain
|
||||
Sri Lanka
|
||||
Sudan
|
||||
Suriname
|
||||
Swaziland
|
||||
Sweden
|
||||
Switzerland
|
||||
Syria
|
||||
Taiwan
|
||||
Tajikistan
|
||||
Tanzania
|
||||
Thailand
|
||||
Togo
|
||||
Tonga
|
||||
Trinidad & Tobago
|
||||
Tunisia
|
||||
Turkey
|
||||
Turkmenistan
|
||||
Tuvalu
|
||||
Uganda
|
||||
Ukraine
|
||||
United Arab Emirates
|
||||
United Kingdom
|
||||
United States of America
|
||||
Uruguay
|
||||
Uzbekistan
|
||||
Vanuatu
|
||||
Vatican City (Holy See)
|
||||
Venezuela
|
||||
Yemen
|
||||
Zambia
|
||||
Zimbabwe
|
|
@ -0,0 +1,34 @@
|
|||
<?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"
|
||||
xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912"
|
||||
targetNamespace="http://samples" name="Chat">
|
||||
|
||||
<component name="CountryServiceComponent">
|
||||
<implementation.java
|
||||
class="org.apache.tuscany.sca.sample.comet.CountryServiceImpl" />
|
||||
<service name="CountryService">
|
||||
<interface.java interface="org.apache.tuscany.sca.sample.comet.CountryService" />
|
||||
<tuscany:binding.comet />
|
||||
</service>
|
||||
<reference name="repository" target="CountryRepositoryComponent" />
|
||||
</component>
|
||||
|
||||
<component name="CountryRepositoryComponent">
|
||||
<implementation.java
|
||||
class="org.apache.tuscany.sca.sample.comet.CountryRepositoryImpl" />
|
||||
<property name="fileName">/home/fmoga/coding/apache-tuscany/contrib/samples/learning-more/binding-comet/single-response-webapp/src/main/webapp/WEB-INF/countries.txt</property>
|
||||
</component>
|
||||
|
||||
</composite>
|
|
@ -0,0 +1,34 @@
|
|||
<?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 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:j2ee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_3.0.xsd" version="3.0">
|
||||
<display-name>Apache Tuscany Stock Comet Sample</display-name>
|
||||
<filter>
|
||||
<filter-name>tuscany</filter-name>
|
||||
<filter-class>org.apache.tuscany.sca.host.webapp.TuscanyServletFilter</filter-class>
|
||||
<async-supported>true</async-supported>
|
||||
</filter>
|
||||
<filter-mapping>
|
||||
<filter-name>tuscany</filter-name>
|
||||
<url-pattern>/*</url-pattern>
|
||||
</filter-mapping>
|
||||
<welcome-file-list>
|
||||
<welcome-file>index.html</welcome-file>
|
||||
</welcome-file-list>
|
||||
</web-app>
|
|
@ -0,0 +1,69 @@
|
|||
<!--
|
||||
* 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>Apache Tuscany Comet Sample</title>
|
||||
<!-- Tuscany Comet Javascript Toolkit is dependent on jQuery -->
|
||||
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="tuscany-comet-js/org.apache.tuscany.sca.CometComponentContext.js"></script>
|
||||
<script type="text/javascript">
|
||||
var user = "";
|
||||
|
||||
$(document).ready(function()
|
||||
{
|
||||
// Tuscany Comet specific API
|
||||
SCA.TuscanyComet.connect();
|
||||
|
||||
$("#country").keyup(function() {
|
||||
var text = $("#country").val();
|
||||
if (text != "") {
|
||||
SCA.CometComponentContext.CountryService.getCountriesStartingWith(text, callback);
|
||||
} else {
|
||||
$("#suggestions").html("");
|
||||
}
|
||||
});
|
||||
|
||||
$("#country").focus();
|
||||
});
|
||||
|
||||
function callback(response) {
|
||||
var html = '<ul>';
|
||||
$.each(response, function(index, country) {
|
||||
html += '<li>' + country.name + "</li>"
|
||||
});
|
||||
html += '</ul>'
|
||||
$("#suggestions").html(html);
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h2>Apache Tuscany Comet Sample</h2>
|
||||
<h3>Real-time suggestions</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Enter a country name</td>
|
||||
<td><input type="text" id='country'/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="suggestions">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Reference in a new issue