Author: lresende
Date: Thu Apr 5 23:19:16 2012
New Revision: 1310128
URL: http://svn.apache.org/viewvc?rev=1310128&view=rev
Log:
Enhancing manageable interface, going back to manage all resources via sca, as
resource programming model is getting too complicated and this should be easy
for developers
Added:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/Manageable.java
(contents, props changed)
- copied, changed from r1309527,
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableService.java
Removed:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableResource.java
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableService.java
Modified:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResource.java
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/impl/DomainAssetManagerResourceImpl.java
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResourceTestCase.java
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyLongRunningResourceImpl.java
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyResourceImpl.java
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/resources/node-asset-manager-test.composite
Modified:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResource.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResource.java?rev=1310128&r1=1310127&r2=1310128&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResource.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResource.java
Thu Apr 5 23:19:16 2012
@@ -30,12 +30,7 @@ import org.oasisopen.sca.annotation.Remo
@Remotable
@Path("")
-public interface DomainAssetManagerResource {
-
- @GET
- @Path("{domainURI}/resources/status")
- List<Status> getResourceStatus(@PathParam("domainURI")
@DefaultValue("default") String domainURI);
-
+public interface DomainAssetManagerResource {
@GET
@Path("{domainURI}/services/status")
Copied:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/Manageable.java
(from r1309527,
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableService.java)
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/Manageable.java?p2=tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/Manageable.java&p1=tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableService.java&r1=1309527&r2=1310128&rev=1310128&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableService.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/Manageable.java
Thu Apr 5 23:19:16 2012
@@ -22,7 +22,7 @@ package org.apache.tuscany.sca.node.mana
import org.oasisopen.sca.annotation.Remotable;
@Remotable
-public interface ManageableService {
+public interface Manageable {
/**
* isAlive method that allow service to be managed
Propchange:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/Manageable.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/Manageable.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/impl/DomainAssetManagerResourceImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/impl/DomainAssetManagerResourceImpl.java?rev=1310128&r1=1310127&r2=1310128&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/impl/DomainAssetManagerResourceImpl.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/impl/DomainAssetManagerResourceImpl.java
Thu Apr 5 23:19:16 2012
@@ -19,7 +19,6 @@
package org.apache.tuscany.sca.node.manager.impl;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -31,25 +30,15 @@ import javax.ws.rs.DefaultValue;
import javax.ws.rs.PathParam;
import javax.ws.rs.WebApplicationException;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.tuscany.sca.assembly.Binding;
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.Service;
-import org.apache.tuscany.sca.binding.rest.RESTBinding;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.host.http.client.HttpClientFactory;
import org.apache.tuscany.sca.interfacedef.Interface;
import org.apache.tuscany.sca.node.Node;
import org.apache.tuscany.sca.node.extensibility.NodeActivator;
import org.apache.tuscany.sca.node.extensibility.NodeExtension;
import org.apache.tuscany.sca.node.manager.DomainAssetManagerResource;
-import org.apache.tuscany.sca.node.manager.ManageableResource;
-import org.apache.tuscany.sca.node.manager.ManageableService;
+import org.apache.tuscany.sca.node.manager.Manageable;
import org.apache.tuscany.sca.node.manager.Status;
import org.oasisopen.sca.annotation.Init;
import org.oasisopen.sca.annotation.Property;
@@ -59,8 +48,6 @@ import org.oasisopen.sca.annotation.Scop
public class DomainAssetManagerResourceImpl implements NodeActivator,
DomainAssetManagerResource {
private static Map<String, NodeExtension> nodeMap = new
ConcurrentHashMap<String,NodeExtension>();
- private HttpClientFactory httpClientFactory;
-
@Property
private int warningTreshold;
@@ -87,81 +74,6 @@ public class DomainAssetManagerResourceI
System.out.println(" - Critical threshold : " + criticalTreshold + "
ms");
System.out.println(" - Unavailable threshold : " +
unavailableTreshold + " ms");
- NodeExtension node = (NodeExtension)
nodeMap.values().iterator().next();
- if(node != null) {
- ExtensionPointRegistry extensionPoints =
node.getExtensionPointRegistry();
- FactoryExtensionPoint modelFactories =
extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
- this.httpClientFactory =
HttpClientFactory.getInstance(extensionPoints);
- }
- }
-
- @Override
- public List<Status> getResourceStatus(@PathParam("domainURI")
@DefaultValue("default") String domainURI) {
- if( ! nodeMap.containsKey(domainURI)) {
- throw new WebApplicationException(404);
- }
-
- NodeExtension node = nodeMap.get(domainURI);
- Composite domainComposite = node.getDomainComposite();
-
- List<Status> statuses = new ArrayList<Status>();
- for(Component component : domainComposite.getComponents()) {
- for(Service service : component.getServices()) {
- Interface interfaceContract =
service.getInterfaceContract().getInterface();
-
if(ManageableResource.class.getName().equals(interfaceContract.toString())) {
-
- //the simple case, the resource is directly exposed with
rest binding
- Binding binding = service.getBinding(RESTBinding.class);
- if(binding == null) {
- //the resource is available via some other interface
- //(e.g. service implements resource,
manageableResource interfaces)
- for(Service s : component.getServices()) {
- binding = s.getBinding(RESTBinding.class);
- if(binding != null) {
- break;
- }
- }
- }
-
- if(binding == null) {
- //WARNING that the manageableResource is not exposed
via rest binding
- }
-
- if(binding != null) {
-
- Status status = new Status();
- status.setName(component.getName());
- status.setUri(binding.getURI());
-
- try {
- Timer t = new Timer();
- status = testResource(status);
-
status.setExecution(t.elapsed(TimeUnit.MILLISECONDS));
-
- if(status.getExecution() < warningTreshold) {
- status.setStatus(status.OK);
- }else if(status.getExecution() > warningTreshold) {
- status.setStatus(Status.WARNING);
- }else if(status.getExecution() > criticalTreshold)
{
- status.setStatus(Status.CRITICAL);
- } else {
- status.setStatus(Status.UNAVAILABLE);
- }
-
- System.out.println(">>> Execution : " +
status.getExecution() + " ms -- " + status.getStatus());
-
- } catch (Exception e) {
- status.setStatus(Status.UNAVAILABLE);
- status.setStatusMessage(e.getMessage());
- }
-
- statuses.add(status);
- }
- }
- }
-
- }
- return statuses;
}
@Override
@@ -177,7 +89,7 @@ public class DomainAssetManagerResourceI
for(Component component : domainComposite.getComponents()) {
for(Service service : component.getServices()) {
Interface interfaceContract =
service.getInterfaceContract().getInterface();
-
if(ManageableService.class.getName().equals(interfaceContract.toString())) {
+
if(Manageable.class.getName().equals(interfaceContract.toString())) {
Status status = new Status();
status.setName(component.getName());
@@ -185,13 +97,13 @@ public class DomainAssetManagerResourceI
try {
String serviceName = component.getName() + "/" +
service.getName();
- ManageableService serviceInstance =
node.getService(ManageableService.class, serviceName);
+ Manageable serviceInstance =
node.getService(Manageable.class, serviceName);
Timer t = new Timer();
serviceInstance.isAlive();
status.setExecution(t.elapsed(TimeUnit.MILLISECONDS));
if(status.getExecution() < warningTreshold) {
- status.setStatus(status.OK);
+ status.setStatus(Status.OK);
}else if(status.getExecution() > warningTreshold) {
status.setStatus(Status.WARNING);
}else if(status.getExecution() > criticalTreshold) {
@@ -212,28 +124,6 @@ public class DomainAssetManagerResourceI
return statuses;
}
-
- private Status testResource(Status status) throws IOException {
-
- // Create an HTTP client
- HttpClient httpClient = httpClientFactory.createHttpClient();
-
- HttpGet request = new HttpGet(status.getUri() + "ping");
- //request.addHeader("Accept","application/json");
- HttpResponse response = httpClient.execute(request);
-
- if(response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
- throw new IOException("Error invoking service at '" +
request.getURI() +"' => " + response.getStatusLine().getReasonPhrase());
- }
-
- if (httpClient != null) {
- httpClient.getConnectionManager().shutdown();
- }
-
- return status;
- }
-
-
class Timer {
Date time;
long t;
Modified:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResourceTestCase.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResourceTestCase.java?rev=1310128&r1=1310127&r2=1310128&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResourceTestCase.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResourceTestCase.java
Thu Apr 5 23:19:16 2012
@@ -71,15 +71,4 @@ public class DomainAssetManagerResourceT
Assert.assertEquals(200, response.getResponseCode());
System.out.println(">>>" + response.getText());
}
-
- @Test
- public void testResourceManagement() throws Exception {
- WebConversation wc = new WebConversation();
- WebRequest request = new GetMethodWebRequest(SERVICE_URL +
"default/resources/status");
- request.setHeaderField("Accept","application/json");
- WebResponse response = wc.getResource(request);
-
- Assert.assertEquals(200, response.getResponseCode());
- System.out.println(">>>" + response.getText());
- }
}
Modified:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyLongRunningResourceImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyLongRunningResourceImpl.java?rev=1310128&r1=1310127&r2=1310128&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyLongRunningResourceImpl.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyLongRunningResourceImpl.java
Thu Apr 5 23:19:16 2012
@@ -21,20 +21,20 @@ package services.impl;
import javax.ws.rs.core.Response;
-import org.apache.tuscany.sca.node.manager.ManageableResource;
+import org.apache.tuscany.sca.node.manager.Manageable;
+
import services.MyResource;
-public class MyLongRunningResourceImpl implements MyResource,
ManageableResource {
+public class MyLongRunningResourceImpl implements MyResource, Manageable {
@Override
- public Response ping() {
+ public void isAlive() {
System.out.println(">>> long running ping");
try {
- Thread.sleep(1000);
+ Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
- return Response.ok("pong").build();
}
Modified:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java?rev=1310128&r1=1310127&r2=1310128&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java
Thu Apr 5 23:19:16 2012
@@ -19,15 +19,12 @@
package services.impl;
-import javax.ws.rs.core.Response;
+import org.apache.tuscany.sca.node.manager.Manageable;
-import org.apache.tuscany.sca.node.manager.ManageableResource;
-
-public class MyOtherResourceImpl implements ManageableResource {
+public class MyOtherResourceImpl implements Manageable {
@Override
- public Response ping() {
- System.out.println(">>> ping");
- return Response.ok("pong").build();
+ public void isAlive() {
+ System.out.println(">>> isAlive");
}
}
Modified:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyResourceImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyResourceImpl.java?rev=1310128&r1=1310127&r2=1310128&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyResourceImpl.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyResourceImpl.java
Thu Apr 5 23:19:16 2012
@@ -21,17 +21,10 @@ package services.impl;
import javax.ws.rs.core.Response;
-import org.apache.tuscany.sca.node.manager.ManageableResource;
-
import services.MyResource;
+import org.apache.tuscany.sca.node.manager.Manageable;
-public class MyResourceImpl implements MyResource, ManageableResource {
-
- @Override
- public Response ping() {
- System.out.println(">>> ping");
- return Response.ok("pong").build();
- }
+public class MyResourceImpl implements MyResource, Manageable {
@Override
public Response getSomething() {
@@ -39,4 +32,10 @@ public class MyResourceImpl implements M
return Response.ok("something").build();
}
+
+ @Override
+ public void isAlive() {
+ System.out.println(">>> isAlive");
+ }
+
}
Modified:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java?rev=1310128&r1=1310127&r2=1310128&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java
Thu Apr 5 23:19:16 2012
@@ -19,11 +19,10 @@
package services.impl;
-import org.apache.tuscany.sca.node.manager.ManageableService;
-
import services.MyService;
+import org.apache.tuscany.sca.node.manager.Manageable;
-public class MyServiceImpl implements MyService, ManageableService {
+public class MyServiceImpl implements MyService, Manageable {
@Override
Modified:
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/resources/node-asset-manager-test.composite
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/resources/node-asset-manager-test.composite?rev=1310128&r1=1310127&r2=1310128&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/resources/node-asset-manager-test.composite
(original)
+++
tuscany/sca-java-2.x/trunk/modules/node-manager/src/test/resources/node-asset-manager-test.composite
Thu Apr 5 23:19:16 2012
@@ -27,37 +27,25 @@
<service name="DomainAssetManagerResource">
<tuscany:binding.rest uri="/services/manager" />
</service>
- <property name="warningTreshold">1000</property> <!-- 1s
-->
+ <property name="warningTreshold">100</property> <!-- 1s
-->
<property name="criticalTreshold">30000</property> <!--
30s -->
<property name="unavailableTreshold">60000</property> <!-- 1m
-->
</component>
<component name="Resource">
<implementation.java class="services.impl.MyResourceImpl"/>
- <service name="MyResource">
- <tuscany:binding.rest uri="/services/resource" />
- </service>
</component>
<component name="LongRunningResource">
<implementation.java
class="services.impl.MyLongRunningResourceImpl"/>
- <service name="MyResource">
- <tuscany:binding.rest uri="/services/long/resource" />
- </service>
</component>
<component name="OtherResource">
<implementation.java class="services.impl.MyOtherResourceImpl"/>
- <service name="ManageableResource">
- <tuscany:binding.rest uri="/services/other/resource" />
- </service>
</component>
<component name="Service">
<implementation.java class="services.impl.MyServiceImpl"/>
- <service name="ManageableService">
- <binding.sca />
- </service>
</component>
</composite>