From b8dde41d9e03a4d15b03995c65bd5416d4d9a216 Mon Sep 17 00:00:00 2001 From: lresende Date: Thu, 5 Apr 2012 23:19:16 +0000 Subject: 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 --- .../node/manager/DomainAssetManagerResource.java | 7 +- .../tuscany/sca/node/manager/Manageable.java | 31 ++++++ .../sca/node/manager/ManageableResource.java | 41 ------- .../sca/node/manager/ManageableService.java | 31 ------ .../impl/DomainAssetManagerResourceImpl.java | 118 +-------------------- .../DomainAssetManagerResourceTestCase.java | 11 -- .../services/impl/MyLongRunningResourceImpl.java | 10 +- .../java/services/impl/MyOtherResourceImpl.java | 11 +- .../test/java/services/impl/MyResourceImpl.java | 17 ++- .../src/test/java/services/impl/MyServiceImpl.java | 5 +- .../resources/node-asset-manager-test.composite | 14 +-- 11 files changed, 56 insertions(+), 240 deletions(-) create mode 100644 sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/Manageable.java delete mode 100644 sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableResource.java delete mode 100644 sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableService.java 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 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/Manageable.java b/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/Manageable.java new file mode 100644 index 0000000000..139e87c5f5 --- /dev/null +++ b/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/Manageable.java @@ -0,0 +1,31 @@ +/* + * 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 org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface Manageable { + + /** + * isAlive method that allow service to be managed + */ + void isAlive(); +} 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/ManageableService.java b/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableService.java deleted file mode 100644 index 17ab866f44..0000000000 --- a/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/ManageableService.java +++ /dev/null @@ -1,31 +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 org.oasisopen.sca.annotation.Remotable; - -@Remotable -public interface ManageableService { - - /** - * isAlive method that allow service to be managed - */ - void isAlive(); -} 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 nodeMap = new ConcurrentHashMap(); - 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 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 statuses = new ArrayList(); - 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 @@ - 1000 + 100 30000 60000 - - - - - - - - - - - - -- cgit v1.2.3