diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2012-04-04 18:42:37 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2012-04-04 18:42:37 +0000 |
commit | e268815f4085df0b4aee30c8083ac0d20922cbce (patch) | |
tree | 34dff94db5b4ef0ae2b38c437261bcdba33836ea /sca-java-2.x/trunk/modules | |
parent | 945f8268dfcd6213164a32470077319a196398b5 (diff) |
Enhancing domain asset manager to support resources that is not directly exposed with rest binding
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1309527 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules')
10 files changed, 193 insertions, 11 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 bb017a5d5b..3b123ab954 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 @@ -29,6 +29,7 @@ import javax.ws.rs.PathParam; import org.oasisopen.sca.annotation.Remotable; @Remotable +@Path("") public interface DomainAssetManagerResource { @GET diff --git a/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainCompositeResource.java b/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainCompositeResource.java index d9abd288ea..f917ca3b99 100644 --- a/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainCompositeResource.java +++ b/sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainCompositeResource.java @@ -27,6 +27,7 @@ import javax.ws.rs.PathParam; import org.oasisopen.sca.annotation.Remotable; @Remotable +@Path("") public interface DomainCompositeResource { @GET 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 46cbab0656..ae55aab919 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 @@ -109,7 +109,24 @@ public class DomainAssetManagerResourceImpl implements NodeActivator, DomainAsse 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(); @@ -167,7 +184,8 @@ public class DomainAssetManagerResourceImpl implements NodeActivator, DomainAsse status.setUri(service.getBindings().get(0).getURI()); try { - ManageableService serviceInstance = node.getService(ManageableService.class, component.getName()); + String serviceName = component.getName() + "/" + service.getName(); + ManageableService serviceInstance = node.getService(ManageableService.class, serviceName); Timer t = new Timer(); serviceInstance.isAlive(); status.setExecution(t.elapsed(TimeUnit.MILLISECONDS)); diff --git a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyResource.java b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyResource.java new file mode 100644 index 0000000000..74042d2561 --- /dev/null +++ b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyResource.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 services; + +import javax.ws.rs.GET; +import javax.ws.rs.core.Response; + +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface MyResource { + @GET + Response getSomething(); +} diff --git a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyService.java b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyService.java new file mode 100644 index 0000000000..4a1b34eead --- /dev/null +++ b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyService.java @@ -0,0 +1,28 @@ +/* + * 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 services; + +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface MyService { + + void doSomething(); +} 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 new file mode 100644 index 0000000000..e041b99eb5 --- /dev/null +++ b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyLongRunningResourceImpl.java @@ -0,0 +1,48 @@ +/* + * 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 services.impl; + +import javax.ws.rs.core.Response; + +import org.apache.tuscany.sca.node.manager.ManageableResource; +import services.MyResource; + +public class MyLongRunningResourceImpl implements MyResource, ManageableResource { + + @Override + public Response ping() { + System.out.println(">>> long running ping"); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + return Response.ok("pong").build(); + } + + + @Override + public Response getSomething() { + System.out.println(">>> getSomething"); + return Response.ok("something").build(); + } + + +} diff --git a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyResourceImpl.java b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java index ac8b84a19d..09a26d42a7 100644 --- a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyResourceImpl.java +++ b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java @@ -17,18 +17,17 @@ * under the License. */ -package services; +package services.impl; import javax.ws.rs.core.Response; import org.apache.tuscany.sca.node.manager.ManageableResource; -public class MyResourceImpl implements ManageableResource { +public class MyOtherResourceImpl implements ManageableResource { @Override public Response ping() { System.out.println(">>> ping"); return Response.ok("pong").build(); } - } 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 new file mode 100644 index 0000000000..6a0890fe1a --- /dev/null +++ b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyResourceImpl.java @@ -0,0 +1,42 @@ +/* + * 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 services.impl; + +import javax.ws.rs.core.Response; + +import org.apache.tuscany.sca.node.manager.ManageableResource; + +import services.MyResource; + +public class MyResourceImpl implements MyResource, ManageableResource { + + @Override + public Response ping() { + System.out.println(">>> ping"); + return Response.ok("pong").build(); + } + + @Override + public Response getSomething() { + System.out.println(">>> getSomething"); + return Response.ok("something").build(); + } + +} diff --git a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyServiceImpl.java b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java index 770be99bc3..91b39f0fdd 100644 --- a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyServiceImpl.java +++ b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java @@ -17,11 +17,13 @@ * under the License. */ -package services; +package services.impl; import org.apache.tuscany.sca.node.manager.ManageableService; -public class MyServiceImpl implements ManageableService { +import services.MyService; + +public class MyServiceImpl implements MyService, ManageableService { @Override @@ -29,4 +31,8 @@ public class MyServiceImpl implements ManageableService { System.out.println(">>> isAlive"); } + @Override + public void doSomething() { + System.out.println(">>> doSomething"); + } } 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 f76a979864..6cfb0b71e5 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 @@ -33,21 +33,29 @@ </component> <component name="Resource"> - <implementation.java class="services.MyResourceImpl"/> - <service name="ManageableResource"> + <implementation.java class="services.impl.MyResourceImpl"/> + <service name="MyResource"> <tuscany:binding.rest uri="/services/resource" /> </service> </component> <component name="LongRunningResource"> - <implementation.java class="services.MyLongRunningResourceImpl"/> + <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/another/resource" /> + <tuscany:binding.rest uri="/services/other/resource" /> </service> </component> + <component name="Service"> - <implementation.java class="services.MyServiceImpl"/> + <implementation.java class="services.impl.MyServiceImpl"/> <service name="ManageableService"> <binding.sca /> </service> |