Updated sample to use generated proxies and json for parameters.

git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@985623 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
fmoga 2010-08-15 07:29:14 +00:00
commit ff685fc668
9 changed files with 158 additions and 28 deletions

View file

@ -0,0 +1,12 @@
package org.apache.tuscany.sca.sample.comet;
import java.util.Date;
import java.util.Random;
public class Helper {
public static int randomInt(int max) {
return (new Random(new Date().getTime()).nextInt(100));
}
}

View file

@ -1,10 +1,12 @@
package org.apache.tuscany.sca.sample.comet;
import org.apache.tuscany.sca.sample.comet.model.Location;
import org.apache.tuscany.sca.sample.comet.model.Response;
import org.oasisopen.sca.annotation.Remotable;
@Remotable
public interface HumidityService {
String getHumidity();
Response getHumidity(Location location);
}

View file

@ -1,10 +1,12 @@
package org.apache.tuscany.sca.sample.comet;
import org.apache.tuscany.sca.sample.comet.model.Location;
import org.apache.tuscany.sca.sample.comet.model.Response;
import org.oasisopen.sca.annotation.Remotable;
@Remotable
public interface PrecipitationService {
String getPrecipitation();
Response getPrecipitation(Location location);
}

View file

@ -1,16 +1,20 @@
package org.apache.tuscany.sca.sample.comet;
import java.util.Date;
import java.util.Random;
import org.apache.tuscany.sca.sample.comet.model.Location;
import org.apache.tuscany.sca.sample.comet.model.Response;
import org.oasisopen.sca.annotation.Service;
@Service(PrecipitationService.class)
public class PrecipitationServiceImpl implements PrecipitationService {
@Override
public String getPrecipitation() {
return (new Random(new Date().getTime()).nextInt(100)) + "%";
public Response getPrecipitation(Location location) {
Response response = new Response();
response.setDate(new Date());
response.setData(Helper.randomInt(100) + "%");
return response;
}
}

View file

@ -1,26 +1,29 @@
package org.apache.tuscany.sca.sample.comet;
import java.util.Date;
import java.util.Random;
import org.apache.tuscany.sca.sample.comet.model.Location;
import org.apache.tuscany.sca.sample.comet.model.Response;
import org.oasisopen.sca.annotation.Service;
@Service({TemperatureService.class, HumidityService.class})
public class TemperatureHumidityServiceImpl implements TemperatureService, HumidityService {
@Override
public String getHumidity() {
return (new Random(new Date().getTime()).nextInt(100)) + "%";
public Response getHumidity(Location location) {
Response response = new Response();
response.setDate(new Date());
response.setData(Helper.randomInt(90) + "%");
return response;
}
@Override
public String getTemperatureCelsius() {
return "" + (new Random(new Date().getTime()).nextInt(40));
}
@Override
public String getTemperatureFahrenheit() {
return "" + (new Random(new Date().getTime()).nextInt(200));
public Response getTemperature(Location location, int scale) {
Response response = new Response();
response.setDate(new Date());
String data = "" + Helper.randomInt(scale == CELSIUS ? 40 : 150);
response.setData(data);
return response;
}
}

View file

@ -1,12 +1,15 @@
package org.apache.tuscany.sca.sample.comet;
import org.apache.tuscany.sca.sample.comet.model.Location;
import org.apache.tuscany.sca.sample.comet.model.Response;
import org.oasisopen.sca.annotation.Remotable;
@Remotable
public interface TemperatureService {
String getTemperatureCelsius();
String getTemperatureFahrenheit();
public static final int CELSIUS = 1;
public static final int FAHRENHEIT = 2;
Response getTemperature(Location location, int scale);
}

View file

@ -0,0 +1,24 @@
package org.apache.tuscany.sca.sample.comet.model;
public class Location {
private String city;
private String country;
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}

View file

@ -0,0 +1,26 @@
package org.apache.tuscany.sca.sample.comet.model;
import java.util.Date;
public class Response {
private Date date;
private String data;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}

View file

@ -23,49 +23,86 @@
<script type="text/javascript">
$(document).ready(function()
{
// Initialization
var location = new Object();
location.city = null;
location.country = null;
document.getElementById('locationButton').disabled = true;
document.getElementById('tempCButton').disabled = true;
document.getElementById('tempFButton').disabled = true;
document.getElementById('humButton').disabled = true;
document.getElementById('precipButton').disabled = true;
document.getElementById('locationButton').onclick = function(event) {
location.city = document.getElementById('city').value;
location.country = document.getElementById('country').value;
document.getElementById('locationButton').value = 'Switch location';
document.getElementById('tempCButton').disabled = false;
document.getElementById('tempFButton').disabled = false;
document.getElementById('humButton').disabled = false;
document.getElementById('precipButton').disabled = false;
document.getElementById('tempCText').textContent = 'N/A';
document.getElementById('tempCDate').textContent = '';
document.getElementById('tempFText').textContent = 'N/A';
document.getElementById('tempFDate').textContent = '';
document.getElementById('humText').textContent = 'N/A';
document.getElementById('humDate').textContent = '';
document.getElementById('precipText').textContent = 'N/A';
document.getElementById('precipDate').textContent = '';
}
// Tuscany Comet specific API
document.getElementById('connect').onclick = function(event) {
/* transport can be : long-polling, streaming or websocket */
tuscanyComet.connect(document.getElementById('transport').value);
document.getElementById('connect').disabled = true;
document.getElementById('transport').disabled = true;
document.getElementById('locationButton').disabled = false;
}
document.getElementById('tempCButton').onclick = function(event) {
cometComponentContext.c1.TemperatureService.getTemperatureCelsius(updateTempC);
cometComponentContext.TemperatureService.getTemperature(location, 1, updateTempC);
}
document.getElementById('tempFButton').onclick = function(event) {
cometComponentContext.c1.TemperatureService.getTemperatureFahrenheit(updateTempF);
cometComponentContext.TemperatureService.getTemperature(location, 2, updateTempF);
}
document.getElementById('humButton').onclick = function(event) {
cometComponentContext.c1.HumidityService.getHumidity(updateHum);
cometComponentContext.HumidityService.getHumidity(location, updateHum);
}
document.getElementById('precipButton').onclick = function(event) {
cometComponentContext.c2.PrecipitationService.getPrecipitation(updatePrecip);
cometComponentContext.PrecipitationService.getPrecipitation(location, updatePrecip);
}
});
function updateTempC(response) {
document.getElementById('tempCText').textContent = response;
document.getElementById('tempCText').textContent = response.data;
document.getElementById('tempCDate').textContent = response.date;
}
function updateTempF(response) {
document.getElementById('tempFText').textContent = response;
document.getElementById('tempFText').textContent = response.data;
document.getElementById('tempFDate').textContent = response.date;
}
function updateHum(response) {
document.getElementById('humText').textContent = response;
document.getElementById('humText').textContent = response.data;
document.getElementById('humDate').textContent = response.date;
}
function updatePrecip(response) {
document.getElementById('precipText').textContent = response;
document.getElementById('precipText').textContent = response.data;
document.getElementById('precipDate').textContent = response.date;
}
</script>
</head>
<body>
<div id='sidebar'>
<h2>Apache Tuscany Comet Sample</h2>
<label>Select transport</label>
<select id="transport">
@ -76,27 +113,44 @@
<input id='connect' type='submit' value='Connect'/>
<h3>Weather Monitor</h3>
<p/>
<table>
<tr>
<td>City</td>
<td><input type="text" id='city'/></td>
</tr>
<tr>
<td>Country</td>
<td><input type="text" id ='country'/></td>
</tr>
</table>
<input type="button" id='locationButton' value='Set location'/>
<p/>
<table>
<tr>
<th align="left">Temperature (Celsius):</th>
<td><span id='tempCText'>N/A</span></td>
<td><input type='button' id='tempCButton' value="Update"/></td>
<td><span id='tempCDate'></span>
</tr>
<tr>
<th align="left">Temperature (Fahrenheit):</th>
<td><span id='tempFText'>N/A</span></td>
<td><input type='button' id='tempFButton' value="Update"/></td>
<td><span id='tempFDate'></span>
</tr>
<tr>
<th align="left">Humidity:</th>
<td><span id='humText'>N/A</span></td>
<td><input type='button' id='humButton' value="Update"/></td>
<td><span id='humDate'></span>
</tr>
<tr>
<th align="left">Precipitation probability:</th>
<td><span id='precipText'>N/A</span></td>
<td><input type='button' id='precipButton' value="Update"/></td>
<td><span id='precipDate'></span>
</tr>
</table>
</div>
</body>
</html>