From e268815f4085df0b4aee30c8083ac0d20922cbce Mon Sep 17 00:00:00 2001 From: lresende Date: Wed, 4 Apr 2012 18:42:37 +0000 Subject: 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 --- .../node/manager/DomainAssetManagerResource.java | 1 + .../sca/node/manager/DomainCompositeResource.java | 1 + .../impl/DomainAssetManagerResourceImpl.java | 20 ++++++++- .../src/test/java/services/MyResource.java | 31 ++++++++++++++ .../src/test/java/services/MyResourceImpl.java | 34 --------------- .../src/test/java/services/MyService.java | 28 +++++++++++++ .../src/test/java/services/MyServiceImpl.java | 32 --------------- .../services/impl/MyLongRunningResourceImpl.java | 48 ++++++++++++++++++++++ .../java/services/impl/MyOtherResourceImpl.java | 33 +++++++++++++++ .../test/java/services/impl/MyResourceImpl.java | 42 +++++++++++++++++++ .../src/test/java/services/impl/MyServiceImpl.java | 38 +++++++++++++++++ .../resources/node-asset-manager-test.composite | 18 +++++--- 12 files changed, 254 insertions(+), 72 deletions(-) create mode 100644 sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyResource.java delete mode 100644 sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyResourceImpl.java create mode 100644 sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyService.java delete mode 100644 sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyServiceImpl.java create mode 100644 sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyLongRunningResourceImpl.java create mode 100644 sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java create mode 100644 sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyResourceImpl.java create mode 100644 sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.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 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/MyResourceImpl.java b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyResourceImpl.java deleted file mode 100644 index ac8b84a19d..0000000000 --- a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyResourceImpl.java +++ /dev/null @@ -1,34 +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 services; - -import javax.ws.rs.core.Response; - -import org.apache.tuscany.sca.node.manager.ManageableResource; - -public class MyResourceImpl 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/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/MyServiceImpl.java b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyServiceImpl.java deleted file mode 100644 index 770be99bc3..0000000000 --- a/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyServiceImpl.java +++ /dev/null @@ -1,32 +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 services; - -import org.apache.tuscany.sca.node.manager.ManageableService; - -public class MyServiceImpl implements ManageableService { - - - @Override - public void isAlive() { - System.out.println(">>> isAlive"); - } - -} 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/impl/MyOtherResourceImpl.java b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java new file mode 100644 index 0000000000..09a26d42a7 --- /dev/null +++ b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java @@ -0,0 +1,33 @@ +/* + * 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; + +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/impl/MyServiceImpl.java b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java new file mode 100644 index 0000000000..91b39f0fdd --- /dev/null +++ b/sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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 org.apache.tuscany.sca.node.manager.ManageableService; + +import services.MyService; + +public class MyServiceImpl implements MyService, ManageableService { + + + @Override + public void isAlive() { + 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 @@ - - + + - + + + + + + + + - + + - + -- cgit v1.2.3