summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2012-04-04 18:42:37 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2012-04-04 18:42:37 +0000
commite268815f4085df0b4aee30c8083ac0d20922cbce (patch)
tree34dff94db5b4ef0ae2b38c437261bcdba33836ea
parent945f8268dfcd6213164a32470077319a196398b5 (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
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainAssetManagerResource.java1
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/DomainCompositeResource.java1
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/main/java/org/apache/tuscany/sca/node/manager/impl/DomainAssetManagerResourceImpl.java20
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyResource.java31
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyService.java28
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyLongRunningResourceImpl.java48
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyOtherResourceImpl.java (renamed from sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyResourceImpl.java)5
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyResourceImpl.java42
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/test/java/services/impl/MyServiceImpl.java (renamed from sca-java-2.x/trunk/modules/node-manager/src/test/java/services/MyServiceImpl.java)10
-rw-r--r--sca-java-2.x/trunk/modules/node-manager/src/test/resources/node-asset-manager-test.composite18
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>