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; 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; import org.oasisopen.sca.annotation.Remotable;
@Remotable @Remotable
public interface HumidityService { public interface HumidityService {
String getHumidity(); Response getHumidity(Location location);
} }

View file

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

View file

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

View file

@ -1,12 +1,15 @@
package org.apache.tuscany.sca.sample.comet; 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; import org.oasisopen.sca.annotation.Remotable;
@Remotable @Remotable
public interface TemperatureService { public interface TemperatureService {
String getTemperatureCelsius(); public static final int CELSIUS = 1;
public static final int FAHRENHEIT = 2;
String getTemperatureFahrenheit();
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"> <script type="text/javascript">
$(document).ready(function() $(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) { document.getElementById('connect').onclick = function(event) {
/* transport can be : long-polling, streaming or websocket */ /* transport can be : long-polling, streaming or websocket */
tuscanyComet.connect(document.getElementById('transport').value); tuscanyComet.connect(document.getElementById('transport').value);
document.getElementById('connect').disabled = true; document.getElementById('connect').disabled = true;
document.getElementById('transport').disabled = true; document.getElementById('transport').disabled = true;
document.getElementById('locationButton').disabled = false;
} }
document.getElementById('tempCButton').onclick = function(event) { document.getElementById('tempCButton').onclick = function(event) {
cometComponentContext.c1.TemperatureService.getTemperatureCelsius(updateTempC); cometComponentContext.TemperatureService.getTemperature(location, 1, updateTempC);
} }
document.getElementById('tempFButton').onclick = function(event) { document.getElementById('tempFButton').onclick = function(event) {
cometComponentContext.c1.TemperatureService.getTemperatureFahrenheit(updateTempF); cometComponentContext.TemperatureService.getTemperature(location, 2, updateTempF);
} }
document.getElementById('humButton').onclick = function(event) { document.getElementById('humButton').onclick = function(event) {
cometComponentContext.c1.HumidityService.getHumidity(updateHum); cometComponentContext.HumidityService.getHumidity(location, updateHum);
} }
document.getElementById('precipButton').onclick = function(event) { document.getElementById('precipButton').onclick = function(event) {
cometComponentContext.c2.PrecipitationService.getPrecipitation(updatePrecip); cometComponentContext.PrecipitationService.getPrecipitation(location, updatePrecip);
} }
}); });
function updateTempC(response) { function updateTempC(response) {
document.getElementById('tempCText').textContent = response; document.getElementById('tempCText').textContent = response.data;
document.getElementById('tempCDate').textContent = response.date;
} }
function updateTempF(response) { function updateTempF(response) {
document.getElementById('tempFText').textContent = response; document.getElementById('tempFText').textContent = response.data;
document.getElementById('tempFDate').textContent = response.date;
} }
function updateHum(response) { function updateHum(response) {
document.getElementById('humText').textContent = response; document.getElementById('humText').textContent = response.data;
document.getElementById('humDate').textContent = response.date;
} }
function updatePrecip(response) { function updatePrecip(response) {
document.getElementById('precipText').textContent = response; document.getElementById('precipText').textContent = response.data;
document.getElementById('precipDate').textContent = response.date;
} }
</script> </script>
</head> </head>
<body> <body>
<div id='sidebar'>
<h2>Apache Tuscany Comet Sample</h2> <h2>Apache Tuscany Comet Sample</h2>
<label>Select transport</label> <label>Select transport</label>
<select id="transport"> <select id="transport">
@ -76,27 +113,44 @@
<input id='connect' type='submit' value='Connect'/> <input id='connect' type='submit' value='Connect'/>
<h3>Weather Monitor</h3> <h3>Weather Monitor</h3>
<p/> <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> <table>
<tr> <tr>
<th align="left">Temperature (Celsius):</th> <th align="left">Temperature (Celsius):</th>
<td><span id='tempCText'>N/A</span></td> <td><span id='tempCText'>N/A</span></td>
<td><input type='button' id='tempCButton' value="Update"/></td> <td><input type='button' id='tempCButton' value="Update"/></td>
<td><span id='tempCDate'></span>
</tr> </tr>
<tr> <tr>
<th align="left">Temperature (Fahrenheit):</th> <th align="left">Temperature (Fahrenheit):</th>
<td><span id='tempFText'>N/A</span></td> <td><span id='tempFText'>N/A</span></td>
<td><input type='button' id='tempFButton' value="Update"/></td> <td><input type='button' id='tempFButton' value="Update"/></td>
<td><span id='tempFDate'></span>
</tr> </tr>
<tr> <tr>
<th align="left">Humidity:</th> <th align="left">Humidity:</th>
<td><span id='humText'>N/A</span></td> <td><span id='humText'>N/A</span></td>
<td><input type='button' id='humButton' value="Update"/></td> <td><input type='button' id='humButton' value="Update"/></td>
<td><span id='humDate'></span>
</tr> </tr>
<tr> <tr>
<th align="left">Precipitation probability:</th> <th align="left">Precipitation probability:</th>
<td><span id='precipText'>N/A</span></td> <td><span id='precipText'>N/A</span></td>
<td><input type='button' id='precipButton' value="Update"/></td> <td><input type='button' id='precipButton' value="Update"/></td>
<td><span id='precipDate'></span>
</tr> </tr>
</table> </table>
</div>
</body> </body>
</html> </html>