summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2012-04-05 23:19:16 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2012-04-05 23:19:16 +0000
commitb8dde41d9e03a4d15b03995c65bd5416d4d9a216 (patch)
tree8d1a8b8d8311dfdbe321a0d024ab3c38d984c8a2
parente268815f4085df0b4aee30c8083ac0d20922cbce (diff)
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
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1310128 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResource.java7
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/Manageable.java (renamed from sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableService.java)2
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableResource.java41
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/impl/DomainAssetManagerResourceImpl.java118
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/test/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResourceTestCase.java11
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyLongRunningResourceImpl.java10
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java11
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyResourceImpl.java17
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java5
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/test/resources/node-asset-manager-test.composite14
10 files changed, 26 insertions, 210 deletions
diff --git a/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResource.java b/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResource.java
index 3b123ab954..8a1fab65b7 100644
--- a/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResource.java
+++ b/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResource.java
@@ -30,12 +30,7 @@ import org.oasisopen.sca.annotation.Remotable;
@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")
diff --git a/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableService.java b/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/Manageable.java
index 17ab866f44..139e87c5f5 100644
--- a/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableService.java
+++ b/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/Manageable.java
@@ -22,7 +22,7 @@ package org.apache.tuscany.sca.node.manager;
import org.oasisopen.sca.annotation.Remotable;
@Remotable
-public interface ManageableService {
+public interface Manageable {
/**
* isAlive method that allow service to be managed
diff --git a/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableResource.java b/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableResource.java
deleted file mode 100644
index 36051c3908..0000000000
--- a/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableResource.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.sca.node.manager;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.oasisopen.sca.annotation.Remotable;
-
-@Remotable
-public interface ManageableResource {
-
- /**
- * Ping resource used for service monitoring
- * @return
- */
- @GET
- @Path("/ping")
- @Produces(MediaType.TEXT_HTML)
- Response ping();
-}
diff --git a/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/impl/DomainAssetManagerResourceImpl.java b/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/impl/DomainAssetManagerResourceImpl.java
index ae55aab919..7d41bf80a2 100644
--- a/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/impl/DomainAssetManagerResourceImpl.java
+++ b/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/impl/DomainAssetManagerResourceImpl.java
@@ -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.Scope;
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 DomainAssetManagerResourceImpl implements NodeActivator, DomainAsse
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 DomainAssetManagerResourceImpl implements NodeActivator, DomainAsse
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 DomainAssetManagerResourceImpl implements NodeActivator, DomainAsse
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 DomainAssetManagerResourceImpl implements NodeActivator, DomainAsse
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;
diff --git a/sca-java-2.x/trunk/modules/node-manager/src/test/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResourceTestCase.java b/sca-java-2.x/trunk/modules/node-manager/src/test/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResourceTestCase.java
index ded7a3a7f2..cc288ea29a 100644
--- a/sca-java-2.x/trunk/modules/node-manager/src/test/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResourceTestCase.java
+++ b/sca-java-2.x/trunk/modules/node-manager/src/test/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResourceTestCase.java
@@ -71,15 +71,4 @@ public class DomainAssetManagerResourceTestCase {
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());
- }
}
diff --git a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyLongRunningResourceImpl.java b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyLongRunningResourceImpl.java
index e041b99eb5..59e72f9fd5 100644
--- a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyLongRunningResourceImpl.java
+++ b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyLongRunningResourceImpl.java
@@ -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();
}
diff --git a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java
index 09a26d42a7..421c8d92ec 100644
--- a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java
+++ b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java
@@ -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");
}
}
diff --git a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyResourceImpl.java b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyResourceImpl.java
index 6a0890fe1a..692f4ddb50 100644
--- a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyResourceImpl.java
+++ b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyResourceImpl.java
@@ -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 MyResource, ManageableResource {
return Response.ok("something").build();
}
+
+ @Override
+ public void isAlive() {
+ System.out.println(">>> isAlive");
+ }
+
}
diff --git a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java
index 91b39f0fdd..0bf675549f 100644
--- a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java
+++ b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java
@@ -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
diff --git a/sca-java-2.x/trunk/modules/node-manager/src/test/resources/node-asset-manager-test.composite b/sca-java-2.x/trunk/modules/node-manager/src/test/resources/node-asset-manager-test.composite
index 6cfb0b71e5..3b4f94d2f7 100644
--- a/sca-java-2.x/trunk/modules/node-manager/src/test/resources/node-asset-manager-test.composite
+++ b/sca-java-2.x/trunk/modules/node-manager/src/test/resources/node-asset-manager-test.composite
@@ -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>