Merge "Make StackEngine share threads"
diff --git a/distribution/generator/profile/pom.xml b/distribution/generator/profile/pom.xml
index 5ee0c8e..0bc2612 100644
--- a/distribution/generator/profile/pom.xml
+++ b/distribution/generator/profile/pom.xml
@@ -92,7 +92,7 @@
<module>onem2m</module>
<module>onem2m-mqttbinding</module>
<module>rest-profile</module>
- <module>jsonpath-profile</module>
+ <!--<module>jsonpath-profile</module>-->
<module>simulation-profile</module>
<module>http-storage-agent-profile</module>
<module>influxdb-storage-agent-profile</module>
diff --git a/integration-tests/mqtt-it/src/test/java/org/eclipse/sensinact/gateway/device/mqtt/lite/it/MqttBridgeTest.java b/integration-tests/mqtt-it/src/test/java/org/eclipse/sensinact/gateway/device/mqtt/lite/it/MqttBridgeTest.java
index 60fab34..5a59cdb 100644
--- a/integration-tests/mqtt-it/src/test/java/org/eclipse/sensinact/gateway/device/mqtt/lite/it/MqttBridgeTest.java
+++ b/integration-tests/mqtt-it/src/test/java/org/eclipse/sensinact/gateway/device/mqtt/lite/it/MqttBridgeTest.java
@@ -22,7 +22,7 @@
import org.eclipse.sensinact.gateway.core.Core;
import org.eclipse.sensinact.gateway.core.Session;
import org.eclipse.sensinact.gateway.core.message.SnaMessage;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
import org.eclipse.sensinact.gateway.core.message.Recipient;
import org.eclipse.sensinact.gateway.device.mqtt.lite.it.util.MqttTestITAbstract;
import org.eclipse.sensinact.gateway.util.IOUtils;
diff --git a/platform/northbound/jsonpath-filtering/jsonpath-filter/pom.xml b/platform/northbound/jsonpath-filtering/jsonpath-filter/pom.xml
index cfe0bd4..e4ef21f 100644
--- a/platform/northbound/jsonpath-filtering/jsonpath-filter/pom.xml
+++ b/platform/northbound/jsonpath-filtering/jsonpath-filter/pom.xml
@@ -84,10 +84,12 @@
<scope>test</scope>
</dependency>
<!-- dirty trick to avoid to change the global settings.xml file-->
+ <!--
<dependency>
<groupId>org.gradle</groupId>
<artifactId>gradle-tooling-api</artifactId>
</dependency>
+ -->
</dependencies>
<build>
diff --git a/platform/northbound/mqtt/mqtt-agent/src/main/java/org/eclipse/sensinact/gateway/agent/mqtt/inst/osgi/Activator.java b/platform/northbound/mqtt/mqtt-agent/src/main/java/org/eclipse/sensinact/gateway/agent/mqtt/inst/osgi/Activator.java
index 61ac728..a3c8686 100644
--- a/platform/northbound/mqtt/mqtt-agent/src/main/java/org/eclipse/sensinact/gateway/agent/mqtt/inst/osgi/Activator.java
+++ b/platform/northbound/mqtt/mqtt-agent/src/main/java/org/eclipse/sensinact/gateway/agent/mqtt/inst/osgi/Activator.java
@@ -23,9 +23,6 @@
*/
public class Activator extends AbstractActivator<Mediator> {
- /* (non-Javadoc)
- * @see org.eclipse.sensinact.gateway.common.bundle.AbstractActivator#doStart()
- */
@Override
public void doStart() throws Exception {
mediator.info("Starting MQTT Agents factory");
diff --git a/platform/northbound/mqtt/mqtt-agent/src/test/java/org/eclipse/sensinact/gateway/mqtt/inst/test/MidOSGiTestExtended.java b/platform/northbound/mqtt/mqtt-agent/src/test/java/org/eclipse/sensinact/gateway/mqtt/inst/test/MidOSGiTestExtended.java
index a7cbce8..2715348 100755
--- a/platform/northbound/mqtt/mqtt-agent/src/test/java/org/eclipse/sensinact/gateway/mqtt/inst/test/MidOSGiTestExtended.java
+++ b/platform/northbound/mqtt/mqtt-agent/src/test/java/org/eclipse/sensinact/gateway/mqtt/inst/test/MidOSGiTestExtended.java
@@ -265,7 +265,9 @@
}
MidProxy<Session> mids = (MidProxy<Session>) Proxy.getInvocationHandler(s);
try {
- Object o = mids.toOSGi(Session.class.getDeclaredMethod("get", new Class<?>[]{String.class, String.class, String.class, String.class}), new Object[]{provider, service, resource, DataResource.VALUE});
+ Object o = mids.toOSGi(Session.class.getDeclaredMethod("get",
+ new Class<?>[]{String.class, String.class, String.class, String.class, Object[].class}),
+ new Object[]{provider, service, resource, DataResource.VALUE, (Object[])null});
Object j = o.getClass().getDeclaredMethod("getJSON").invoke(o);
System.out.println(j);
return (String) j;
@@ -284,7 +286,9 @@
}
MidProxy<Session> mids = (MidProxy<Session>) Proxy.getInvocationHandler(s);
try {
- Object o = mids.toOSGi(Session.class.getDeclaredMethod("set", new Class<?>[]{String.class, String.class, String.class, String.class, Object.class}), new Object[]{provider, service, resource, DataResource.VALUE, value});
+ Object o = mids.toOSGi(Session.class.getDeclaredMethod("set",
+ new Class<?>[]{String.class, String.class, String.class, String.class, Object.class,
+ Object[].class}), new Object[]{provider, service, resource, DataResource.VALUE, value, (Object[])null});
Object j = o.getClass().getDeclaredMethod("getJSON").invoke(o);
System.out.println(j);
return (String) j;
@@ -303,7 +307,9 @@
}
MidProxy<Session> mids = (MidProxy<Session>) Proxy.getInvocationHandler(s);
try {
- Object o = mids.toOSGi(Session.class.getDeclaredMethod("act", new Class<?>[]{String.class, String.class, String.class, Object[].class}), new Object[]{provider, service, resource, args});
+ Object o = mids.toOSGi(Session.class.getDeclaredMethod("act",
+ new Class<?>[]{String.class, String.class, String.class, Object[].class}),
+ new Object[]{provider, service, resource, args});
Object j = o.getClass().getDeclaredMethod("getJSON").invoke(o);
System.out.println(j);
return (String) j;
@@ -322,7 +328,9 @@
}
MidProxy<Session> mids = (MidProxy<Session>) Proxy.getInvocationHandler(s);
try {
- Object o = mids.toOSGi(Session.class.getDeclaredMethod("subscribe", new Class<?>[]{String.class, String.class, String.class, Recipient.class, JSONArray.class}), new Object[]{provider, service, resource, recipient, null});
+ Object o = mids.toOSGi(Session.class.getDeclaredMethod("subscribe",
+ new Class<?>[]{String.class, String.class, String.class, Recipient.class, JSONArray.class, Object[].class}),
+ new Object[]{provider, service, resource, recipient, null, (Object[])null});
Object j = o.getClass().getDeclaredMethod("getJSON").invoke(o);
System.out.println(j);
return (String) j;
@@ -333,7 +341,8 @@
return null;
}
- public String unsubscribe(String provider, String service, String resource, String subscriptionId) throws ClassNotFoundException, IOException, InvalidSyntaxException {
+ public String unsubscribe(String provider, String service, String resource, String subscriptionId)
+ throws ClassNotFoundException, IOException, InvalidSyntaxException {
MidProxy<Core> mid = new MidProxy<Core>(classloader, this, Core.class);
Core core = mid.buildProxy();
if(s == null) {
@@ -341,7 +350,9 @@
}
MidProxy<Session> mids = (MidProxy<Session>) Proxy.getInvocationHandler(s);
try {
- Object o = mids.toOSGi(Session.class.getDeclaredMethod("unsubscribe", new Class<?>[]{String.class, String.class, String.class, String.class}), new Object[]{provider, service, resource, subscriptionId});
+ Object o = mids.toOSGi(Session.class.getDeclaredMethod("unsubscribe",
+ new Class<?>[]{String.class, String.class, String.class, String.class, Object[].class}),
+ new Object[]{provider, service, resource, subscriptionId, (Object[])null});
Object j = o.getClass().getDeclaredMethod("getJSON").invoke(o);
System.out.println(j);
return (String) j;
diff --git a/platform/northbound/pom.xml b/platform/northbound/pom.xml
index 8c30f09..5d5ac58 100644
--- a/platform/northbound/pom.xml
+++ b/platform/northbound/pom.xml
@@ -27,7 +27,7 @@
<modules>
<module>rest-access</module>
- <module>jsonpath-filtering</module>
+ <!--<module>jsonpath-filtering</module>-->
<module>geo-filtering</module>
<module>ldap-filtering</module>
<module>mqtt</module>
diff --git a/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpEndpoint.java b/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpEndpoint.java
index 9e79a1a..bb0377d 100644
--- a/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpEndpoint.java
+++ b/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpEndpoint.java
@@ -100,6 +100,7 @@
response.sendError(403, e.getMessage());
} catch (Exception e) {
+ e.printStackTrace();
mediator.error(e);
response.sendError(520, "Internal server error");
diff --git a/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpRegisteringEndpoint.java b/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpRegisteringEndpoint.java
index ff355e7..e1f8dd1 100644
--- a/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpRegisteringEndpoint.java
+++ b/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpRegisteringEndpoint.java
@@ -43,11 +43,6 @@
this.mediator = mediator;
}
- /**
- * @inheritDoc
- * @see javax.servlet.http.HttpServlet#
- * doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
- */
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
this.doExecute(request, response);
diff --git a/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpRestAccess.java b/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpRestAccess.java
index 65bc032..dd1e58f 100644
--- a/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpRestAccess.java
+++ b/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpRestAccess.java
@@ -11,7 +11,7 @@
package org.eclipse.sensinact.gateway.nthbnd.rest.internal.http;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
import org.eclipse.sensinact.gateway.core.security.Authentication;
import org.eclipse.sensinact.gateway.core.security.AuthenticationToken;
import org.eclipse.sensinact.gateway.core.security.InvalidCredentialException;
@@ -54,12 +54,6 @@
}
}
- /**
- * @inheritDoc
- * @see org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundAccess#
- * respond(org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundMediator,
- * org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundRequestBuilder)
- */
@Override
protected boolean respond(NorthboundMediator mediator, NorthboundRequestBuilder builder) throws IOException {
String httpMethod = super.request.getMethod();
@@ -98,11 +92,10 @@
String result = null;
List<String> rawList = super.request.getQueryMap().get("rawDescribe");
- if (rawList != null && (rawList.contains("true") || rawList.contains("True") || rawList.contains("yes") || rawList.contains("Yes")) && DescribeResponse.class.isAssignableFrom(cap.getClass())) {
+ if (rawList != null && (rawList.contains("true") || rawList.contains("True") || rawList.contains("yes") || rawList.contains("Yes")) && DescribeResponse.class.isAssignableFrom(cap.getClass()))
result = ((DescribeResponse<?>) cap).getJSON(true);
- } else {
+ else
result = cap.getJSON();
- }
byte[] resultBytes;
String acceptEncoding = super.request.getHeader("Accept-Encoding");
if (acceptEncoding != null && acceptEncoding.contains("gzip")) {
diff --git a/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpRestAccessRequest.java b/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpRestAccessRequest.java
index 0c82493..82844f9 100644
--- a/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpRestAccessRequest.java
+++ b/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/http/HttpRestAccessRequest.java
@@ -51,17 +51,11 @@
this.mediator = mediator;
}
- /* (non-Javadoc)
- * @see org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundRequestWrapper#getMediator()
- */
@Override
public NorthboundMediator getMediator() {
return this.mediator;
}
- /* (non-Javadoc)
- * @see org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundRequestWrapper#getQueryMap()
- */
@Override
public Map<String, List<String>> getQueryMap() {
if (this.queryMap == null) {
@@ -75,9 +69,6 @@
return queryMap;
}
- /* (non-Javadoc)
- * @see org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundRequestWrapper#getContent()
- */
@Override
public String getContent() {
if (this.content == null) {
@@ -104,9 +95,6 @@
this.authentication = authentication;
}
- /* (non-Javadoc)
- * @see org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundRequestWrapper#getAuthentication()
- */
@Override
public Authentication<?> getAuthentication() {
if (this.authentication == null) {
@@ -123,25 +111,16 @@
return this.authentication;
}
- /* (non-Javadoc)
- * @see org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundRequestWrapper#getRequestID()
- */
@Override
public String getRequestIdProperty() {
return "rid";
}
- /* (non-Javadoc)
- * @see org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundRequestWrapper#getRequestID()
- */
@Override
public String getRequestId() {
return super.getHeader(getRequestIdProperty());
}
- /* (non-Javadoc)
- * @see org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundRequestWrapper#createRecipient(org.eclipse.sensinact.gateway.core.api.method.Parameter[])
- */
@Override
public NorthboundRecipient createRecipient(List<Parameter> parameters) {
NorthboundRecipient recipient = null;
@@ -158,9 +137,8 @@
break;
}
}
- if (callback != null) {
+ if (callback != null)
recipient = new HttpRecipient(mediator, callback);
- }
return recipient;
}
diff --git a/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/ws/WebSocketConnection.java b/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/ws/WebSocketConnection.java
index 5eed350..5f3a768 100644
--- a/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/ws/WebSocketConnection.java
+++ b/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/ws/WebSocketConnection.java
@@ -111,6 +111,7 @@
this.mediator.error(e1);
}
} catch (Exception e) {
+ e.printStackTrace();
this.mediator.error(e);
try {
this.send(new JSONObject().put("statusCode", 500).put("message", "Exception - Internal server error").toString());
diff --git a/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/ws/WsRestAccess.java b/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/ws/WsRestAccess.java
index 75d350f..51053a1 100644
--- a/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/ws/WsRestAccess.java
+++ b/platform/northbound/rest-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/rest/internal/ws/WsRestAccess.java
@@ -11,7 +11,7 @@
package org.eclipse.sensinact.gateway.nthbnd.rest.internal.ws;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
import org.eclipse.sensinact.gateway.core.security.InvalidCredentialException;
import org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundAccess;
import org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundMediator;
diff --git a/platform/northbound/rest-access/src/test/resources/sensinact.config b/platform/northbound/rest-access/src/test/resources/sensinact.config
index 7b88e10..e69de29 100644
--- a/platform/northbound/rest-access/src/test/resources/sensinact.config
+++ b/platform/northbound/rest-access/src/test/resources/sensinact.config
@@ -1,3 +0,0 @@
-namespace=SERVER
-broker=tcp://sensinact-cea.ddns.net:5269
-broker.topic.prefix=/
\ No newline at end of file
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AllRequest.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AllRequest.java
index be4e2af..c2ee89a 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AllRequest.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AllRequest.java
@@ -22,27 +22,16 @@
super(mediator, requestIdentifier, filteringCollection);
}
- /**
- * @inheritDoc
- * @see org.eclipse.sensinact.gateway.common.primitive.Nameable#getName()
- */
+ @Override
public String getName() {
return "all";
}
- /**
- * @inheritDoc
- * @see org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundRequest#getMethod()
- */
@Override
protected String getMethod() {
return this.getName();
}
- /**
- * @inheritDoc
- * @see NorthboundRequest#getExecutionArguments()
- */
@Override
protected Argument[] getExecutionArguments() {
Argument[] superArguments = super.getExecutionArguments();
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/Argument.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/Argument.java
index 106aeaf..b3bac26 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/Argument.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/Argument.java
@@ -14,15 +14,7 @@
* @author <a href="mailto:cmunilla@kentyou.com">Christophe Munilla</a>
*/
public class Argument {
- //********************************************************************//
- // NESTED DECLARATIONS //
- //********************************************************************//
- //********************************************************************//
- // ABSTRACT DECLARATIONS //
- //********************************************************************//
- //********************************************************************//
- // STATIC DECLARATIONS //
- //********************************************************************//
+
public static Object[] getParameters(Argument[] arguments) {
int index = 0;
int length = arguments == null ? 0 : arguments.length;
@@ -42,7 +34,7 @@
int length = arguments == null ? 0 : arguments.length;
if (length == 0) {
- return null;
+ return null;
}
Class<?>[] parameterTypes = new Class<?>[length];
for (; index < length; index++) {
@@ -51,10 +43,6 @@
return parameterTypes;
}
- //********************************************************************//
- // INSTANCE DECLARATIONS //
- //********************************************************************//
-
public final Class<?> clazz;
public final Object value;
@@ -62,4 +50,9 @@
this.clazz = clazz;
this.value = value;
}
+
+ @Override
+ public String toString() {
+ return String.format("{\"type\":\"%s\",\"value\":\"%s\"}", this.clazz.getName(), String.valueOf(value));
+ }
}
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeGetRequest.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeGetRequest.java
index b32e06b..3dadf8c 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeGetRequest.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeGetRequest.java
@@ -10,24 +10,43 @@
*/
package org.eclipse.sensinact.gateway.nthbnd.endpoint;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
public class AttributeGetRequest extends AttributeRequest {
- /**
+
+ private Argument[] extraArguments;
+
+ /**
* @param mediator
* @param serviceProvider
* @param service
* @param resource
* @param attribute
*/
- public AttributeGetRequest(NorthboundMediator mediator, String requestIdentifier, String serviceProvider, String service, String resource, String attribute) {
+ public AttributeGetRequest(NorthboundMediator mediator, String requestIdentifier, String serviceProvider, String service, String resource,
+ String attribute, Argument[] extraArguments) {
super(mediator, requestIdentifier, serviceProvider, service, resource, attribute);
+ this.extraArguments = extraArguments;
}
- /**
- * @inheritDoc
- * @see ResourceRequest#getMethod()
- */
@Override
protected String getMethod() {
return "get";
}
+
+ @Override
+ protected Argument[] getExecutionArguments() {
+ int offset = this.extraArguments == null?0:this.extraArguments.length;
+ if(offset == 0)
+ return super.getExecutionArguments();
+ Argument[] superArguments = super.getExecutionArguments();
+ int length = superArguments == null ? 0 : superArguments.length;
+ Argument[] arguments = new Argument[length + offset];
+ if (length > 0)
+ System.arraycopy(superArguments, 0, arguments, 0, length);
+ System.arraycopy(this.extraArguments, 0, arguments, length, offset);
+ return arguments;
+ }
}
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeRequest.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeRequest.java
index 402cbe4..00a45cd 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeRequest.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeRequest.java
@@ -11,6 +11,7 @@
package org.eclipse.sensinact.gateway.nthbnd.endpoint;
public abstract class AttributeRequest extends ResourceRequest {
+
private String attribute;
/**
@@ -22,34 +23,19 @@
*/
public AttributeRequest(NorthboundMediator mediator, String requestIdentifier, String serviceProvider, String service, String resource, String attribute) {
super(mediator, requestIdentifier, serviceProvider, service, resource);
-
this.attribute = attribute;
-// if (this.attribute == null) {
-// throw new NullPointerException("Attribute missing");
-// }
}
- /**
- * @inheritDoc
- * @see ResourcesRequest#getName()
- */
+ @Override
public String getName() {
return attribute;
}
- /**
- * @inheritDoc
- * @see ResourceRequest#getMethod()
- */
@Override
protected String getMethod() {
return null;
}
- /**
- * @inheritDoc
- * @see NorthboundRequest#getExecutionArguments()
- */
@Override
protected Argument[] getExecutionArguments() {
Argument[] superArguments = super.getExecutionArguments();
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeSetRequest.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeSetRequest.java
index 7c50386..77a6e52 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeSetRequest.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeSetRequest.java
@@ -10,7 +10,13 @@
*/
package org.eclipse.sensinact.gateway.nthbnd.endpoint;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
public class AttributeSetRequest extends AttributeRequest {
+
+ private Argument[] extraArguments;
private Object argument;
/**
@@ -21,9 +27,11 @@
* @param attribute
* @param argument
*/
- public AttributeSetRequest(NorthboundMediator mediator, String requestIdentifier, String serviceProvider, String service, String resource, String attribute, Object argument) {
+ public AttributeSetRequest(NorthboundMediator mediator, String requestIdentifier, String serviceProvider, String service, String resource,
+ String attribute, Object argument, Argument[] extraArguments) {
super(mediator, requestIdentifier, serviceProvider, service, resource, attribute);
this.argument = argument;
+ this.extraArguments = extraArguments;
}
/**
@@ -32,13 +40,15 @@
*/
@Override
protected Argument[] getExecutionArguments() {
+ int offset = this.extraArguments == null?0:this.extraArguments.length;
Argument[] superArguments = super.getExecutionArguments();
int length = superArguments == null ? 0 : superArguments.length;
- Argument[] arguments = new Argument[length + 1];
- if (length > 0) {
+ Argument[] arguments = new Argument[length + offset + 1];
+ if (length > 0)
System.arraycopy(superArguments, 0, arguments, 0, length);
- }
arguments[length] = new Argument(Object.class, this.argument);
+ if (offset > 0)
+ System.arraycopy(this.extraArguments, 0, arguments, length+1, offset);
return arguments;
}
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeSubscribeRequest.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeSubscribeRequest.java
index a0cbd50..9847d8b 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeSubscribeRequest.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeSubscribeRequest.java
@@ -10,12 +10,18 @@
*/
package org.eclipse.sensinact.gateway.nthbnd.endpoint;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
import org.json.JSONArray;
public class AttributeSubscribeRequest extends AttributeRequest {
+
private NorthboundRecipient recipient;
private JSONArray conditions;
private String policy;
+ private Argument[] extraArguments;
/**
* @param mediator
@@ -27,40 +33,35 @@
*/
public AttributeSubscribeRequest(NorthboundMediator mediator, String requestIdentifier,
String serviceProvider, String service, String resource, String attribute,
- NorthboundRecipient recipient, JSONArray conditions, String policy) {
+ NorthboundRecipient recipient, JSONArray conditions, String policy,
+ Argument[] extraArguments) {
super(mediator, requestIdentifier, serviceProvider, service, resource, attribute);
this.recipient = recipient;
this.conditions = conditions;
this.policy = policy;
+ this.extraArguments = extraArguments;
- if (this.recipient == null) {
+ if (this.recipient == null)
throw new NullPointerException("Recipient missing");
- }
}
- /**
- * @inheritDoc
- * @see ServiceProvidersRequest#getExecutionArguments()
- */
@Override
protected Argument[] getExecutionArguments() {
+ int offset = this.extraArguments == null?0:this.extraArguments.length;
Argument[] superArguments = super.getExecutionArguments();
int length = superArguments == null ? 0 : superArguments.length;
- Argument[] arguments = new Argument[length + 3];
- if (length > 0) {
+ Argument[] arguments = new Argument[length + offset + 3];
+ if (length > 0)
System.arraycopy(superArguments, 0, arguments, 0, length);
- }
arguments[length] = new Argument(NorthboundRecipient.class, this.recipient);
arguments[length + 1] = new Argument(JSONArray.class, this.conditions);
arguments[length + 2] = new Argument(String.class, this.policy);
+ if (offset > 0)
+ System.arraycopy(this.extraArguments, 0, arguments, length+3, offset);
return arguments;
}
- /**
- * @inheritDoc
- * @see ResourceRequest#getMethod()
- */
@Override
protected String getMethod() {
return "subscribe";
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeUnsubscribeRequest.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeUnsubscribeRequest.java
index 98a81bb..430f5d6 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeUnsubscribeRequest.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/AttributeUnsubscribeRequest.java
@@ -10,8 +10,14 @@
*/
package org.eclipse.sensinact.gateway.nthbnd.endpoint;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
public class AttributeUnsubscribeRequest extends AttributeRequest {
+
private String subscriptionId;
+ private Argument[] extraArguments;
/**
* @param mediator
@@ -20,35 +26,31 @@
* @param service
* @param resource
*/
- public AttributeUnsubscribeRequest(NorthboundMediator mediator, String requestIdentifier, String serviceProvider, String service, String resource, String attribute, String subscriptionId) {
+ public AttributeUnsubscribeRequest(NorthboundMediator mediator, String requestIdentifier, String serviceProvider, String service, String resource,
+ String attribute, String subscriptionId, Argument[] extraArguments) {
super(mediator, requestIdentifier, serviceProvider, service, resource, attribute);
this.subscriptionId = subscriptionId;
- if (this.subscriptionId == null) {
+ this.extraArguments = extraArguments;
+ if (this.subscriptionId == null)
throw new NullPointerException("Subscription identifier mising");
- }
+
}
- /**
- * @inheritDoc
- * @see ServiceProvidersRequest#getExecutionArguments()
- */
@Override
protected Argument[] getExecutionArguments() {
+ int offset = this.extraArguments == null?0:this.extraArguments.length;
Argument[] superArguments = super.getExecutionArguments();
int length = superArguments == null ? 0 : superArguments.length;
- Argument[] arguments = new Argument[length + 1];
- if (length > 0) {
+ Argument[] arguments = new Argument[length + offset + 1];
+ if (length > 0)
System.arraycopy(superArguments, 0, arguments, 0, length);
- }
arguments[length] = new Argument(String.class, this.subscriptionId);
+ if (offset > 0)
+ System.arraycopy(this.extraArguments, 0, arguments, length+1, offset);
return arguments;
}
- /**
- * @inheritDoc
- * @see ResourceRequest#getMethod()
- */
@Override
protected String getMethod() {
return "unsubscribe";
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/DefaultNorthboundRequestHandler.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/DefaultNorthboundRequestHandler.java
index da42dae..79dab68 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/DefaultNorthboundRequestHandler.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/DefaultNorthboundRequestHandler.java
@@ -25,7 +25,6 @@
import org.eclipse.sensinact.gateway.common.execution.ErrorHandler;
import org.eclipse.sensinact.gateway.common.primitive.InvalidValueException;
-import org.eclipse.sensinact.gateway.core.DataResource;
import org.eclipse.sensinact.gateway.core.Filtering;
import org.eclipse.sensinact.gateway.core.FilteringDefinition;
import org.eclipse.sensinact.gateway.core.message.SnaFilter;
@@ -41,7 +40,7 @@
import org.osgi.framework.ServiceReference;
/**
- *
+ * Default {@link NorthboundRequestHandler} implementation
*/
public class DefaultNorthboundRequestHandler implements NorthboundRequestHandler {
@@ -109,9 +108,6 @@
return this.buildError;
}
- /* (non-Javadoc)
- * @see org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundRequestHandler#processRequestURI()
- */
@Override
public boolean processRequestURI() {
String path = null;
@@ -147,9 +143,8 @@
this.isElementsList = true;
break;
case "sensinact":
- if(this.method==null) {
- this.method = "ALL";
- }
+ if(this.method==null)
+ this.method = "ALL";
this.multi = true;
break;
default:
@@ -186,11 +181,6 @@
return true;
}
- /**
- * @return
- * @throws IOException
- * @throws JSONException
- */
private List<Parameter> processParameters() throws IOException, JSONException {
String content = this.request.getContent();
JSONArray parameters = null;
@@ -204,7 +194,6 @@
} catch (JSONException e) {
try {
parameters = new JSONArray(content);
-
} catch (JSONException je) {
mediator.debug("No JSON formated content in %s", content);
}
@@ -247,23 +236,11 @@
return parametersList;
}
- /**
- * @param builder
- */
private void processAttribute(NorthboundRequestBuilder builder) {
- if (this.attribute != null)// {
+ if (this.attribute != null)
builder.withAttribute(this.attribute);
- //} else {
- // builder.withAttribute(DataResource.VALUE);
- //}
}
- /**
- * @param builder
- * @param parameters
- * @return
- * @throws IOException
- */
private void processFilters(NorthboundRequestBuilder builder, List<Parameter> parameters) throws IOException {
List<FilteringDefinition> defs = new ArrayList<>();
String filter = null;
@@ -296,33 +273,27 @@
filter = CastUtils.castPrimitive(String.class, parameter.getValue());
int i=0;
for(;i<defs.size();i++){
- if(rank > defs.get(i).rank) {
+ if(rank > defs.get(i).rank)
continue;
- }
defs.add(i,new FilteringDefinition(name, filter,rank));
break;
}
- if(i == defs.size()) {
+ if(i == defs.size())
defs.add(new FilteringDefinition(name, filter,rank));
- }
it.remove();
}
} catch (InvalidSyntaxException e) {
continue;
}
}
- if(defs.size()==0) {
+ if(defs.size()==0)
return;
- }
builder.withFilter(defs.size());
final AtomicInteger n = new AtomicInteger(-1);
defs.stream().forEach(d -> {builder.withFilter(d, n.incrementAndGet());});
builder.withHiddenFilter(hidden);
}
- /* (non-Javadoc)
- * @see org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundRequestHandler#handle()
- */
public NorthboundRequestBuilder handle() throws IOException {
List<Parameter> parameters = null;
try {
@@ -350,9 +321,9 @@
).withService(this.service
).withResource(this.resource);
- if (!this.multi && !this.method.equals(AccessMethod.ACT) && !this.method.equals(AccessMethod.DESCRIBE)) {
+ if (!this.multi && !this.method.equals(AccessMethod.ACT) && !this.method.equals(AccessMethod.DESCRIBE))
this.processAttribute(builder);
- }
+
this.rid = request.getRequestId();
if(this.rid == null) {
String requestIdName = request.getRequestIdProperty();
@@ -373,42 +344,44 @@
builder.isElementsList(isElementsList);
break;
case "ACT":
- int index = 0;
- int length = parameters == null ? 0 : parameters.size();
-
- Object[] arguments = length == 0 ? null : new Object[length];
- for (; index < length; index++) {
- arguments[index] = parameters.get(index).getValue();
- }
- builder.withArgument(arguments);
+ case "GET":
+ int index = 0;
+ int length = parameters.size();
+ for (; index < length; index++)
+ builder.withArgument(new Argument(parameters.get(index).getType(), parameters.get(index).getValue()));
break;
case "UNSUBSCRIBE":
- if (parameters == null || parameters.size() != 1 || parameters.get(0) == null) {
+ if (parameters == null || parameters.isEmpty()) {
this.buildError = new NorthboundResponseBuildError(400, "A Parameter was expected");
return null;
}
- if (parameters.get(0).getType() != String.class) {
+ if (parameters.get(0) == null || parameters.get(0).getType() != String.class) {
this.buildError = new NorthboundResponseBuildError(400, "Invalid parameter format");
return null;
}
- builder.withArgument(parameters.get(0).getValue());
+ builder.withArgument(new Argument(String.class, parameters.get(0).getValue()));
+ index = 1;
+ length = parameters.size();
+ for (; index < length; index++)
+ builder.withArgument(new Argument(parameters.get(index).getType(), parameters.get(index).getValue()));
break;
case "SET":
- if (parameters == null || parameters.size() != 1 || parameters.get(0) == null) {
+ if (parameters == null || parameters.get(0) == null) {
this.buildError = new NorthboundResponseBuildError(400, "A Parameter was expected");
return null;
}
- builder.withArgument(parameters.get(0).getValue());
+ builder.withArgument(new Argument(Object.class, parameters.get(0).getValue()));
+ index = 1;
+ length = parameters.size();
+ for (; index < length; index++)
+ builder.withArgument(new Argument(parameters.get(index).getType(), parameters.get(index).getValue()));
break;
case "SUBSCRIBE":
NorthboundRecipient recipient = this.request.createRecipient(parameters);
if (recipient == null) {
this.buildError = new NorthboundResponseBuildError(400, "Unable to create the appropriate recipient");
return null;
- }
- index = 0;
- length = parameters == null ? 0 : parameters.size();
-
+ }
String sender = null;
boolean isPattern = false;
boolean isComplement = false;
@@ -416,52 +389,71 @@
SnaMessage.Type[] types = null;
JSONArray conditions = null;
- for (; index < length; index++) {
- Parameter parameter = parameters.get(index);
+ List<Parameter> extraParameters = new ArrayList<>();
+
+ length = parameters == null ? 0 : parameters.size();
+ for (; length > 0;) {
+ boolean found = false;
+ Parameter parameter = parameters.remove(0);
String name = parameter.getName();
switch (name) {
- case "conditions":
- conditions = CastUtils.cast(mediator.getClassLoader(), JSONArray.class, parameter.getValue());
- break;
+ case "callback":
+ found = true;
+ break;
+ case "conditions":
+ conditions = CastUtils.cast(mediator.getClassLoader(), JSONArray.class, parameter.getValue());
+ found = true;
+ break;
case "sender":
sender = CastUtils.cast(mediator.getClassLoader(), String.class, parameter.getValue());
+ found = true;
break;
case "pattern":
isPattern = CastUtils.cast(mediator.getClassLoader(), boolean.class, parameter.getValue());
+ found = true;
break;
case "complement":
isComplement = CastUtils.cast(mediator.getClassLoader(), boolean.class, parameter.getValue());
+ found = true;
break;
case "types":
types = CastUtils.castArray(mediator.getClassLoader(), SnaMessage.Type[].class, parameter.getValue());
+ found = true;
case "policy":
policy = CastUtils.cast(mediator.getClassLoader(), String.class, parameter.getValue());
+ found = true;
break;
default:
- break;
+ break;
}
+ if(!found)
+ extraParameters.add(parameter);
+ length = parameters.size();
}
+
if (sender == null) {
sender = "(/[^/]+)+";
isPattern = true;
}
- if (types == null) {
+ if (types == null)
types = SnaMessage.Type.values();
- }
- if (conditions == null) {
+
+ if (conditions == null)
conditions = new JSONArray();
- }
- Object argument = null;
-
+
+ builder.withArgument(new Argument(NorthboundRecipient.class, recipient));
if (this.resource == null) {
SnaFilter snaFilter = new SnaFilter(mediator, sender, isPattern, isComplement, conditions);
- snaFilter.addHandledType(types);
- argument = snaFilter;
- builder.withArgument(new Object[]{recipient, argument});
+ snaFilter.addHandledType(types);
+ builder.withArgument(new Argument(SnaFilter.class, snaFilter));
} else {
- argument = conditions;
- builder.withArgument(new Object[]{recipient, argument, policy});
- }
+ builder.withArgument(new Argument(JSONArray.class, conditions));
+ builder.withArgument(new Argument(String.class, policy));
+ }
+ index = 0;
+ length = extraParameters == null ? 0 : extraParameters.size();
+ for (; index < length; index++)
+ builder.withArgument(new Argument(extraParameters.get(index).getType(), extraParameters.get(index).getValue()));
break;
default:
break;
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundAccess.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundAccess.java
index 6964b2b..b95ecc8 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundAccess.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundAccess.java
@@ -103,9 +103,8 @@
dnrh.init(request);
if (dnrh.processRequestURI()) {
builder = dnrh.handle();
- if (builder == null) {
- buildError = dnrh.getBuildError();
- }
+ if (builder == null)
+ buildError = dnrh.getBuildError();
} else {
Collection<ServiceReference<NorthboundRequestHandler>> references;
try {
@@ -126,25 +125,22 @@
}
} catch (IOException e) {
mediator.error(e);
-
} finally {
mediator.getContext().ungetService(reference);
}
}
- if (builder != null) {
+ if (builder != null)
break;
- }
}
} catch (InvalidSyntaxException e) {
mediator.error(e);
}
}
if (builder == null) {
- if (buildError == null) {
+ if (buildError == null)
this.sendError(400, "Invalid request");
- } else {
+ else
this.sendError(buildError.status, buildError.message);
- }
return;
}
this.respond(mediator, builder);
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundEndpoint.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundEndpoint.java
index c5f8dde..273bc43 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundEndpoint.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundEndpoint.java
@@ -16,12 +16,12 @@
import org.eclipse.sensinact.gateway.core.message.AbstractMidAgentCallback;
import org.eclipse.sensinact.gateway.core.message.SnaFilter;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.ActResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.UnsubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.ActResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
+import org.eclipse.sensinact.gateway.core.method.SetResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.UnsubscribeResponse;
import org.eclipse.sensinact.gateway.core.security.Authentication;
import org.eclipse.sensinact.gateway.core.security.InvalidCredentialException;
import org.eclipse.sensinact.gateway.core.security.SecuredAccessException;
@@ -29,6 +29,9 @@
import org.json.JSONObject;
import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.Optional;
+import java.util.function.Predicate;
/**
* A NorthboundEndpoint is a connection point to a sensiNact instance
@@ -55,9 +58,8 @@
public NorthboundEndpoint(NorthboundMediator mediator, Authentication<?> authentication) throws InvalidCredentialException {
this.mediator = mediator;
this.session = this.mediator.getSession(authentication);
- if (this.session == null) {
+ if (this.session == null)
throw new NullPointerException("null sensiNact session");
- }
}
/**
@@ -84,13 +86,38 @@
*/
public AccessMethodResponse<?> execute(NorthboundRequest request) {
AccessMethodResponse<?> result = null;
-
Argument[] arguments = request.getExecutionArguments();
- Class<?>[] parameterTypes = Argument.getParameterTypes(arguments);
+ final String meth = request.getMethod();
+ final Class<?>[] parameterTypes = Argument.getParameterTypes(arguments);
+ Predicate<Method> predicate = m -> {
+ if(!m.getName().equals(meth))
+ return false;
+ Class<?>[] types = m.getParameterTypes();
+ if(types.length > (parameterTypes.length +1) || types.length < parameterTypes.length)
+ return false;
+ if(types.length == (parameterTypes.length +1) && !m.isVarArgs())
+ return false;
+ for(int i=0;i<parameterTypes.length;i++) {
+ if(!types[i].isAssignableFrom(parameterTypes[i]))
+ return false;
+ }
+ return true;
+ };
try {
- Method method = getClass().getDeclaredMethod(request.getMethod(), parameterTypes);
- result = (AccessMethodResponse<?>) method.invoke(this, Argument.getParameters(arguments));
+ Method[] methods = getClass().getDeclaredMethods();
+ Optional<Method> opt = Arrays.stream(methods).filter(predicate).findFirst();
+ Method method = opt.isPresent()?opt.get():null;
+ Object[] args = Argument.getParameters(arguments);
+
+ if(method.isVarArgs() && method.getParameterTypes().length == parameterTypes.length+1) {
+ Object[] _args = new Object[parameterTypes.length+1];
+ System.arraycopy(args, 0, _args, 0, parameterTypes.length);
+ _args[parameterTypes.length] = (Object[])null;
+ args = _args;
+ }
+ result = (AccessMethodResponse<?>) method.invoke(this, args);
} catch (Exception e) {
+ e.printStackTrace();
this.mediator.error(e);
}
return result;
@@ -104,9 +131,8 @@
* @throws SecuredAccessException
*/
public void registerUser(String login, String password, String account, String accountType) throws SecuredAccessException {
- if(!(session instanceof AnonymousSession)) {
+ if(!(session instanceof AnonymousSession))
throw new SecuredAccessException("Invalid Session");
- }
((AnonymousSession)session).registerUser(login, password, account, accountType);
}
@@ -115,9 +141,8 @@
* @throws SecuredAccessException
*/
public void renewUserPassword(String account) throws SecuredAccessException {
- if(!(session instanceof AnonymousSession)) {
+ if(!(session instanceof AnonymousSession))
throw new SecuredAccessException("Invalid Session");
- }
((AnonymousSession)session).renewPassword(account);
}
@@ -343,8 +368,9 @@
* @param attributeId the String identifier of the attribute
* @return
*/
- public GetResponse get(String requestIdentifier, String serviceProviderId, String serviceId, String resourceId, String attributeId) {
- return session.get(requestIdentifier, serviceProviderId, serviceId, resourceId, attributeId);
+ public GetResponse get(String requestIdentifier, String serviceProviderId, String serviceId, String resourceId,
+ String attributeId, Object...args) {
+ return session.get(requestIdentifier, serviceProviderId, serviceId, resourceId, attributeId, args);
}
/**
@@ -359,8 +385,9 @@
* @param value
* @return
*/
- public SetResponse set(String requestIdentifier, String serviceProviderId, String serviceId, String resourceId, String attributeId, Object value) {
- return session.set(requestIdentifier, serviceProviderId, serviceId, resourceId, attributeId, value);
+ public SetResponse set(String requestIdentifier, String serviceProviderId, String serviceId, String resourceId,
+ String attributeId, Object value, Object...args) {
+ return session.set(requestIdentifier, serviceProviderId, serviceId, resourceId, attributeId, value, args);
}
/**
@@ -392,8 +419,8 @@
* @return
*/
public SubscribeResponse subscribe(String requestIdentifier, String serviceProviderId, String serviceId, String resourceId, String attributeId,
- NorthboundRecipient recipient, JSONArray conditions, String policy) {
- return session.subscribe(requestIdentifier, serviceProviderId, serviceId, resourceId, recipient, conditions, policy);
+ NorthboundRecipient recipient, JSONArray conditions, String policy, Object...args) {
+ return session.subscribe(requestIdentifier, serviceProviderId, serviceId, resourceId, recipient, conditions, policy, args);
}
/**
@@ -408,7 +435,8 @@
* @param subscriptionId
* @return
*/
- public UnsubscribeResponse unsubscribe(String requestIdentifier, String serviceProviderId, String serviceId, String resourceId, String attributeId, String subscriptionId) {
- return session.unsubscribe(requestIdentifier, serviceProviderId, serviceId, resourceId, subscriptionId);
+ public UnsubscribeResponse unsubscribe(String requestIdentifier, String serviceProviderId, String serviceId, String resourceId, String attributeId,
+ String subscriptionId, Object...args) {
+ return session.unsubscribe(requestIdentifier, serviceProviderId, serviceId, resourceId, subscriptionId, args);
}
}
\ No newline at end of file
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundRequest.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundRequest.java
index d41e78a..caef646 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundRequest.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundRequest.java
@@ -139,19 +139,11 @@
this.filteringCollection = filteringCollection;
}
- /**
- * @inheritedDoc
- * @see org.eclipse.sensinact.gateway.util.common.primitive.PathElement#getPath()
- */
@Override
public String getPath() {
return ROOT;
}
- /**
- * @inheritDoc
- * @see NorthboundRequest#getExecutionArguments()
- */
protected Argument[] getExecutionArguments() {
Argument[] arguments = new Argument[1];
arguments[0] = new Argument(String.class, this.requestIdentifier);
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundRequestBuilder.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundRequestBuilder.java
index ce4577f..58af25f 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundRequestBuilder.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/NorthboundRequestBuilder.java
@@ -10,6 +10,9 @@
*/
package org.eclipse.sensinact.gateway.nthbnd.endpoint;
+import java.util.ArrayList;
+import java.util.List;
+
import org.eclipse.sensinact.gateway.common.execution.ErrorHandler;
import org.eclipse.sensinact.gateway.core.FilteringCollection;
import org.eclipse.sensinact.gateway.core.FilteringDefinition;
@@ -43,7 +46,7 @@
protected String requestIdentifier;
protected String method;
protected boolean listElements;
- private Object argument;
+ private List<Argument> arguments;
private FilteringDefinition[] filterDefinitions;
private boolean hiddenFilter;
@@ -56,6 +59,7 @@
*/
public NorthboundRequestBuilder(NorthboundMediator mediator) {
this.mediator = mediator;
+ this.arguments = new ArrayList<>();
if (this.mediator == null) {
throw new NullPointerException("Mediator needed");
}
@@ -138,15 +142,14 @@
}
/**
- * Define the argument that will be used to parameterize
- * the call to the method the request to be built is
- * targeting
+ * Define an argument that will be used to parameterize the associated method call
*
- * @param argument
+ * @param argument {@link Argument} wrapping the parameter
+ *
* @return this NorthboundRequestBuilder
*/
- public NorthboundRequestBuilder withArgument(Object argument) {
- this.argument = argument;
+ public NorthboundRequestBuilder withArgument(Argument argument) {
+ this.arguments.add(argument);
return this;
}
@@ -205,80 +208,76 @@
*/
public NorthboundRequest build() {
NorthboundRequest request = null;
- if (this.method == null) {
+ if (this.method == null)
return request;
- }
switch (this.method) {
case "ALL":
FilteringCollection collection = null;
- if (this.filterDefinitions != null) {
+ if (this.filterDefinitions != null)
collection = new FilteringCollection(mediator, this.hiddenFilter, this.filterDefinitions);
- }
request = new AllRequest(mediator, getRequestIdentifier(), collection);
break;
case "ACT":
- if (this.resource != null) {
- Object[] arguments = null;
- if (this.argument != null) {
- if (this.argument.getClass().isArray()) {
- arguments = (Object[]) this.argument;
-
- } else {
- arguments = new Object[]{this.argument};
- }
- }
- request = new ResourceActRequest(mediator, getRequestIdentifier(), serviceProvider, service, resource, arguments);
- }
+ if (this.resource != null)
+ request = new ResourceActRequest(mediator, getRequestIdentifier(), serviceProvider, service, resource,
+ this.arguments.stream().<List<Object>>collect(ArrayList::new,(l,a)->{l.add(a.value);},List::addAll).toArray());
break;
case "DESCRIBE":
- if (this.resource != null) {
+ if (this.resource != null)
request = new ResourceRequest(mediator, getRequestIdentifier(), serviceProvider, service, resource);
-
- } else if (service != null) {
- if (this.listElements) {
- request = new ResourcesRequest(mediator, getRequestIdentifier(), serviceProvider, service, this.filterDefinitions == null ? null : new FilteringCollection(mediator, this.hiddenFilter, this.filterDefinitions));
-
- } else {
- request = new ServiceRequest(mediator, getRequestIdentifier(), serviceProvider, service, null);
- }
+ else if (service != null) {
+ if (this.listElements)
+ request = new ResourcesRequest(mediator, getRequestIdentifier(), serviceProvider, service,
+ this.filterDefinitions == null ? null : new FilteringCollection(mediator, this.hiddenFilter, this.filterDefinitions));
+ else
+ request = new ServiceRequest(mediator, getRequestIdentifier(), serviceProvider, service, null);
} else if (serviceProvider != null) {
- if (this.listElements) {
- request = new ServicesRequest(mediator, getRequestIdentifier(), serviceProvider, this.filterDefinitions == null ? null : new FilteringCollection(mediator, this.hiddenFilter, this.filterDefinitions));
-
- } else {
+ if (this.listElements)
+ request = new ServicesRequest(mediator, getRequestIdentifier(), serviceProvider,
+ this.filterDefinitions == null ? null : new FilteringCollection(mediator, this.hiddenFilter, this.filterDefinitions));
+ else
request = new ServiceProviderRequest(mediator, getRequestIdentifier(), serviceProvider, null);
- }
- } else {
- request = new ServiceProvidersRequest(mediator, getRequestIdentifier(), this.filterDefinitions == null ? null : new FilteringCollection(mediator, this.hiddenFilter, this.filterDefinitions));
- }
+
+ } else
+ request = new ServiceProvidersRequest(mediator, getRequestIdentifier(),
+ this.filterDefinitions == null ? null : new FilteringCollection(mediator, this.hiddenFilter, this.filterDefinitions));
break;
case "GET":
- request = new AttributeGetRequest(mediator, getRequestIdentifier(), serviceProvider, service, resource, attribute);
+ request = new AttributeGetRequest(mediator, getRequestIdentifier(), serviceProvider, service, resource,
+ attribute, this.arguments==null || this.arguments.size()==0 ?null:this.arguments.toArray(new Argument[0]));
break;
case "SET":
- request = new AttributeSetRequest(mediator, getRequestIdentifier(), serviceProvider, service, resource, attribute, argument);
+ List<Argument> extraArguments = this.arguments.size()>1?this.arguments.subList(1, this.arguments.size()-1):null;
+ request = new AttributeSetRequest(mediator, getRequestIdentifier(), serviceProvider, service, resource,
+ attribute, this.arguments.get(0).value, extraArguments==null|| extraArguments.size()==0?null:extraArguments.toArray(new Argument[0]));
break;
case "SUBSCRIBE":
- Object[] arguments = this.argument != null ? (this.argument.getClass().isArray() ? (Object[]) this.argument : new Object[]{this.argument}) : null;
-
- if (arguments == null || arguments.length == 0 || !NorthboundRecipient.class.isAssignableFrom(arguments[0].getClass())) {
+ if (this.arguments == null || this.arguments.size() == 0)
break;
+ NorthboundRecipient northboundRecipient = null;
+ try{
+ northboundRecipient = (NorthboundRecipient)this.arguments.get(0).value;
+ } catch(ClassCastException e){
+ break;
}
- if (this.resource != null) {
- request = new AttributeSubscribeRequest(mediator, getRequestIdentifier(), serviceProvider, service, resource, attribute, (NorthboundRecipient) arguments[0],
- (arguments.length > 1 ? ((JSONArray) arguments[1]) : new JSONArray()),(arguments.length > 2 ? ((String) arguments[2]) : String.valueOf(ErrorHandler.Policy.DEFAULT_POLICY)));
- } else {
- request = new RegisterAgentRequest(mediator, getRequestIdentifier(), serviceProvider, service, (NorthboundRecipient) arguments[0],
- (SnaFilter) (arguments.length > 1 ? arguments[1] : null),(arguments.length > 2 ? ((String) arguments[2]) : String.valueOf(ErrorHandler.Policy.DEFAULT_POLICY)));
- }
+ String policy = this.arguments.size() > 2?((String) this.arguments.get(2).value):String.valueOf(ErrorHandler.Policy.DEFAULT_POLICY);
+ extraArguments = this.arguments.size() > 3?this.arguments.subList(3, this.arguments.size()-1):null;
+ if (this.resource != null)
+ request = new AttributeSubscribeRequest(mediator, getRequestIdentifier(), serviceProvider, service, resource, attribute,
+ northboundRecipient, (JSONArray)(this.arguments.size() > 1?this.arguments.get(1).value:new JSONArray()),
+ policy, extraArguments==null|| extraArguments.size()==0?null:extraArguments.toArray(new Argument[0]));
+ else
+ request = new RegisterAgentRequest(mediator, getRequestIdentifier(), serviceProvider, service, northboundRecipient,
+ (SnaFilter) (this.arguments.size() > 1 ?this.arguments.get(1).value:null), policy);
break;
case "UNSUBSCRIBE":
- String arg = CastUtils.cast(mediator.getClassLoader(), String.class, this.argument);
- if (this.resource != null) {
- request = new AttributeUnsubscribeRequest(mediator, getRequestIdentifier(), serviceProvider, service, resource, attribute, arg);
- } else {
- request = new UnregisterAgentRequest(mediator, getRequestIdentifier(), arg);
- }
+ extraArguments = this.arguments.size()>1?this.arguments.subList(1, this.arguments.size()-1):null;
+ String subcriptionId = CastUtils.cast(mediator.getClassLoader(), String.class, this.arguments.get(0).value);
+ if (this.resource != null)
+ request = new AttributeUnsubscribeRequest(mediator, getRequestIdentifier(), serviceProvider, service, resource,
+ attribute, subcriptionId, extraArguments==null|| extraArguments.size()==0?null:extraArguments.toArray(new Argument[0]));
+ else
+ request = new UnregisterAgentRequest(mediator, getRequestIdentifier(), subcriptionId);
break;
default:
break;
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ResourceActRequest.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ResourceActRequest.java
index b951dbf..8d4d7d5 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ResourceActRequest.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ResourceActRequest.java
@@ -22,7 +22,8 @@
* @param requestIdentifier
* @param arguments
*/
- public ResourceActRequest(NorthboundMediator mediator, String requestIdentifier, String serviceProvider, String service, String resource, Object[] arguments) {
+ public ResourceActRequest(NorthboundMediator mediator, String requestIdentifier, String serviceProvider, String service, String resource,
+ Object[] arguments) {
super(mediator, requestIdentifier, serviceProvider, service, resource);
this.arguments = arguments;
}
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ResourceRequest.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ResourceRequest.java
index 6451b6b..2cf1455 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ResourceRequest.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ResourceRequest.java
@@ -24,41 +24,22 @@
public ResourceRequest(NorthboundMediator mediator, String requestIdentifier, String serviceProvider, String service, String resource) {
super(mediator, requestIdentifier, serviceProvider, service, null);
this.resource = resource;
-// if (this.resource == null) {
-// throw new NullPointerException("Resource missing");
-// }
}
- /**
- * @inheritDoc
- * @see ResourcesRequest#getName()
- */
public String getName() {
return resource;
}
- /**
- * @inheritDoc
- * @see ResourcesRequest#getPath()
- */
@Override
public String getPath() {
return new StringBuilder().append(super.getPath()).append(UriUtils.PATH_SEPARATOR).append(this.getName()).toString();
}
- /**
- * @inheritDoc
- * @see ResourcesRequest#getMethod()
- */
@Override
protected String getMethod() {
return "resourceDescription";
}
- /**
- * @inheritDoc
- * @see NorthboundRequest#getExecutionArguments()
- */
@Override
protected Argument[] getExecutionArguments() {
Argument[] superArguments = super.getExecutionArguments();
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ResourcesRequest.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ResourcesRequest.java
index 14b9d1c..15652ce 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ResourcesRequest.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ResourcesRequest.java
@@ -25,45 +25,29 @@
super(mediator, requestIdentifier, serviceProvider, service, filteringCollection);
}
- /**
- * @inheritDoc
- * @see ServiceRequest#getName()
- */
+ @Override
public String getName() {
return null;
}
- /**
- * @inheritDoc
- * @see ServiceRequest#getPath()
- */
@Override
public String getPath() {
return new StringBuilder().append(super.getPath()).append(UriUtils.PATH_SEPARATOR).append("resources").toString();
}
- /**
- * @inheritDoc
- * @see ServiceRequest#getMethod()
- */
@Override
protected String getMethod() {
return "resourcesList";
}
- /**
- * @inheritDoc
- * @see NorthboundRequest#getExecutionArguments()
- */
@Override
protected Argument[] getExecutionArguments() {
if (this.getClass() == ResourcesRequest.class && super.filteringCollection != null) {
Argument[] superArguments = super.getExecutionArguments();
int length = superArguments == null ? 0 : superArguments.length;
Argument[] arguments = new Argument[length + 1];
- if (length > 0) {
- System.arraycopy(superArguments, 0, arguments, 0, length);
- }
+ if (length > 0)
+ System.arraycopy(superArguments, 0, arguments, 0, length);
arguments[length] = new Argument(FilteringCollection.class, super.filteringCollection);
return arguments;
}
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ServiceProviderRequest.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ServiceProviderRequest.java
index d3d618b..c376a4d 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ServiceProviderRequest.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ServiceProviderRequest.java
@@ -62,9 +62,8 @@
Argument[] superArguments = super.getExecutionArguments();
int length = superArguments == null ? 0 : superArguments.length;
Argument[] arguments = new Argument[length + 1];
- if (length > 0) {
+ if (length > 0)
System.arraycopy(superArguments, 0, arguments, 0, length);
- }
arguments[length] = new Argument(String.class, serviceProvider);
return arguments;
}
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ServiceProvidersRequest.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ServiceProvidersRequest.java
index 0266087..11115b6 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ServiceProvidersRequest.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ServiceProvidersRequest.java
@@ -17,49 +17,31 @@
public ServiceProvidersRequest(NorthboundMediator mediator, String requestIdentifier, FilteringCollection filteringCollection) {
super(mediator, requestIdentifier, filteringCollection);
}
-
- /**
- * @inheritDoc
- * @see ServiceProvidersRequest#
- * getName()
- */
+
+ @Override
public String getName() {
return null;
}
- /**
- * @inheritDoc
- * @see ServiceProvidersRequest#
- * getPath()
- */
@Override
public String getPath() {
return new StringBuilder().append(super.getPath()).append(UriUtils.PATH_SEPARATOR).append("providers").toString();
}
- /**
- * @inheritDoc
- * @see NorthboundRequest#getExecutionArguments()
- */
@Override
protected Argument[] getExecutionArguments() {
Argument[] superArguments = super.getExecutionArguments();
int length = superArguments == null ? 0 : superArguments.length;
if (this.getClass() == ServiceProvidersRequest.class && super.filteringCollection != null) {
Argument[] arguments = new Argument[length + 1];
- if (length > 0) {
- System.arraycopy(superArguments, 0, arguments, 0, length);
- }
+ if (length > 0)
+ System.arraycopy(superArguments, 0, arguments, 0, length);
arguments[length] = new Argument(FilteringCollection.class, super.filteringCollection);
return arguments;
}
return superArguments;
}
- /**
- * @inheritDoc
- * @see NorthboundRequest#getMethod()
- */
@Override
protected String getMethod() {
return "serviceProvidersList";
diff --git a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ServicesRequest.java b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ServicesRequest.java
index f07de11..13002a5 100644
--- a/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ServicesRequest.java
+++ b/platform/northbound/sensinact-access/src/main/java/org/eclipse/sensinact/gateway/nthbnd/endpoint/ServicesRequest.java
@@ -54,9 +54,8 @@
Argument[] superArguments = super.getExecutionArguments();
int length = superArguments == null ? 0 : superArguments.length;
Argument[] arguments = new Argument[length + 1];
- if (length > 0) {
+ if (length > 0)
System.arraycopy(superArguments, 0, arguments, 0, length);
- }
arguments[length] = new Argument(FilteringCollection.class, super.filteringCollection);
return arguments;
}
diff --git a/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/application/Application.java b/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/application/Application.java
index ddd5635..3c19db3 100644
--- a/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/application/Application.java
+++ b/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/application/Application.java
@@ -31,7 +31,7 @@
import org.eclipse.sensinact.gateway.app.manager.watchdog.AppExceptionWatchDog;
import org.eclipse.sensinact.gateway.core.message.SnaErrorMessage;
import org.eclipse.sensinact.gateway.core.message.SnaMessage;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
import org.eclipse.sensinact.gateway.util.UriUtils;
import org.json.JSONObject;
import org.osgi.framework.ServiceRegistration;
diff --git a/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/application/dependency/DependencyManager.java b/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/application/dependency/DependencyManager.java
index ae0e56f..5f65069 100644
--- a/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/application/dependency/DependencyManager.java
+++ b/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/application/dependency/DependencyManager.java
@@ -19,7 +19,7 @@
import org.eclipse.sensinact.gateway.core.message.SnaLifecycleMessageImpl;
import org.eclipse.sensinact.gateway.core.message.SnaMessage;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/component/data/ResourceData.java b/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/component/data/ResourceData.java
index c308e63..dbf59c2 100644
--- a/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/component/data/ResourceData.java
+++ b/platform/sensinact-application/application-manager/src/main/java/org/eclipse/sensinact/gateway/app/manager/component/data/ResourceData.java
@@ -14,10 +14,10 @@
import org.eclipse.sensinact.gateway.core.DataResource;
import org.eclipse.sensinact.gateway.core.Metadata;
import org.eclipse.sensinact.gateway.core.Session;
-import org.eclipse.sensinact.gateway.core.method.legacy.ActResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetResponse;
+import org.eclipse.sensinact.gateway.core.method.ActResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
+import org.eclipse.sensinact.gateway.core.method.SetResponse;
import org.eclipse.sensinact.gateway.util.CastUtils;
import org.eclipse.sensinact.gateway.util.UriUtils;
import org.json.JSONObject;
diff --git a/platform/sensinact-application/application-manager/src/test/java/org/eclipse/sensinact/gateway/app/manager/test/TestComponentFactory.java b/platform/sensinact-application/application-manager/src/test/java/org/eclipse/sensinact/gateway/app/manager/test/TestComponentFactory.java
index e8e6a3b..e67a550 100644
--- a/platform/sensinact-application/application-manager/src/test/java/org/eclipse/sensinact/gateway/app/manager/test/TestComponentFactory.java
+++ b/platform/sensinact-application/application-manager/src/test/java/org/eclipse/sensinact/gateway/app/manager/test/TestComponentFactory.java
@@ -38,7 +38,7 @@
import org.eclipse.sensinact.gateway.core.ServiceProviderImpl;
import org.eclipse.sensinact.gateway.core.Session;
import org.eclipse.sensinact.gateway.core.TypeConfig;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
import org.eclipse.sensinact.gateway.util.UriUtils;
import org.json.JSONObject;
import org.junit.Before;
diff --git a/platform/sensinact-application/application-manager/src/test/java/org/eclipse/sensinact/gateway/app/manager/test/TestComponentInstance.java b/platform/sensinact-application/application-manager/src/test/java/org/eclipse/sensinact/gateway/app/manager/test/TestComponentInstance.java
index 963c1d2..2ce9e87 100644
--- a/platform/sensinact-application/application-manager/src/test/java/org/eclipse/sensinact/gateway/app/manager/test/TestComponentInstance.java
+++ b/platform/sensinact-application/application-manager/src/test/java/org/eclipse/sensinact/gateway/app/manager/test/TestComponentInstance.java
@@ -44,11 +44,11 @@
import org.eclipse.sensinact.gateway.core.message.Recipient;
import org.eclipse.sensinact.gateway.core.message.SnaConstants;
import org.eclipse.sensinact.gateway.core.message.SnaMessage;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse.Status;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeMethod.DescribeType;
+import org.eclipse.sensinact.gateway.core.method.DescribeMethod.DescribeType;
import org.eclipse.sensinact.gateway.util.UriUtils;
import org.json.JSONArray;
import org.json.JSONObject;
diff --git a/platform/sensinact-application/application-manager/src/test/java/org/eclipse/sensinact/gateway/app/manager/test/TestSubscription.java b/platform/sensinact-application/application-manager/src/test/java/org/eclipse/sensinact/gateway/app/manager/test/TestSubscription.java
index 4a2c019..51e764d 100644
--- a/platform/sensinact-application/application-manager/src/test/java/org/eclipse/sensinact/gateway/app/manager/test/TestSubscription.java
+++ b/platform/sensinact-application/application-manager/src/test/java/org/eclipse/sensinact/gateway/app/manager/test/TestSubscription.java
@@ -44,12 +44,12 @@
import org.eclipse.sensinact.gateway.core.message.Recipient;
import org.eclipse.sensinact.gateway.core.message.SnaConstants;
import org.eclipse.sensinact.gateway.core.message.SnaMessage;
+import org.eclipse.sensinact.gateway.core.method.DescribeJSONResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse.Status;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeJSONResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeMethod.DescribeType;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeMethod.DescribeType;
import org.eclipse.sensinact.gateway.util.UriUtils;
import org.json.JSONArray;
import org.json.JSONObject;
diff --git a/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/AppActionResponse.java b/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/AppActionResponse.java
index 97e40cd..0584561 100644
--- a/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/AppActionResponse.java
+++ b/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/AppActionResponse.java
@@ -11,7 +11,7 @@
package org.eclipse.sensinact.gateway.app.basic.test;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.legacy.ActResponse;
+import org.eclipse.sensinact.gateway.core.method.ActResponse;
class AppActionResponse extends ActResponse {
public AppActionResponse(Mediator mediator, String uri, Status status, int code) {
diff --git a/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/DisplayActionResource.java b/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/DisplayActionResource.java
index 873e938..5a76ebf 100644
--- a/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/DisplayActionResource.java
+++ b/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/DisplayActionResource.java
@@ -20,11 +20,11 @@
import org.eclipse.sensinact.gateway.core.ModelElementProxy;
import org.eclipse.sensinact.gateway.core.message.Recipient;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.ActResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.UnsubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.ActResponse;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
+import org.eclipse.sensinact.gateway.core.method.SetResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.UnsubscribeResponse;
import java.util.Enumeration;
import java.util.Set;
@@ -45,34 +45,34 @@
}
@Override
- public GetResponse get(String s) {
+ public GetResponse get(String s, Object...args) {
return null;
}
@Override
- public SetResponse set(String s, Object o) {
+ public SetResponse set(String s, Object o, Object...args) {
return null;
}
@Override
- public SubscribeResponse subscribe(String s, Recipient recipient) {
+ public SubscribeResponse subscribe(String s, Recipient recipient, Object...args) {
return null;
}
@Override
- public SubscribeResponse subscribe(String s, Recipient recipient, Set<Constraint> set) {
+ public SubscribeResponse subscribe(String s, Recipient recipient, Set<Constraint> set, Object...args) {
return null;
}
@Override
public SubscribeResponse subscribe(String attributeName, Recipient recipient, Set<Constraint> conditions,
- String policy) {
+ String policy, Object...args) {
return null;
}
@Override
- public UnsubscribeResponse unsubscribe(String s, String s1) {
+ public UnsubscribeResponse unsubscribe(String s, String s1, Object...args) {
return null;
}
diff --git a/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/StateActionResource.java b/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/StateActionResource.java
index 033f30c..7459610 100644
--- a/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/StateActionResource.java
+++ b/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/StateActionResource.java
@@ -20,11 +20,11 @@
import org.eclipse.sensinact.gateway.core.ModelElementProxy;
import org.eclipse.sensinact.gateway.core.message.Recipient;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.ActResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.UnsubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.ActResponse;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
+import org.eclipse.sensinact.gateway.core.method.SetResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.UnsubscribeResponse;
import java.util.Enumeration;
import java.util.Set;
@@ -47,33 +47,33 @@
}
@Override
- public GetResponse get(String s) {
+ public GetResponse get(String s, Object...args) {
return null;
}
@Override
- public SetResponse set(String s, Object o) {
+ public SetResponse set(String s, Object o, Object...args) {
return null;
}
@Override
- public SubscribeResponse subscribe(String s, Recipient recipient) {
+ public SubscribeResponse subscribe(String s, Recipient recipient, Object...args) {
return null;
}
@Override
- public SubscribeResponse subscribe(String s, Recipient recipient, Set<Constraint> set) {
+ public SubscribeResponse subscribe(String s, Recipient recipient, Set<Constraint> set, Object...args) {
return null;
}
@Override
public SubscribeResponse subscribe(String attributeName, Recipient recipient, Set<Constraint> conditions,
- String policy) {
+ String policy, Object...args) {
return null;
}
@Override
- public UnsubscribeResponse unsubscribe(String s, String s1) {
+ public UnsubscribeResponse unsubscribe(String s, String s1, Object...args) {
return null;
}
diff --git a/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/TestSnaFunction.java b/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/TestSnaFunction.java
index f994604..d94448a 100644
--- a/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/TestSnaFunction.java
+++ b/platform/sensinact-application/basic-plugin/src/test/java/org/eclipse/sensinact/gateway/app/basic/test/TestSnaFunction.java
@@ -37,11 +37,11 @@
import org.eclipse.sensinact.gateway.core.Session;
import org.eclipse.sensinact.gateway.core.TypeConfig;
import org.eclipse.sensinact.gateway.core.message.SnaConstants;
+import org.eclipse.sensinact.gateway.core.method.ActResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.SetResponse;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse.Status;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.ActResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeMethod.DescribeType;
+import org.eclipse.sensinact.gateway.core.method.DescribeMethod.DescribeType;
import org.eclipse.sensinact.gateway.core.security.AccessLevelOption;
import org.eclipse.sensinact.gateway.core.security.AccessProfileOption;
import org.eclipse.sensinact.gateway.core.security.AccessTreeImpl;
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/AbstractSession.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/AbstractSession.java
index fbc6528..46e61d1 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/AbstractSession.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/AbstractSession.java
@@ -24,15 +24,15 @@
import org.eclipse.sensinact.gateway.core.message.SnaFilter;
import org.eclipse.sensinact.gateway.core.method.AccessMethod;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
+import org.eclipse.sensinact.gateway.core.method.ActResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponseBuilder;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
+import org.eclipse.sensinact.gateway.core.method.SetResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.UnsubscribeResponse;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse.Status;
-import org.eclipse.sensinact.gateway.core.method.legacy.ActResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeMethod.DescribeType;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponseBuilder;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.UnsubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeMethod.DescribeType;
import org.json.JSONArray;
import org.json.JSONObject;
@@ -42,21 +42,6 @@
* @author <a href="mailto:christophe.munilla@cea.fr">Christophe Munilla</a>
*/
public abstract class AbstractSession implements Session {
- // ********************************************************************//
- // NESTED DECLARATIONS //
- // ********************************************************************//
-
- // ********************************************************************//
- // ABSTRACT DECLARATIONS //
- // ********************************************************************//
-
- // ********************************************************************//
- // STATIC DECLARATIONS //
- // ********************************************************************//
-
- // ********************************************************************//
- // INSTANCE DECLARATIONS //
- // ********************************************************************//
protected final String identifier;
@@ -85,40 +70,45 @@
return response;
}
+ @SuppressWarnings("unchecked")
protected <A extends AccessMethodResponse<JSONObject>> A responseFromJSONObject(Mediator mediator, String uri,
String method, JSONObject object) throws Exception {
- A response = null;
- if (object == null) {
- response = AccessMethodResponse.<JSONObject, A>error(mediator, uri, AccessMethod.Type.valueOf(method),
- SnaErrorfulMessage.NOT_FOUND_ERROR_CODE, "Not found", null);
+ if (object == null)
+ return AccessMethodResponse.<JSONObject, A>error(mediator, uri, AccessMethod.Type.valueOf(method),
+ SnaErrorfulMessage.NOT_FOUND_ERROR_CODE, "Not found", null);
+ else {
+ switch (method) {
+ case "ACT":
+ return (A) this.<ActResponse>responseFromJSONObject(ActResponse.class, mediator, uri, method, object);
+ case "GET":
+ return (A) this.<GetResponse>responseFromJSONObject(GetResponse.class, mediator, uri, method, object);
+ case "SET":
+ return (A) this.<SetResponse>responseFromJSONObject(SetResponse.class, mediator, uri, method, object);
+ case "SUBSCRIBE":
+ return (A) this.<SubscribeResponse>responseFromJSONObject(SubscribeResponse.class, mediator, uri,
+ method, object);
+ case "UNSUBSCRIBE":
+ return (A) this.<UnsubscribeResponse>responseFromJSONObject(UnsubscribeResponse.class, mediator, uri,
+ method, object);
+ default:
+ break;
+ }
+ }
+ return (A) null;
+ }
- } else {
+ protected <A extends AccessMethodResponse<JSONObject>> A responseFromJSONObject(Class<A> responseType, Mediator mediator,
+ String uri, String method, JSONObject object) throws Exception {
+ A response = null;
+ if (object == null)
+ response = AccessMethodResponse.<JSONObject, A>error(mediator, uri, AccessMethod.Type.valueOf(method),
+ SnaErrorfulMessage.NOT_FOUND_ERROR_CODE, "Not found", null);
+ else {
object.remove("type");
object.remove("uri");
Integer statusCode = (Integer) object.remove("statusCode");
-
- Class<A> clazz = null;
- switch (method) {
- case "ACT":
- clazz = (Class<A>) ActResponse.class;
- break;
- case "GET":
- clazz = (Class<A>) GetResponse.class;
- break;
- case "SET":
- clazz = (Class<A>) SetResponse.class;
- break;
- case "SUBSCRIBE":
- clazz = (Class<A>) SubscribeResponse.class;
- break;
- case "UNSUBSCRIBE":
- clazz = (Class<A>) UnsubscribeResponse.class;
- break;
- default:
- break;
- }
- if (clazz != null) {
- response = clazz.getConstructor(new Class<?>[] { Mediator.class, String.class,
+ if (responseType != null) {
+ response = responseType.getConstructor(new Class<?>[] { Mediator.class, String.class,
Status.class, int.class }).newInstance(mediator, uri, statusCode.intValue() == 200
? Status.SUCCESS : Status.ERROR, statusCode.intValue());
@@ -137,8 +127,8 @@
return response;
}
- protected DescribeResponse<JSONObject> describeFromJSONObject(Mediator mediator,
- DescribeResponseBuilder<JSONObject> builder, DescribeType describeType, JSONObject object) {
+ protected DescribeResponse<JSONObject> describeFromJSONObject(Mediator mediator, DescribeResponseBuilder<JSONObject> builder,
+ DescribeType describeType, JSONObject object) {
DescribeResponse<JSONObject> response = null;
if (object == null) {
String element = describeType.name().toLowerCase();
@@ -190,22 +180,11 @@
return this.identifier;
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#getServiceProviders()
- */
@Override
public Set<ServiceProvider> serviceProviders() {
return this.serviceProviders(null);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session# getService(java.lang.String,
- * java.lang.String)
- */
@Override
public Service service(String serviceProviderName, String serviceName) {
Service service = null;
@@ -216,12 +195,6 @@
return service;
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#
- * getResource(java.lang.String, java.lang.String, java.lang.String)
- */
@Override
public Resource resource(String serviceProviderName, String serviceName, String resourceName) {
Resource resource = null;
@@ -232,265 +205,123 @@
return resource;
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#
- * registerSessionIntent(org.eclipse.sensinact.gateway.common.execution.Executable, java.lang.String[])
- */
@Override
public SubscribeResponse registerSessionIntent(Executable<Boolean,Void> callback, String... resourcePath) {
return registerSessionIntent(null, callback, resourcePath);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#unregisterSessionIntent(java.lang.String)
- */
@Override
public UnsubscribeResponse unregisterSessionIntent(String intentId) {
return unregisterSessionIntent(null, intentId);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#registerSessionAgent(org.eclipse.sensinact.gateway.core.message.MidAgentCallback,
- * org.eclipse.sensinact.gateway.core.message.SnaFilter)
- */
@Override
public SubscribeResponse registerSessionAgent(MidAgentCallback callback, SnaFilter filter) {
return registerSessionAgent(null, callback, filter);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#
- * unregisterSessionAgent(java.lang.String)
- */
@Override
public UnsubscribeResponse unregisterSessionAgent(String agentId) {
return unregisterSessionAgent(null, agentId);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session# get(java.lang.String,
- * java.lang.String, java.lang.String, java.lang.String)
- */
@Override
- public GetResponse get(String serviceProviderId, String serviceId, String resourceId, String attributeId) {
- return get(null, serviceProviderId, serviceId, resourceId, attributeId);
+ public GetResponse get(String serviceProviderId, String serviceId, String resourceId, String attributeId, Object...args) {
+ return get(null, serviceProviderId, serviceId, resourceId, attributeId, args);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session# set(java.lang.String,
- * java.lang.String, java.lang.String, java.lang.String, java.lang.Object)
- */
@Override
public SetResponse set(final String serviceProviderId, final String serviceId, final String resourceId,
- final String attributeId, final Object parameter) {
- return set(null, serviceProviderId, serviceId, resourceId, attributeId, parameter);
+ final String attributeId, final Object parameter, Object... args) {
+ return set(null, serviceProviderId, serviceId, resourceId, attributeId, parameter, args);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session# act(java.lang.String,
- * java.lang.String, java.lang.String, java.lang.Object[])
- */
- public ActResponse act(String serviceProviderId, String serviceId, String resourceId,
- Object[] parameters) {
+ @Override
+ public ActResponse act(String serviceProviderId, String serviceId, String resourceId, Object[] parameters) {
return act(null, serviceProviderId, serviceId, resourceId, parameters);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session# subscribe(java.lang.String,
- * java.lang.String, java.lang.String,org.eclipse.sensinact.gateway.core.message.Recipient,
- * org.json.JSONArray)
- */
@Override
public SubscribeResponse subscribe(String serviceProviderId, String serviceId,
- String resourceId, Recipient recipient, JSONArray conditions) {
- return subscribe(null, serviceProviderId, serviceId, resourceId, recipient, conditions);
+ String resourceId, Recipient recipient, JSONArray conditions, Object...args) {
+ return subscribe(null, serviceProviderId, serviceId, resourceId, recipient, conditions, args);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#subscribe(java.lang.String, java.lang.String,
- * java.lang.String, org.eclipse.sensinact.gateway.core.message.Recipient, org.json.JSONArray,
- * java.lang.String)
- */
@Override
public SubscribeResponse subscribe(String serviceProviderId, String serviceId,
- String resourceId, Recipient recipient, JSONArray conditions, String policy) {
- return subscribe(null, serviceProviderId, serviceId, resourceId, recipient, conditions, policy);
+ String resourceId, Recipient recipient, JSONArray conditions, String policy, Object...args) {
+ return subscribe(null, serviceProviderId, serviceId, resourceId, recipient, conditions, policy, args);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#subscribe(java.lang.String, java.lang.String,
- * java.lang.String, java.lang.String, org.eclipse.sensinact.gateway.core.message.Recipient,
- * org.json.JSONArray)
- */
@Override
public SubscribeResponse subscribe(String requestId, String serviceProviderId, String serviceId,
- String resourceId, Recipient recipient, JSONArray conditions) {
+ String resourceId, Recipient recipient, JSONArray conditions, Object...args) {
return subscribe(requestId, serviceProviderId, serviceId, resourceId, recipient,
- conditions, String.valueOf(ErrorHandler.Policy.DEFAULT_POLICY));
+ conditions, String.valueOf(ErrorHandler.Policy.DEFAULT_POLICY), args);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#
- * unsubscribe(java.lang.String, java.lang.String, java.lang.String,
- * java.lang.String)
- */
@Override
public UnsubscribeResponse unsubscribe(String serviceProviderId, String serviceId,
- final String resourceId, String subscriptionId) {
- return unsubscribe(null, serviceProviderId, serviceId, resourceId, subscriptionId);
+ final String resourceId, String subscriptionId, Object...args) {
+ return unsubscribe(null, serviceProviderId, serviceId, resourceId, subscriptionId, args);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session# getAll(java.lang.String,
- * org.eclipse.sensinact.gateway.core.FilteringDefinition)
- */
@Override
public DescribeResponse<String> getAll() {
return getAll(null, null, null);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session# getAll(java.lang.String,
- * org.eclipse.sensinact.gateway.core.FilteringDefinition)
- */
@Override
public DescribeResponse<String> getAll(FilteringCollection filterCollection) {
return getAll(null, null, filterCollection);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session# getAll(java.lang.String,
- * org.eclipse.sensinact.gateway.core.FilteringDefinition)
- */
@Override
public DescribeResponse<String> getAll(String filter, FilteringCollection filterCollection) {
return getAll(null, filter, filterCollection);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#getProviders()
- */
@Override
public DescribeResponse<String> getProviders() {
return getProviders(null, null);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#
- * getProviders(org.eclipse.sensinact.gateway.core.FilteringCollection)
- */
@Override
public DescribeResponse<String> getProviders(FilteringCollection filterCollection) {
return getProviders(null, filterCollection);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#
- * getProvider(java.lang.String)
- */
@Override
public DescribeResponse<JSONObject> getProvider(String serviceProviderId) {
return getProvider(null, serviceProviderId);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#
- * getServices(java.lang.String)
- */
@Override
public DescribeResponse<String> getServices(String serviceProviderId) {
return getServices(null, serviceProviderId, null);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#
- * getServices(java.lang.String,
- * org.eclipse.sensinact.gateway.core.FilteringCollection)
- */
@Override
public DescribeResponse<String> getServices(final String serviceProviderId, FilteringCollection filterCollection) {
return getServices(null, serviceProviderId, filterCollection);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session# getService(java.lang.String,
- * java.lang.String)
- */
@Override
public DescribeResponse<JSONObject> getService(final String serviceProviderId, final String serviceId) {
return getService(null, serviceProviderId, serviceId);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#
- * getResources(java.lang.String, java.lang.String)
- */
@Override
public DescribeResponse<String> getResources(final String serviceProviderId, final String serviceId) {
return getResources(null, serviceProviderId, serviceId, null);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#
- * getResources(java.lang.String, java.lang.String,
- * org.eclipse.sensinact.gateway.core.FilteringDefinition)
- */
@Override
public DescribeResponse<String> getResources(final String serviceProviderId, final String serviceId,
FilteringCollection filterCollection) {
return getResources(null, serviceProviderId, serviceId, filterCollection);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.Session#
- * getResource(java.lang.String, java.lang.String, java.lang.String)
- */
@Override
public DescribeResponse<JSONObject> getResource(final String serviceProviderId, final String serviceId,
final String resourceId) {
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ActionResource.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ActionResource.java
index e465489..888d9b1 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ActionResource.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ActionResource.java
@@ -11,7 +11,7 @@
package org.eclipse.sensinact.gateway.core;
-import org.eclipse.sensinact.gateway.core.method.legacy.ActResponse;
+import org.eclipse.sensinact.gateway.core.method.ActResponse;
/**
* Extended {@link Resource} for Action
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Attribute.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Attribute.java
index c6fcbb4..3a5c74f 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Attribute.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Attribute.java
@@ -181,11 +181,11 @@
*/
public MetadataDescription setMetadataValue(String name, Object value) throws InvalidValueException {
Metadata metadata = null;
- if (name == null || (metadata = this.get(name)) == null) {
+ if (name == null || (metadata = this.get(name)) == null)
return null;
- }
metadata.setValue(value);
- return (MetadataDescription) metadata.getDescription();
+ MetadataDescription description = (MetadataDescription) metadata.getDescription();
+ return description;
}
/**
@@ -201,16 +201,15 @@
synchronized (this.metadata) {
if (meta == null) {
this.metadata.add(metadata);
- super.weakDescription = null;
-
+ super.weakDescription = null;
+ if(!metadata.getName().equals(Metadata.HIDDEN) && metadata.getModifiable().equals(Modifiable.FIXED))
+ this.resource.updated(this, metadata.getDescription());
} else {
try {
this.setMetadataValue(metadata.getName(), metadata.getValue());
-
} catch (InvalidValueException e) {
- if (super.mediator.isErrorLoggable()) {
- super.mediator.error(e, e.getMessage());
- }
+ if (super.mediator.isErrorLoggable())
+ super.mediator.error(e);
}
return;
}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/AttributeBuilder.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/AttributeBuilder.java
index 779f3c1..16505b7 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/AttributeBuilder.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/AttributeBuilder.java
@@ -214,7 +214,7 @@
* @throws InvalidAttributeException
*/
private AttributeBuilder(String name, Requirement[] requirementsArray, Deque<Requirement> requirementsList,
- boolean hidden, Modifiable modifiable, Class<?> type, Object value) throws InvalidAttributeException {
+ boolean hidden, Modifiable modifiable, Class<?> type, Object value) throws InvalidAttributeException {
if (name == null)
throw new InvalidAttributeException("attribute name required");
@@ -241,11 +241,6 @@
this.metadataBuilders.addAll(metadataBuilder);
}
- /**
- * @inheritDoc
- *
- * @see java.lang.Object#clone()
- */
public Object clone() {
AttributeBuilder clone = new AttributeBuilder(this.name, this.requirementsArray, this.requirementsList,
this.hidden, this.modifiable, this.type, this.value);
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/DataResource.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/DataResource.java
index 3031f9e..cbf932c 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/DataResource.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/DataResource.java
@@ -14,15 +14,15 @@
import org.eclipse.sensinact.gateway.common.constraint.Constraint;
import org.eclipse.sensinact.gateway.core.message.Recipient;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.UnsubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
+import org.eclipse.sensinact.gateway.core.method.SetResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.UnsubscribeResponse;
/**
* Extended {@link Resource} holding a 'value' attribute
*
- * @author <a href="mailto:christophe.munilla@cea.fr">Christophe Munilla</a>
+ * @author <a href="mailto:cmunilla@kentyou.com">Christophe Munilla</a>
*/
public interface DataResource extends Resource {
// Value attribute name
@@ -47,9 +47,11 @@
* {@link GetResponse}. The read attribute is the one defined as being
* the default attribute of this DataResource (the "value" attribute by default).
*
+ * @param args optional variable Objects array parameterizing the call
+ *
* @return the {@link GetResponse} of the executed get access method
*/
- GetResponse get();
+ GetResponse get(Object...args);
/**
* Executes an set access method on this DataResource and returns its
@@ -57,10 +59,11 @@
* the default attribute of this DataResource (the "value" attribute by default).
*
* @param value the Object to set as value of the default attribute
+ * @param args optional variable Objects array parameterizing the call
*
* @return the {@link SetResponse} of the executed set access method
*/
- SetResponse set(Object value);
+ SetResponse set(Object value, Object...args);
/**
* Executes an subscribe access method on this DataResource and returns its
@@ -73,10 +76,11 @@
* subscription closing and to the thrown exception logging
*
* @param recipient the {@link Recipient} to which the messages will be sent
+ * @param args optional variable Objects array parameterizing the call
*
* @return the {@link SubscribeResponse} of the executed subscribe access method
*/
- SubscribeResponse subscribe(Recipient recipient);
+ SubscribeResponse subscribe(Recipient recipient, Object...args);
/**
* Executes an subscribe access method on this DataResource and returns its
@@ -89,10 +93,11 @@
* @param recipient the {@link Recipient} to which the messages will be sent
* @param conditions the {@link Set} of {@link Constraint}s that will help at
* discriminating the messages to be transmitted to the recipient
+ * @param args optional variable Objects array parameterizing the call
*
* @return the {@link SubscribeResponse} of the executed subscribe access method
*/
- SubscribeResponse subscribe(Recipient recipient, Set<Constraint> conditions);
+ SubscribeResponse subscribe(Recipient recipient, Set<Constraint> conditions, Object...args);
/**
* Executes an subscribe access method on this DataResource and returns its
@@ -105,10 +110,11 @@
* @param policy the String representation of the policy that will apply on the
* {@link org.eclipse.sensinact.gateway.common.execution.ErrorHandler} of the
* subscription to be created.
+ * @param args optional variable Objects array parameterizing the call
*
* @return the {@link SubscribeResponse} of the executed subscribe access method
*/
- SubscribeResponse subscribe(Recipient recipient, Set<Constraint> conditions, String policy);
+ SubscribeResponse subscribe(Recipient recipient, Set<Constraint> conditions, String policy, Object...args);
/**
* Executes an unsubscribe access method on this DataResource and returns its
@@ -116,8 +122,9 @@
* is passed as parameter.
*
* @param subscriptionId the String identifier of the subscription to close
+ * @param args optional variable Objects array parameterizing the call
*
* @return the {@link UnsubscribeResponse} of the executed unsubscribe access method
*/
- UnsubscribeResponse unsubscribe(String subscriptionId);
+ UnsubscribeResponse unsubscribe(String subscriptionId, Object...args);
}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/DefaultResourceConfigBuilder.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/DefaultResourceConfigBuilder.java
index 11b3390..1d8beef 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/DefaultResourceConfigBuilder.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/DefaultResourceConfigBuilder.java
@@ -17,7 +17,7 @@
* The default {@link ResourceConfigBuilder} is in charge of create the
* previously non-described {@link ResourceConfig}s
*
- * @author <a href="mailto:christophe.munilla@cea.fr">Christophe Munilla</a>
+ * @author <a href="mailto:cmunilla@kentyou.com">Christophe Munilla</a>
*/
public class DefaultResourceConfigBuilder implements ResourceConfigBuilder {
private Class<? extends Resource> defaultResourceType;
@@ -25,11 +25,6 @@
private Modifiable defaultModifiable;
private Resource.UpdatePolicy defaultUpdatePolicy;
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.ResourceConfigBuilder#getResourceConfig(org.eclipse.sensinact.gateway.core.ResourceDescriptor)
- */
@Override
public ResourceConfig getResourceConfig(ResourceDescriptor resourceDescriptor) {
Class<? extends Resource> resourceType = (resourceDescriptor.resourceType() == null)
@@ -90,11 +85,7 @@
return defaultResourceType;
}
- /**
- * @inheritDoc
- *
- * @see ResourceConfigBuilder# setDefaultResourceType(java.lang.Class)
- */
+ @Override
public void setDefaultResourceType(Class<? extends Resource> defaultResourceType) {
this.defaultResourceType = defaultResourceType;
}
@@ -111,11 +102,7 @@
return defaultDataType;
}
- /**
- * @inheritDoc
- *
- * @see ResourceConfigBuilder# setDefaultDataType(java.lang.Class)
- */
+ @Override
public void setDefaultDataType(Class<?> defaultDataType) {
this.defaultDataType = defaultDataType;
}
@@ -133,11 +120,7 @@
return defaultModifiable;
}
- /**
- * @inheritDoc
- *
- * @see ResourceConfigBuilder#setDefaultModifiable(Modifiable)
- */
+ @Override
public void setDefaultModifiable(Modifiable defaultModifiable) {
this.defaultModifiable = defaultModifiable;
}
@@ -149,17 +132,12 @@
* @return this ResourceConfigBuilder's default {@link Resource.UpdatePolicy}
*/
private Resource.UpdatePolicy getDefaultUpdatePolicy() {
- if (this.defaultUpdatePolicy == null) {
+ if (this.defaultUpdatePolicy == null)
return UPDATE_POLICY;
- }
return defaultUpdatePolicy;
}
- /**
- * @inheritDoc
- *
- * @see ResourceConfigBuilder# setDefaultUpdatePolicy(Resource.UpdatePolicy)
- */
+ @Override
public void setDefaultUpdatePolicy(Resource.UpdatePolicy defaultUpdatePolicy) {
this.defaultUpdatePolicy = defaultUpdatePolicy;
}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ElementsProxyWrapper.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ElementsProxyWrapper.java
index e80886a..3c2d933 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ElementsProxyWrapper.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ElementsProxyWrapper.java
@@ -10,20 +10,20 @@
*/
package org.eclipse.sensinact.gateway.core;
+import java.lang.reflect.Array;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import org.eclipse.sensinact.gateway.common.primitive.ElementsProxy;
import org.eclipse.sensinact.gateway.common.primitive.Nameable;
-import org.eclipse.sensinact.gateway.common.primitive.PathElement;
/**
- * Abstract extended {@link ElementsProxyWrapper} implementation
+ * Abstract extended {@link ElementsProxy} implementation
*
- * @author <a href="mailto:christophe.munilla@cea.fr">Christophe Munilla</a>
+ * @author <a href="mailto:cmunilla@kentyou.com">Christophe Munilla</a>
*/
public abstract class ElementsProxyWrapper<M extends ModelElementProxy, P extends Nameable>
- implements ElementsProxy<P>, InvocationHandler, Nameable, PathElement {
+ implements ElementsProxy<P>, InvocationHandler {
/**
* the proxied class
*/
@@ -32,89 +32,70 @@
/**
* Constructor
*
- * @param proxy
- * the extended {@link ModelElementProxy} to be wrapped by the
- * ProxyWrapper to be instantiated
+ * @param proxy the extended {@link ModelElementProxy} to be wrapped by the
+ * ElementsProxyWrapper to be instantiated
*/
protected ElementsProxyWrapper(M proxy) {
this.proxy = proxy;
}
- /**
- * @inheritDoc
- *
- * @see java.lang.reflect.InvocationHandler# invoke(java.lang.Object,
- * java.lang.reflect.Method, java.lang.Object[])
- */
@Override
public Object invoke(Object proxy, Method method, Object[] parameters) throws Throwable {
Object result = null;
if (this.proxy.getProxied().isAssignableFrom(method.getDeclaringClass())) {
Object[] calledParameters = null;
-
- if (method.isVarArgs() && parameters != null && parameters.length == 1
- && parameters[0].getClass().isArray()) {
- calledParameters = (Object[]) parameters[0];
-
- } else {
- calledParameters = parameters;
- }
+ if(method.isVarArgs()) {
+ if(parameters[parameters.length-1]==null || Array.getLength(parameters[parameters.length-1]) == 0
+ || (Array.getLength(parameters[parameters.length-1]) == 1 && Array.get(parameters[parameters.length-1], 0)==null)) {
+ int length = method.getParameterCount() -1 ;
+ calledParameters = new Object[length];
+ if(length > 0)
+ System.arraycopy(parameters, 0, calledParameters, 0, length);
+ } else if(parameters.length == 1)
+ calledParameters = (Object[]) parameters[0];
+ else {
+ int length = Array.getLength(parameters[parameters.length-1]);
+ length+=(parameters.length-1);
+ calledParameters = new Object[length];
+ System.arraycopy(parameters, 0, calledParameters, 0, parameters.length-1);
+ System.arraycopy(parameters[parameters.length-1],0,calledParameters, parameters.length-1,Array.getLength(parameters[parameters.length-1]));
+ }
+ } else
+ calledParameters = parameters;
result = this.proxy.invoke(method.getName().toUpperCase(), calledParameters);
- } else {
+ } else
result = method.invoke(this, parameters);
- }
- if (result == this.proxy || result == this) {
+
+ if (result == this.proxy || result == this)
return proxy;
- }
+
return result;
}
/**
- * Returns the {@link ModelElementProxy} wrapped by this ProxyWrapper
+ * Returns the {@link ModelElementProxy} wrapped by this ElementsProxyWrapper
*
- * @return this ProxyWrapper's {@link ModelElementProxy}
+ * @return this ElementsProxyWrapper's {@link ModelElementProxy}
*/
public M getProxy() {
return this.proxy;
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.common.primitive.ElementsProxyWrapper#
- * getName()
- */
+ @Override
public String getName() {
return this.proxy.getName();
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.common.primitive.ElementsProxyWrapper#
- * getPath()
- */
+ @Override
public String getPath() {
return this.proxy.getPath();
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.common.primitive.ElementsProxy#
- * addElement(org.eclipse.sensinact.gateway.common.primitive.Nameable)
- */
@Override
public boolean addElement(P element) {
return false;
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.common.primitive.ElementsProxy#
- * removeElement(java.lang.String)
- */
@Override
public P removeElement(String element) {
return null;
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Metadata.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Metadata.java
index ce3ed85..4e6c3e1 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Metadata.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Metadata.java
@@ -74,38 +74,21 @@
super(mediator, metadata);
try {
this.modifiable = Modifiable.valueOf(metadata.optString(Metadata.MODIFIABLE));
-
} catch (Exception e) {
this.modifiable = Modifiable.FIXED;
}
}
- /**
- * @inheritDoc
- *
- * @see Primitive#isModifiable()
- */
@Override
public Modifiable getModifiable() {
return this.modifiable;
}
- /**
- * @inheritDoc
- *
- * @see Primitive#getDefaultDescription()
- */
@Override
protected MetadataDescription createDescription() {
return new MetadataDescription(this);
}
- /**
- * Validates the type of this Metadata
- *
- * @param type
- * the type to validate
- */
@Override
protected void checkType(Class<?> type) throws InvalidValueTypeException {
if ((!type.isArray() || !Constraint.class.isAssignableFrom(type.getComponentType()))) {
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/MetadataDescription.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/MetadataDescription.java
index 626f6e6..823c301 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/MetadataDescription.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/MetadataDescription.java
@@ -26,25 +26,18 @@
/**
* Constructor
*
- * @param metadata
- * the {@link Metadata} for which to instantiate the
- * MetadataDescription
+ * @param metadata the {@link Metadata} for which to instantiate the
+ * MetadataDescription
*/
public MetadataDescription(Metadata metadata) {
super(metadata);
}
- /**
- * @inheritDoc
- *
- * @see Description #getJSONDescription()
- */
@Override
public String getJSONDescription() {
JSONObject description = this.getJSONObjectDescription();
- if (description == null) {
- return EMPTY;
- }
+ if (description == null)
+ return EMPTY;
return description.toString();
}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelElement.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelElement.java
index 7ac40e3..7e9054a 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelElement.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelElement.java
@@ -43,10 +43,10 @@
* Abstract sensiNact resource model element (service provider, service &
* resource) implementation
*
- * @author <a href="mailto:christophe.munilla@cea.fr">Christophe Munilla</a>
+ * @author <a href="mailto:cmunilla@kentyou.com">Christophe Munilla</a>
*/
public abstract class ModelElement<I extends ModelInstance<?>, M extends ModelElementProxy, P extends ProcessableData, E extends Nameable, R extends Nameable>
- extends Elements<E> implements SensiNactResourceModelElement<M> {
+ extends Elements<E> implements SensiNactResourceModelElement<M> {
abstract class ModelElementProxyWrapper extends ElementsProxyWrapper<M, R> {
private final ImmutableAccessTree tree;
@@ -58,11 +58,6 @@
this.tree = tree;
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.common.primitive.ElementsProxy#element(java.lang.String)
- */
@Override
public R element(String name) {
E e = ModelElement.this.element(name);
@@ -80,11 +75,6 @@
return null;
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.common.primitive.ElementsProxy#elements()
- */
@Override
public Enumeration<R> elements() {
final Object[] es;
@@ -126,9 +116,6 @@
};
}
- /**
- * @return
- */
protected List<R> list() {
List<R> list = new ArrayList<R>();
Enumeration<R> elements = elements();
@@ -263,13 +250,11 @@
* @throws ModelElementProxyBuildException
*/
public <S extends ElementsProxy<R>> S getProxy(SessionKey key) throws ModelElementProxyBuildException {
- if (!this.started.get()) {
+ if (!this.started.get())
throw new ModelElementProxyBuildException("this model element must be started first");
- }
AccessTree<? extends AccessNode> accessTree = key.getAccessTree();
- if (accessTree == null || accessTree.getRoot() == null) {
+ if (accessTree == null || accessTree.getRoot() == null)
throw new ModelElementProxyBuildException("A valid access tree was expected");
- }
return this.getProxy(accessTree);
}
@@ -294,12 +279,12 @@
// AccessLevelOption will be the same for all methods, just check
// what is the one associated with the DESCRIBE one
- AccessLevelOption accessLevelOption = node
- .getAccessLevelOption(AccessMethod.Type.valueOf(AccessMethod.DESCRIBE));
+ AccessLevelOption accessLevelOption = node.getAccessLevelOption(
+ AccessMethod.Type.valueOf(AccessMethod.DESCRIBE));
- if (accessLevelOption == null) {
+ if (accessLevelOption == null)
throw new ModelElementProxyBuildException("Access level option expected");
- }
+
Class<S> proxied = (Class<S>) this.getProxyType();
M proxy = this.proxies.get(accessLevelOption);
if (proxy == null) {
@@ -358,11 +343,6 @@
return null;
}
- /**
- * @InheritedDoc
- *
- * @see Elements# addElement(Nameable)
- */
@SuppressWarnings("unchecked")
@Override
public boolean addElement(final E element) {
@@ -375,11 +355,6 @@
return true;
}
- /**
- * @inheritDoc
- *
- * @see Elements# removeElement(java.lang.String)
- */
@SuppressWarnings("unchecked")
@Override
public E removeElement(String name) {
@@ -394,10 +369,7 @@
}
/**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.ModelElementOld#
- * registered(org.eclipse.sensinact.gateway.core.model.message.SnaMessageHandler)
+ * Starts this ModelElement
*/
protected void start() {
try {
@@ -437,7 +409,7 @@
}
/**
- * Stops this extended {@link ModelElementOld}
+ * Stops this ModelElement
*/
protected void stop() {
if (!this.started.get()) {
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelElementProxy.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelElementProxy.java
index b14f5f8..5d2057d 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelElementProxy.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelElementProxy.java
@@ -10,6 +10,8 @@
*/
package org.eclipse.sensinact.gateway.core;
+import java.util.Arrays;
+
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
import org.eclipse.sensinact.gateway.common.primitive.Nameable;
import org.eclipse.sensinact.gateway.common.primitive.PathElement;
@@ -21,7 +23,7 @@
/**
* Abstract {@link SensiNactResourceModelElementProxy} implementation
*
- * @author <a href="mailto:christophe.munilla@cea.fr">Christophe Munilla</a>
+ * @author <a href="mailto:cmunilla@kentyou.com">Christophe Munilla</a>
*/
public abstract class ModelElementProxy implements Nameable, PathElement {
/**
@@ -73,21 +75,13 @@
this.mediator = mediator;
this.proxied = proxied;
}
-
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.common.primitive.PathElement#getPath()
- */
+
+ @Override
public String getPath() {
return this.path;
}
-
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.common.primitive.Nameable#getName()
- */
+
+ @Override
public String getName() {
return this.name;
}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelInstance.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelInstance.java
index bbd0ba8..8de1d32 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelInstance.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelInstance.java
@@ -316,9 +316,8 @@
* the {@link SnaMessage} to post
*/
public void postMessage(SnaMessage<?> message) {
- if (this.messageRouter == null) {
+ if (this.messageRouter == null)
return;
- }
((AbstractSnaMessage<?>)message).put("namespace", this.namespace, true);
this.messageRouter.handle(message);
}
@@ -366,9 +365,9 @@
AccessNode root = this.configuration.getAccessTree().getRoot();
AccessMethod.Type[] accessMethodTypes = AccessMethod.Type.values();
int typesLength = accessMethodTypes == null ? 0 : accessMethodTypes.length;
- if ((node = (AccessNodeImpl<?>) root.get(uri)) == null) {
+ if ((node = (AccessNodeImpl<?>) root.get(uri)) == null)
node = root;
- }
+
int index = 0;
for (; index < typesLength; index++) {
AccessLevelOption accessLevelOption = node.getAccessLevelOption(accessMethodTypes[index]);
@@ -430,9 +429,8 @@
filter.addHandledType(SnaMessage.Type.LIFECYCLE);
this.messageRouter.addCallback(filter, registration);
- if (this.configuration().getStartAtInitializationTime()) {
+ if (this.configuration().getStartAtInitializationTime())
this.provider.start();
- }
}
}
@@ -585,9 +583,9 @@
*/
public <I extends ModelInstance<?>, M extends ModelElementProxy, P extends ProcessableData, E extends Nameable, R extends Nameable> List<MethodAccessibility> getAuthorizations(
ModelElement<I, M, P, E, R> modelElement, AccessLevelOption accessLevelOption) {
- if (modelElement.getModelInstance() != this) {
+ if (modelElement.getModelInstance() != this)
throw new RuntimeException("the model element argument must belong to this model instance");
- }
+
final String path = modelElement.getPath();
return this.configuration().getAccessibleMethods(path, accessLevelOption);
}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelInstanceRegistration.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelInstanceRegistration.java
index 00f57ec..427191e 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelInstanceRegistration.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ModelInstanceRegistration.java
@@ -129,10 +129,6 @@
}
}
- /**
- * @param uri
- * @param location
- */
void update(final Dictionary<String, Object> properties) {
if (!registered || properties == null || properties.size() == 0 || this.instanceRegistration == null) {
return;
@@ -165,9 +161,6 @@
}
}
- /**
- * @return
- */
private Dictionary<String, Object> properties() {
final Hashtable<String, Object> properties = new Hashtable<String, Object>();
@@ -301,9 +294,9 @@
Object value = null;
String attribute = it.next();
- if (attribute.equals(name) || (attribute.equals(DataResource.VALUE) && resource.equals(name))) {
+ if (attribute.equals(name) || (attribute.equals(DataResource.VALUE) && resource.equals(name)))
value = initial.opt(DataResource.VALUE);
- }
+
if (LOCATION_PROPERTY.equals(resourceKey)) {
double latitude = 0d;
double longitude = 0d;
@@ -353,9 +346,9 @@
String resourceKey = new StringBuilder().append(service).append(".").append(resource).toString();
List<String> resources = (List<String>) properties.get(serviceKey);
- if (resources != null) {
+ if (resources != null)
resources.remove(resource);
- }
+
properties.remove(resourceKey.concat(".type"));
int index = 0;
for (; index < typesLength; index++) {
@@ -403,12 +396,6 @@
properties.put("services", services);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.message.AbstractMidCallback#
- * doCallback(org.eclipse.sensinact.gateway.core.message.SnaMessage)
- */
@Override
public void doCallback(SnaMessage<?> message) {
@@ -416,18 +403,26 @@
String[] uriElements = UriUtils.getUriElements(uri);
switch (((SnaMessageSubType) message.getType()).getSnaMessageType()) {
case UPDATE:
- if (!Update.ATTRIBUTE_VALUE_UPDATED.equals((SnaMessageSubType) message.getType())) {
- break;
- }
SnaUpdateMessage m = (SnaUpdateMessage) message;
JSONObject notification = m.getNotification();
String key = new StringBuilder().append(uriElements[1]).append(".").append(uriElements[2]).toString();
- List<String> obs = this.observed.get(key);
- if (obs != null && !obs.isEmpty() && obs.contains(uriElements[3])) {
- Object value = notification.opt(DataResource.VALUE);
- this.updateObserved(new StringBuilder().append(key).append("."
- ).append(uriElements[3]).toString(), value);
- }
+ switch(m.getType()) {
+ case ATTRIBUTE_VALUE_UPDATED:
+ List<String> obs = this.observed.get(key);
+ if (obs != null && !obs.isEmpty() && obs.contains(uriElements[3])) {
+ Object value = notification.opt(DataResource.VALUE);
+ this.updateObserved(new StringBuilder().append(key).append("."
+ ).append(uriElements[3]).toString(), value);
+ }
+ break;
+ case METADATA_VALUE_UPDATED:
+ Object value = notification.opt(DataResource.VALUE);
+ this.updateObserved(new StringBuilder().append(key).append("."
+ ).append(uriElements[3]).append(".").append(uriElements[4]).toString(), value);
+ break;
+ case ACTUATED:
+ break;
+ }
break;
case LIFECYCLE:
SnaLifecycleMessage l = (SnaLifecycleMessage) message;
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Resource.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Resource.java
index 2e5c2df..20c3aa1 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Resource.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Resource.java
@@ -17,16 +17,16 @@
import org.eclipse.sensinact.gateway.common.primitive.Modifiable;
import org.eclipse.sensinact.gateway.common.primitive.Typable;
import org.eclipse.sensinact.gateway.core.message.Recipient;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.UnsubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
+import org.eclipse.sensinact.gateway.core.method.SetResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.UnsubscribeResponse;
/**
* A Resource owns {@link Attribute}s and {@link AccessMethod}s whose call allow
* to manipulate those {@link Attribute}s
*
- * @author <a href="mailto:christophe.munilla@cea.fr">Christophe Munilla</a>
+ * @author <a href="mailto:cmunilla@kentyou.com">Christophe Munilla</a>
*/
public interface Resource extends ElementsProxy<AttributeDescription>, Typable<Resource.Type> {
// Type attribute property key
@@ -81,54 +81,68 @@
/**
* Asks for this Resource's associated get execution
*
- * @param parameters
- * objects array parameterizing the invocation
- * @return the invocation {@link SnaMessage} result
+ * @param atributeName the String name of the targeted attribute
+ * @param args optional variable Objects array parameterizing the call
+ *
+ * @return the resulting {@link GetResponse}
*/
- GetResponse get(String attributeName);
+ GetResponse get(String attributeName, Object...args);
/**
* Asks for this Resource's associated set execution
*
- * @param parameters
- * objects array parameterizing the invocation
- * @return the invocation {@link SnaMessage} result
+ * @param atributeName the String name of the targeted attribute
+ * @param value the value Object to be set
+ * @param args optional variable Objects array parameterizing the call
+ *
+ * @return the resulting {@link SetResponse}
*/
- SetResponse set(String atributeName, Object value);
+ SetResponse set(String atributeName, Object value, Object...args);
/**
- * Asks for this Resource's associated set execution
+ * Asks for this Resource's associated subscription execution
*
- * @param parameters
- * array of {@link Parameter}s parameterizing the invocation
- * @return the {@link SnaMessage} resulting of the invocation
+ * @param atributeName the String name of the targeted attribute
+ * @param recipient the {@link Recipient} of the subscription to be created
+ * @param args optional variable Objects array parameterizing the call
+ *
+ * @return the resulting {@link SubscribeResponse}
*/
- SubscribeResponse subscribe(String attributeName, Recipient recipient);
+ SubscribeResponse subscribe(String attributeName, Recipient recipient, Object...args);
/**
- * Asks for this Resource's associated set execution
+ * Asks for this Resource's associated subscription execution
*
- * @param parameters
- * array of {@link Parameter}s parameterizing the invocation
- * @return the {@link SnaMessage} resulting of the invocation
+ * @param atributeName the String name of the targeted attribute
+ * @param recipient the {@link Recipient} of the subscription to be created
+ * @param conditions Set of {@link Constraint}s applying on the subscription to be created
+ * @param args optional variable Objects array parameterizing the call
+ *
+ * @return the resulting {@link SubscribeResponse}
*/
- SubscribeResponse subscribe(String attributeName, Recipient recipient, Set<Constraint> conditions);
+ SubscribeResponse subscribe(String attributeName, Recipient recipient, Set<Constraint> conditions, Object...args);
/**
- * Asks for this Resource's associated set execution
+ * Asks for this Resource's associated subscription execution
*
- * @param parameters
- * array of {@link Parameter}s parameterizing the invocation
- * @return the {@link SnaMessage} resulting of the invocation
+ * @param atributeName the String name of the targeted attribute
+ * @param recipient the {@link Recipient} of the subscription to be created
+ * @param conditions Set of {@link Constraint}s applying on the subscription to be created
+ * @param policy the String definition of the error policy applying on the subscription to be created
+ * @param args optional variable Objects array parameterizing the call
+ *
+ * @return the resulting {@link SubscribeResponse}
*/
- SubscribeResponse subscribe(String attributeName, Recipient recipient, Set<Constraint> conditions, String policy);
+ SubscribeResponse subscribe(String attributeName, Recipient recipient, Set<Constraint> conditions, String policy, Object...args);
/**
- * Asks for this Resource's associated set execution
+ * Asks for this Resource's associated unsubscription execution
*
- * @param parameters
- * array of {@link Parameter}s parameterizing the invocation
- * @return the {@link SnaMessage} resulting of the invocation
+ * @param atributeName the String name of the targeted attribute
+ * @param subscriptionId the String identifier of the subscription to be deleted
+ * @param args optional variable Objects array parameterizing the call
+ *
+ * @return the resulting {@link UnsubscribeResponse}
*/
- UnsubscribeResponse unsubscribe(String attributeName, String subscriptionId);
+ UnsubscribeResponse unsubscribe(String attributeName, String subscriptionId, Object...args);
}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ResourceBuilder.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ResourceBuilder.java
index 6477b39..455e675 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ResourceBuilder.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ResourceBuilder.java
@@ -10,6 +10,7 @@
*/
package org.eclipse.sensinact.gateway.core;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
@@ -30,15 +31,15 @@
import org.eclipse.sensinact.gateway.core.method.AccessMethod;
import org.eclipse.sensinact.gateway.core.method.AccessMethodExecutor;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponseBuilder;
+import org.eclipse.sensinact.gateway.core.method.ActMethod;
+import org.eclipse.sensinact.gateway.core.method.GetMethod;
import org.eclipse.sensinact.gateway.core.method.LinkedActMethod;
import org.eclipse.sensinact.gateway.core.method.Parameter;
+import org.eclipse.sensinact.gateway.core.method.SetMethod;
import org.eclipse.sensinact.gateway.core.method.Shortcut;
import org.eclipse.sensinact.gateway.core.method.Signature;
-import org.eclipse.sensinact.gateway.core.method.legacy.ActMethod;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetMethod;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetMethod;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeMethod;
-import org.eclipse.sensinact.gateway.core.method.legacy.UnsubscribeMethod;
+import org.eclipse.sensinact.gateway.core.method.SubscribeMethod;
+import org.eclipse.sensinact.gateway.core.method.UnsubscribeMethod;
import org.eclipse.sensinact.gateway.util.ReflectUtils;
/**
@@ -47,12 +48,12 @@
* @author <a href="mailto:christophe.munilla@cea.fr">Christophe Munilla</a>
*/
public class ResourceBuilder {
- private final AccessMethod.Type GET = AccessMethod.Type.valueOf(AccessMethod.GET);
- private final AccessMethod.Type SET = AccessMethod.Type.valueOf(AccessMethod.SET);
- private final AccessMethod.Type ACT = AccessMethod.Type.valueOf(AccessMethod.ACT);
- private final AccessMethod.Type SUBSCRIBE = AccessMethod.Type.valueOf(AccessMethod.SUBSCRIBE);
- private final AccessMethod.Type UNSUBSCRIBE = AccessMethod.Type.valueOf(AccessMethod.UNSUBSCRIBE);
- private final AccessMethod.Type DESCRIBE = AccessMethod.Type.valueOf(AccessMethod.DESCRIBE);
+ private static final AccessMethod.Type GET = AccessMethod.Type.valueOf(AccessMethod.GET);
+ private static final AccessMethod.Type SET = AccessMethod.Type.valueOf(AccessMethod.SET);
+ private static final AccessMethod.Type ACT = AccessMethod.Type.valueOf(AccessMethod.ACT);
+ private static final AccessMethod.Type SUBSCRIBE = AccessMethod.Type.valueOf(AccessMethod.SUBSCRIBE);
+ private static final AccessMethod.Type UNSUBSCRIBE = AccessMethod.Type.valueOf(AccessMethod.UNSUBSCRIBE);
+ private static final AccessMethod.Type DESCRIBE = AccessMethod.Type.valueOf(AccessMethod.DESCRIBE);
protected final Mediator mediator;
protected final ResourceConfig resourceConfig;
@@ -107,9 +108,8 @@
* @param name the name of the resource to build
*/
public void configureValue(Object value) {
- if (value == null) {
- return;
- }
+ if (value == null)
+ return;
this.configureRequirement(DataResource.VALUE, AttributeBuilder.Requirement.VALUE, value);
}
@@ -166,9 +166,8 @@
this.buildMethods(resourceImpl);
} catch (InvalidValueException e) {
- if (this.mediator.isErrorLoggable()) {
- this.mediator.error(e, e.getMessage());
- }
+ if (this.mediator.isErrorLoggable())
+ this.mediator.error(e);
throw new InvalidResourceException("Error while creating methods", e);
}
}
@@ -238,12 +237,6 @@
return linkedResourceImpl;
}
- /**
- * Builds the set of access methods of this resource
- *
- * @throws InvalidResourceException
- * @throws InvalidValueException
- */
protected final void buildMethods(final ResourceImpl resource)
throws InvalidResourceException, InvalidValueException {
if (resource == null) {
@@ -274,7 +267,7 @@
setMethod = new SetMethod(this.mediator, resource.getPath(),
this.getPreProcessingExecutor(resource, AccessMethod.SET));
-
+
setSignature = new Signature(this.mediator, SET, new Class<?>[] { String.class, Object.class },
new String[] { "attributeName", "value" });
@@ -282,14 +275,15 @@
this.getPreProcessingExecutor(resource, AccessMethod.SUBSCRIBE));
subscribeSignature = new Signature(this.mediator, SUBSCRIBE,
- new Class<?>[] { String.class, Recipient.class, Set.class, String.class },
- new String[] { "attributeName", "listener", "conditions", "policy" });
+ new Class<?>[] { String.class, Recipient.class, Set.class, String.class },
+ new String[] { "attributeName", "listener", "conditions", "policy" });
unsubscribeMethod = new UnsubscribeMethod(this.mediator, resource.getPath(),
this.getPreProcessingExecutor(resource, AccessMethod.UNSUBSCRIBE));
-
+
unsubscribeSignature = new Signature(this.mediator, UNSUBSCRIBE, new Class<?>[] { String.class, String.class },
new String[] { "attributeName", "subscriptionId" });
+
// Get method
getMethod.addSignature(getSignature, getExecutor(resource), AccessMethodExecutor.ExecutionPolicy.BEFORE);
@@ -301,11 +295,10 @@
if (Modifiable.MODIFIABLE.equals(attrs.nextElement().getModifiable())) {
// Set method
setMethod.addSignature(setSignature, setExecutor(resource),
- AccessMethodExecutor.ExecutionPolicy.BEFORE);
+ AccessMethodExecutor.ExecutionPolicy.BEFORE );
break;
}
}
-
// Subscribe method
subscribeMethod.addSignature(subscribeSignature, subscribeExecutor(resource),
AccessMethodExecutor.ExecutionPolicy.BEFORE);
@@ -325,7 +318,7 @@
fixedPolicyParameters = new HashMap<Integer, Parameter>();
fixedPolicyParameters.put(3, policyParameter);
-
+
Shortcut subscribePolicyShortcut = new Shortcut(this.mediator, SUBSCRIBE,
new Class<?>[] { String.class, Recipient.class, Set.class },
new String[] { "attributeName", "listener", "conditions" },
@@ -340,33 +333,38 @@
new Class<?>[] { String.class, Recipient.class },
new String[] { "attributeName", "listener" },
fixedConditionsParameters);
-
+
subscribeMethod.addShortcut(subscribeConditionsAndPolicyShortcut, subscribePolicyShortcut);
-
- if (resource.getDefault() != null) {
+ String resourceDefaultAttribute = resource.getDefault();
+
+ if (resourceDefaultAttribute != null) {
Parameter nameParameter = new Parameter(this.mediator, "attributeName", String.class);
- nameParameter.setValue(resource.getDefault());
+ nameParameter.setValue(resourceDefaultAttribute);
Map<Integer, Parameter> fixedNameParameter = new HashMap<Integer, Parameter>();
fixedNameParameter.put(0, nameParameter);
// Get method - name parameter shortcut
- Shortcut getAttributeShortcut = new Shortcut(this.mediator, GET, new Class<?>[0], new String[0],
- fixedNameParameter);
+ //Shortcut getAttributeShortcut = new Shortcut(this.mediator, GET, new Class<?>[0], new String[0], fixedNameParameter, true);
+ // Get method - name parameter shortcut
+ Shortcut getAttributeShortcut = new Shortcut(this.mediator, GET, new Class<?>[0], new String[0], fixedNameParameter);
+
getMethod.addShortcut(getAttributeShortcut, getSignature);
// Set method - name parameter shortcut
// if the default attribute is modifiable
- Attribute defaultAttribute = resource.getAttribute(resource.getDefault());
+ Attribute defaultAttribute = resource.getAttribute(resourceDefaultAttribute);
if (defaultAttribute != null && Modifiable.MODIFIABLE.equals(defaultAttribute.getModifiable())) {
+
Shortcut setAttributeShortcut = new Shortcut(this.mediator, SET, new Class<?>[] { Object.class },
- new String[] { "value" }, fixedNameParameter);
+ new String[] { DataResource.VALUE }, fixedNameParameter);
setMethod.addShortcut(setAttributeShortcut, setSignature);
}
+
Shortcut subscribeNameConditionsAndPolicyShortcut = new Shortcut(this.mediator, SUBSCRIBE,
new Class<?>[] { Recipient.class },
new String[] { "listener" }, fixedNameParameter);
@@ -380,7 +378,7 @@
new Class<?>[] { Recipient.class, Set.class, String.class },
new String[] { "listener", "conditions", "policy" },
fixedNameParameter);
-
+
subscribeMethod.addShortcut(subscribeNameConditionsAndPolicyShortcut, subscribeConditionsAndPolicyShortcut);
subscribeMethod.addShortcut(subscribeNameAndPolicyShortcut, subscribePolicyShortcut);
subscribeMethod.addShortcut(subscribeNameShortcut, subscribeSignature);
@@ -404,12 +402,6 @@
resource.registerMethod(UNSUBSCRIBE, unsubscribeMethod);
}
- /**
- * Creates and returns the pre-processing {@link AccessMethodExecutor} to
- * register into the {@link AccessMethod} whose type is passed as parameter
- *
- * @return the pre-processing executor associated to the specified method type
- */
private AccessMethodExecutor getPreProcessingExecutor(final ResourceImpl resource, final String type) {
return new AccessMethodExecutor() {
@Override
@@ -430,20 +422,12 @@
};
}
- /**
- * Creates and returns the specific post-processing {@link AccessMethodExecutor}
- * to register into the {@link ActMethod} of the {@link ResourceImpl} passed as
- * parameter
- *
- * @return the post-processing executor associated to the act method of the
- * specified resource
- */
private AccessMethodExecutor getActPostProcessingExecutor(final ResourceImpl resource) {
return new AccessMethodExecutor() {
@Override
public Void execute(AccessMethodResponseBuilder parameter) throws Exception {
- SnaUpdateMessage message = SnaNotificationMessageImpl.Builder.<SnaUpdateMessage>notification(mediator,
- SnaUpdateMessage.Update.ACTUATED, resource.getPath());
+ SnaUpdateMessage message = SnaNotificationMessageImpl.Builder.<SnaUpdateMessage>notification(
+ mediator, SnaUpdateMessage.Update.ACTUATED, resource.getPath());
JSONObject notification = new JSONObject();
notification.put(Metadata.TIMESTAMP, System.currentTimeMillis());
@@ -457,10 +441,6 @@
};
}
- /**
- * @param resource
- * @return
- */
final private AccessMethodExecutor getExecutor(final ResourceImpl resource) {
return new AccessMethodExecutor() {
@Override
@@ -477,15 +457,13 @@
};
}
- /**
- * @param resource
- * @return
- */
final private AccessMethodExecutor setExecutor(final ResourceImpl resource) {
return new AccessMethodExecutor() {
@Override
public Void execute(AccessMethodResponseBuilder snaResult) throws Exception {
- AttributeDescription desc = resource.set((String) snaResult.getParameter(0),snaResult.getParameter(1));
+ Object[] parameters = snaResult.getParameters();
+ int length = parameters == null?0:parameters.length;
+ AttributeDescription desc = resource.set((String) parameters[0], (Object)parameters[1]);
JSONObject result = new JSONObject(desc.getJSON());
snaResult.setAccessMethodObjectResult(result);
return null;
@@ -493,10 +471,6 @@
};
}
- /**
- * @param resource
- * @return
- */
final private AccessMethodExecutor subscribeExecutor(final ResourceImpl resource) {
return new AccessMethodExecutor() {
@Override
@@ -551,9 +525,8 @@
}
}
}
- } else {
- policy = ((Integer) parameters[3]).intValue();
- }
+ } else
+ policy = ((Integer) parameters[3]).intValue();
case 3:
conditions = (Set) parameters[2];
case 2:
@@ -576,10 +549,6 @@
};
}
- /**
- * @param resource
- * @return
- */
final private AccessMethodExecutor unsubscribeExecutor(final ResourceImpl resource) {
return new AccessMethodExecutor() {
@Override
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ResourceImpl.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ResourceImpl.java
index 554694d..7190cf1 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ResourceImpl.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ResourceImpl.java
@@ -382,21 +382,17 @@
};
}
- public AttributeDescription set(String name, Object value) throws InvalidValueException {
+ public AttributeDescription set(String attributeName, Object value) throws InvalidValueException {
AttributeDescription description = null;
- if (name == null) {
+ if (attributeName == null)
return description;
- }
- Attribute attribute = this.getAttribute(name);
+
+ Attribute attribute = this.getAttribute(attributeName);
if (attribute != null) {
- if (!Modifiable.MODIFIABLE.equals(attribute.getModifiable())) {
- throw new InvalidValueException(
- new StringBuilder().append(name).append(" attribute is not modifiable").toString());
- }
- if (attribute.getLocked()) {
- throw new InvalidValueException(new StringBuilder().append(name)
- .append(" attribute has been locked by an action trigger").toString());
- }
+ if (!Modifiable.MODIFIABLE.equals(attribute.getModifiable()))
+ throw new InvalidValueException(new StringBuilder().append(attributeName).append(" attribute is not modifiable").toString());
+ if (attribute.getLocked())
+ throw new InvalidValueException(new StringBuilder().append(attributeName).append(" attribute has been locked by an action trigger").toString());
attribute.setValue(value);
description = (AttributeDescription) attribute.getDescription();
}
@@ -632,27 +628,23 @@
* Registers a {@link Signature} to create and to associate with the specified
* {@link AccessMethodExecutor}
*
- * @param type
- * the type of the {@link AccessMethod} associated to the signature
- * to create
- * @param parameterNames
- * the array of parameter names of the signature to create
- * @param parameterTypes
- * the array of parameter types of the signature to create
- * @param executor
- * the {@link AccessMethodExecutor} to associate to the signature to
- * create
- * @param policy
- * the execution policy of the {@link AccessMethodExecutor}
+ * @param type the type of the {@link AccessMethod} associated to the signature
+ * to create
+ * @param parameterNames the array of parameter names of the signature to create
+ * @param parameterTypes the array of parameter types of the signature to create
+ * @param executor the {@link AccessMethodExecutor} to associate to the signature
+ * to create
+ * @param policy the execution policy of the {@link AccessMethodExecutor}
* @throws InvalidValueException
* @throws InvalidConstraintDefinitionException
*/
- public AccessMethod registerExecutor(AccessMethod.Type type, Class<?>[] parameterTypes, String[] parameterNames,
- AccessMethodExecutor executor, AccessMethodExecutor.ExecutionPolicy policy) throws InvalidValueException {
+ @SuppressWarnings("unchecked")
+ public AccessMethod registerExecutor(AccessMethod.Type type, Class<?>[] parameterTypes, String[] parameterNames,
+ AccessMethodExecutor executor, AccessMethodExecutor.ExecutionPolicy policy)
+ throws InvalidValueException {
AccessMethod method = this.getAccessMethod(type);
- if (method != null) {
+ if (method != null)
((AbstractAccessMethod) method).addSignature(parameterTypes, parameterNames, executor, policy);
- }
return method;
}
@@ -689,11 +681,6 @@
return super.elements();
}
- /**
- * @param attribute
- * @param value
- * @param hasChanged
- */
@SuppressWarnings("rawtypes")
protected void updated(Attribute attribute, Object value, boolean hasChanged) {
if (!super.started.get() || attribute.isHidden()) {
@@ -729,6 +716,16 @@
}
}
+ protected void updated(Attribute attribute, MetadataDescription metadata) {
+ if (!super.started.get() || attribute==null || metadata == null)
+ return;
+ SnaUpdateMessage message = SnaNotificationMessageImpl.Builder.<SnaUpdateMessage>notification(
+ super.modelInstance.mediator(), SnaUpdateMessage.Update.METADATA_VALUE_UPDATED,
+ UriUtils.getUri(new String[] {getPath(), attribute.getName(), metadata.getName()}));
+ message.setNotification(metadata.getJSONObjectDescription());
+ super.modelInstance.postMessage(message);
+ }
+
/**
* Registers the path of a {@link LinkedResourceImpl} linked to this ResouceImpl
* instance
@@ -743,10 +740,9 @@
@Override
public void start() {
- if (!super.getModelInstance().isRegistered() || this.isHidden()) {
- // already registered or hidden resource
+ // already registered or hidden resource
+ if (!super.getModelInstance().isRegistered() || this.isHidden())
return;
- }
if (super.started.get()) {
this.modelInstance.mediator().debug("%s already started", this.getName());
return;
@@ -763,31 +759,33 @@
notificationObject.put(SnaConstants.ADDED_OR_REMOVED, SnaLifecycleMessage.Lifecycle.RESOURCE_APPEARING.name());
notificationObject.put(Resource.TYPE, this.getType());
-
notification.setNotification(notificationObject);
- Attribute attribute = null;
+ for(Attribute attribute : this.elements) {
- if (this.defaultAttribute != null && (attribute = this.getAttribute(this.defaultAttribute)) != null) {
- JSONObject jsonAttribute = new JSONObject(attribute.getDescription().getJSON());
-
- MetadataDescription[] metadataDescriptions = attribute.getAllDescriptions();
-
- int index = 0;
- int length = metadataDescriptions.length;
-
- for (; index < length; index++) {
- MetadataDescription metadataDescription = metadataDescriptions[index];
- String metadataName = metadataDescription.getName().intern();
-
- if (Modifiable.FIXED.equals(metadataDescription.getModifiable())
- && Metadata.LOCKED.intern() != metadataName && Metadata.MODIFIABLE.intern() != metadataName
- && Metadata.HIDDEN.intern() != metadataName && Attribute.NICKNAME.intern() != metadataName) {
- jsonAttribute.put(metadataDescription.getName(),
- PrimitiveDescription.toJson(metadataDescription.getType(), metadataDescription.getValue()));
+ if (this.defaultAttribute != null && attribute.getName().equals(this.defaultAttribute)) {
+ JSONObject jsonAttribute = new JSONObject(attribute.getDescription().getJSON());
+ MetadataDescription[] metadataDescriptions = attribute.getAllDescriptions();
+ int index = 0;
+ int length = metadataDescriptions.length;
+ for (; index < length; index++) {
+ MetadataDescription metadataDescription = metadataDescriptions[index];
+ String metadataName = metadataDescription.getName().intern();
+ if (Modifiable.FIXED.equals(metadataDescription.getModifiable())
+ && Metadata.LOCKED.intern() != metadataName && Metadata.MODIFIABLE.intern() != metadataName
+ && Metadata.HIDDEN.intern() != metadataName && Attribute.NICKNAME.intern() != metadataName) {
+ jsonAttribute.put(metadataDescription.getName(),
+ PrimitiveDescription.toJson(metadataDescription.getType(), metadataDescription.getValue()));
+ }
}
+ ((SnaLifecycleMessageImpl) notification).put("initial", jsonAttribute);
}
- ((SnaLifecycleMessageImpl) notification).put("initial", jsonAttribute);
+ if(attribute.isHidden())
+ continue;
+ for(Metadata m : attribute.metadata) {
+ if(!m.getName().equals(Metadata.HIDDEN) && m.getModifiable().equals(Modifiable.FIXED) && m.getValue()!=null )
+ this.updated(attribute, m.getDescription());
+ }
}
super.modelInstance.postMessage(notification);
}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ResourceProxy.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ResourceProxy.java
index 7563f56..eec1e24 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ResourceProxy.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ResourceProxy.java
@@ -54,11 +54,9 @@
}
int accessIndex = -1;
- if ((accessIndex = methodAccessibilities
- .indexOf(new Name<MethodAccessibility>(existingTypes[index].name()))) == -1
+ if ((accessIndex = methodAccessibilities.indexOf(new Name<MethodAccessibility>(existingTypes[index].name()))) == -1
|| !methodAccessibilities.get(accessIndex).isAccessible()) {
- methods.put(existingTypes[index].name(),
- new UnaccessibleAccessMethod(mediator, super.getPath(), existingTypes[index]));
+ methods.put(existingTypes[index].name(),new UnaccessibleAccessMethod(mediator, super.getPath(), existingTypes[index]));
} else {
methods.put(existingTypes[index].name(), method);
}
@@ -66,11 +64,6 @@
this.methods = Collections.<String, AccessMethod>unmodifiableMap(methods);
}
- /**
- * @inheritDoc
- *
- * @see SensiNactResourceModelElementProxy# getAccessMethod(String)
- */
@Override
public AccessMethod getAccessMethod(String type) {
return this.methods.get(type);
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/SensiNact.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/SensiNact.java
index f036237..5b602f1 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/SensiNact.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/SensiNact.java
@@ -51,17 +51,17 @@
import org.eclipse.sensinact.gateway.core.message.SnaUpdateMessageImpl;
import org.eclipse.sensinact.gateway.core.method.AccessMethod;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
+import org.eclipse.sensinact.gateway.core.method.ActResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeMethod;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponseBuilder;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse.Status;
+import org.eclipse.sensinact.gateway.core.method.DescribeMethod.DescribeType;
import org.eclipse.sensinact.gateway.core.method.RemoteAccessMethodExecutable;
-import org.eclipse.sensinact.gateway.core.method.legacy.ActResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeMethod;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeMethod.DescribeType;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponseBuilder;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.UnsubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.SetResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.UnsubscribeResponse;
import org.eclipse.sensinact.gateway.core.remote.RemoteCore;
import org.eclipse.sensinact.gateway.core.remote.SensinactCoreBaseIFaceManager;
import org.eclipse.sensinact.gateway.core.remote.SensinactCoreBaseIFaceManagerFactory;
@@ -112,9 +112,6 @@
*/
@Component(immediate=true)
public class SensiNact implements Core {
- // ********************************************************************//
- // NESTED DECLARATIONS //
- // ********************************************************************//
/**
* Abstract {@link Session} service implementation
@@ -129,6 +126,16 @@
public SensiNactSession(String identifier) {
super(identifier);
}
+
+ protected final SessionKey getSessionKeyFromToken() {
+ SessionKey sessionKey;
+ synchronized(SensiNact.this.sessions) {
+ sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN, getSessionId()));
+ }
+ if(sessionKey == null)
+ throw new IllegalArgumentException("Invalid session token");
+ return sessionKey;
+ }
@Override
public Set<ServiceProvider> serviceProviders(final String filter) {
@@ -152,13 +159,9 @@
}
@Override
- public SubscribeResponse registerSessionAgent(String requestId,
- final MidAgentCallback callback, final SnaFilter filter) {
+ public SubscribeResponse registerSessionAgent(String requestId, final MidAgentCallback callback, final SnaFilter filter) {
- final SessionKey sessionKey;
- synchronized(SensiNact.this.sessions) {
- sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN, getSessionId()));
- }
+ final SessionKey sessionKey=getSessionKeyFromToken();
boolean registered = AccessController.<Boolean>doPrivileged(new PrivilegedAction<Boolean>() {
@Override public Boolean run() {return sessionKey.registerAgent(callback, filter);}});
@@ -183,10 +186,9 @@
@Override
public UnsubscribeResponse unregisterSessionAgent(String requestId, final String agentId) {
- final SessionKey sessionKey;
- synchronized(SensiNact.this.sessions) {
- sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN, getSessionId()));
- }
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
+
boolean unregistered = AccessController.<Boolean>doPrivileged(new PrivilegedAction<Boolean>() {
@Override
public Boolean run() {
@@ -209,12 +211,9 @@
}
@Override
- public SubscribeResponse registerSessionIntent(String requestId, Executable<Boolean, Void> callback,
- String... resourcePath) {
- final SessionKey sessionKey;
- synchronized(SensiNact.this.sessions) {
- sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN, getSessionId()));
- }
+ public SubscribeResponse registerSessionIntent(String requestId, Executable<Boolean, Void> callback, String... resourcePath) {
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
final ResourceIntent intent = new ResourceIntent(mediator, sessionKey.getPublicKey(), callback, resourcePath) {
@Override
public boolean isAccessible(String path) {
@@ -245,10 +244,9 @@
@Override
public UnsubscribeResponse unregisterSessionIntent(String requestId, final String intentId) {
- final SessionKey sessionKey;
- synchronized(SensiNact.this.sessions) {
- sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN, getSessionId()));
- }
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
+
boolean unregistered = AccessController.<Boolean>doPrivileged(new PrivilegedAction<Boolean>() {
@Override
public Boolean run() {
@@ -272,11 +270,10 @@
@Override
public GetResponse get(String requestId, final String serviceProviderId, final String serviceId,
- final String resourceId, final String attributeId) {
- final SessionKey sessionKey;
- synchronized(SensiNact.this.sessions) {
- sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN, getSessionId()));
- }
+ final String resourceId, final String attributeId, Object... args) {
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
+
String uri = getUri((sessionKey.localID() != 0), SensiNact.this.namespace(), serviceProviderId, serviceId, resourceId);
Resource resource = this.resource(serviceProviderId, serviceId, resourceId);
@@ -285,11 +282,11 @@
if (resource != null) {
if (attributeId == null) {
if (!resource.getType().equals(Resource.Type.ACTION))
- response = ((DataResource) resource).get();
+ response = ((DataResource) resource).get(args);
else
response = SensiNact.<JSONObject, GetResponse>createErrorResponse(mediator, AccessMethod.GET, uri, 404, "Unknown Method", null);
} else
- response = resource.get(attributeId);
+ response = resource.get(attributeId, args);
return tatooRequestId(requestId, response);
}
if (serviceProviderId.indexOf('(') < 0 && sessionKey.localID() != 0) {
@@ -303,7 +300,7 @@
@Override
public JSONObject run() {
return SensiNact.this.get(sessionKey.getToken(), serviceProviderId, serviceId,
- resourceId, attributeId);
+ resourceId, attributeId, args);
}
});
try {
@@ -317,11 +314,10 @@
@Override
public SetResponse set(String requestId, final String serviceProviderId, final String serviceId,
- final String resourceId, final String attributeId, final Object parameter) {
- final SessionKey sessionKey;
- synchronized(SensiNact.this.sessions) {
- sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN, getSessionId()));
- }
+ final String resourceId, final String attributeId, final Object parameter, Object... args) {
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
+
String uri = getUri((sessionKey.localID() != 0), SensiNact.this.namespace(), serviceProviderId, serviceId,
resourceId);
Resource resource = this.resource(serviceProviderId, serviceId, resourceId);
@@ -330,14 +326,14 @@
if (resource != null) {
if (attributeId == null) {
if (!resource.getType().equals(Resource.Type.ACTION)) {
- response = ((DataResource) resource).set(parameter);
+ response = ((DataResource) resource).set(parameter, args);
} else {
response = SensiNact.<JSONObject, SetResponse>createErrorResponse(mediator, AccessMethod.SET,
uri, 404, "Unknown Method", null);
}
} else {
- response = resource.set(attributeId, parameter);
+ response = resource.set(attributeId, parameter, args);
}
return tatooRequestId(requestId, response);
}
@@ -350,7 +346,7 @@
@Override
public JSONObject run() {
return SensiNact.this.set(sessionKey.getPublicKey(), serviceProviderId, serviceId,
- resourceId, attributeId, parameter);
+ resourceId, attributeId, parameter, args);
}
});
try {
@@ -365,10 +361,9 @@
@Override
public ActResponse act(String requestId, final String serviceProviderId, final String serviceId,
final String resourceId, final Object[] parameters) {
- final SessionKey sessionKey;
- synchronized(SensiNact.this.sessions) {
- sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN, getSessionId()));
- }
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
+
ActResponse response = null;
String uri = getUri((sessionKey.localID() != 0), SensiNact.this.namespace(), serviceProviderId, serviceId,
resourceId);
@@ -412,11 +407,11 @@
@Override
public SubscribeResponse subscribe(final String requestId, final String serviceProviderId, final String serviceId,
- final String resourceId, final Recipient recipient, final JSONArray conditions, final String policy) {
- final SessionKey sessionKey;
- synchronized(SensiNact.this.sessions) {
- sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN, getSessionId()));
- }
+ final String resourceId, final Recipient recipient, final JSONArray conditions, final String policy,
+ Object... args) {
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
+
SubscribeResponse response = null;
String uri = getUri((sessionKey.localID() != 0), SensiNact.this.namespace(), serviceProviderId,
serviceId, resourceId);
@@ -434,7 +429,7 @@
}
}
response = ((DataResource) resource).subscribe(recipient, (constraint == null
- ? Collections.<Constraint>emptySet():Collections.<Constraint>singleton(constraint)),policy);
+ ? Collections.<Constraint>emptySet():Collections.<Constraint>singleton(constraint)), policy, args);
} else {
response = SensiNact.<JSONObject, SubscribeResponse>createErrorResponse(mediator,
AccessMethod.SUBSCRIBE, uri, 404, "Unknown Method", null);
@@ -488,12 +483,10 @@
@Override
public UnsubscribeResponse unsubscribe(String requestId, final String serviceProviderId, final String serviceId,
- final String resourceId, final String subscriptionId) {
- final SessionKey sessionKey;
- synchronized(SensiNact.this.sessions) {
- sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN,
- getSessionId()));
- }
+ final String resourceId, final String subscriptionId, Object... args) {
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
+
UnsubscribeResponse response = null;
String uri = getUri((sessionKey.localID() != 0), SensiNact.this.namespace(), serviceProviderId, serviceId,
resourceId);
@@ -502,7 +495,7 @@
if (resource != null) {
if (!resource.getType().equals(Resource.Type.ACTION)) {
- response = ((DataResource) resource).unsubscribe(subscriptionId);
+ response = ((DataResource) resource).unsubscribe(subscriptionId, args);
} else {
response = SensiNact.<JSONObject, UnsubscribeResponse>createErrorResponse(mediator,
@@ -541,11 +534,9 @@
@Override
public DescribeResponse<String> getAll(String requestId, String filter, FilteringCollection filterCollection) {
- final SessionKey sessionKey;
- synchronized(SensiNact.this.sessions) {
- sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN,
- getSessionId()));
- }
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
+
DescribeResponse<String> response = null;
DescribeMethod<String> method = new DescribeMethod<String>(mediator, UriUtils.PATH_SEPARATOR, null,
DescribeType.COMPLETE_LIST);
@@ -593,8 +584,8 @@
@Override
public DescribeResponse<String> getProviders(String requestId, FilteringCollection filterCollection) {
- SessionKey sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(
- KeyExtractorType.TOKEN, this.getSessionId()));
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
DescribeResponse<String> response = null;
DescribeMethod<String> method = new DescribeMethod<String>(mediator, UriUtils.PATH_SEPARATOR, null,
@@ -641,8 +632,8 @@
@Override
public DescribeResponse<JSONObject> getProvider(String requestId, final String serviceProviderId) {
- SessionKey sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(
- KeyExtractorType.TOKEN, this.getSessionId()));
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
String uri = getUri((sessionKey.localID() != 0), SensiNact.this.namespace(), serviceProviderId);
@@ -680,8 +671,8 @@
@Override
public DescribeResponse<String> getServices(String requestId, final String serviceProviderId,
FilteringCollection filterCollection) {
- SessionKey sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(
- KeyExtractorType.TOKEN, this.getSessionId()));
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
String uri = getUri((sessionKey.localID() != 0), SensiNact.this.namespace(), serviceProviderId);
DescribeResponse<String> response = null;
@@ -737,9 +728,9 @@
@Override
public DescribeResponse<JSONObject> getService(String requestId, final String serviceProviderId,
final String serviceId) {
- SessionKey sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(
- KeyExtractorType.TOKEN, this.getSessionId()));
+ final SessionKey sessionKey=getSessionKeyFromToken();
+
String uri = getUri((sessionKey.localID() != 0), SensiNact.this.namespace(), serviceProviderId, serviceId);
DescribeResponse<JSONObject> response = null;
@@ -774,8 +765,8 @@
@Override
public DescribeResponse<String> getResources(String requestId, final String serviceProviderId,
final String serviceId, FilteringCollection filterCollection) {
- SessionKey sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(
- KeyExtractorType.TOKEN, this.getSessionId()));
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
String uri = getUri((sessionKey.localID() != 0), SensiNact.this.namespace(), serviceProviderId, serviceId);
@@ -837,9 +828,9 @@
@Override
public DescribeResponse<JSONObject> getResource(final String requestId, final String serviceProviderId,
final String serviceId, final String resourceId) {
- SessionKey sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(
- KeyExtractorType.TOKEN, this.getSessionId()));
+ final SessionKey sessionKey=getSessionKeyFromToken();
+
String uri = getUri((sessionKey.localID() != 0), SensiNact.this.namespace(), serviceProviderId, serviceId,
resourceId);
@@ -889,8 +880,9 @@
* </ul>
*/
private final boolean isAccessible(final String path) {
- final SessionKey sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(
- KeyExtractorType.TOKEN, this.getSessionId()));
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
+
Boolean accessible = AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
@Override
public Boolean run() {
@@ -1039,11 +1031,8 @@
@Override
public final void changePassword(final String oldPassword, final String newPassword) throws SecuredAccessException {
- final SessionKey sessionKey;
- synchronized(SensiNact.this.sessions) {
- sessionKey = SensiNact.this.sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN,
- getSessionId()));
- }
+
+ final SessionKey sessionKey=getSessionKeyFromToken();
final String publicKey = sessionKey.getPublicKey();
SecuredAccessException exception = SensiNact.this.mediator.callService(
@@ -1891,7 +1880,7 @@
* @return the JSON formated response of the SET access method invocation
*/
private JSONObject set(String identifier, final String serviceProviderId, final String serviceId,
- final String resourceId, final String attributeId, final Object parameter) {
+ final String resourceId, final String attributeId, final Object parameter, Object...args) {
final SessionKey sessionKey;
synchronized(this.sessions){
sessionKey = sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN, identifier));
@@ -1971,7 +1960,7 @@
* @return the JSON formated response of the GET access method invocation
*/
private JSONObject get(String identifier, final String serviceProviderId, final String serviceId,
- final String resourceId, final String attributeId) {
+ final String resourceId, final String attributeId, Object...args) {
final SessionKey sessionKey;
synchronized(this.sessions){
sessionKey = sessions.get(new KeyExtractor<KeyExtractorType>(KeyExtractorType.TOKEN, identifier));
@@ -1993,6 +1982,7 @@
ExecutorService executor = Executors.newFixedThreadPool(20);
if (sessionKey.localID() == 0) {
+
Collection<ServiceReference<SensinactCoreBaseIface>> references = null;
try {
references = mediator.getContext().getServiceReferences(SensinactCoreBaseIface.class, String.format("(!(%s=%s))",
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Service.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Service.java
index 69ec7bb..450d541 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Service.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Service.java
@@ -15,10 +15,10 @@
import org.eclipse.sensinact.gateway.common.constraint.Constraint;
import org.eclipse.sensinact.gateway.common.primitive.ElementsProxy;
import org.eclipse.sensinact.gateway.core.message.Recipient;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.UnsubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
+import org.eclipse.sensinact.gateway.core.method.SetResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.UnsubscribeResponse;
/**
* This interface represents devices (called smart object services) and higher
@@ -44,38 +44,20 @@
/**
* Asks for this Resource's associated get execution
*
- * @param parameters
- * objects array parameterizing the invocation
- * @return the invocation {@link SnaMessage} result
- */
- GetResponse get(String resourceName, String attributeName);
-
- /**
- * Asks for this Resource's associated get execution
+ * @param parameters objects array parameterizing the invocation
*
- * @param parameters
- * objects array parameterizing the invocation
- * @return the invocation {@link SnaMessage} result
+ * @return the resulting {@link GetResponse}
*/
- GetResponse get(String resourceName);
+ GetResponse get(String resourceName, String attributeName, Object...args);
/**
* Asks for this Resource's associated set execution
*
- * @param parameters
- * objects array parameterizing the invocation
- * @return the invocation {@link SnaMessage} result
- */
- SetResponse set(String resourceName, String atributeName, Object value);
-
- /**
- * Asks for this Resource's associated set execution
+ * @param parameters objects array parameterizing the invocation
*
- * @param parameters
- * objects array parameterizing the invocation
- * @return the invocation {@link SnaMessage} result
+ * @return the resulting {@link SetResponse}
*/
- SetResponse set(String resourceName, Object value);
+ SetResponse set(String resourceName, String atributeName, Object value, Object...args);
/**
* Asks for this Resource's associated set execution
@@ -84,7 +66,7 @@
* array of {@link Parameter}s parameterizing the invocation
* @return the {@link SnaMessage} resulting of the invocation
*/
- SubscribeResponse subscribe(String resourceName, String attributeName, Recipient recipient);
+ SubscribeResponse subscribe(String resourceName, String attributeName, Recipient recipient, Object...args);
/**
* Asks for this Resource's associated set execution
@@ -93,8 +75,8 @@
* array of {@link Parameter}s parameterizing the invocation
* @return the {@link SnaMessage} resulting of the invocation
*/
- SubscribeResponse subscribe(String resourceName, Recipient recipient);
-
+ SubscribeResponse subscribe(String resourceName, String attributeName, Recipient recipient, Set<Constraint> conditions, Object...args);
+
/**
* Asks for this Resource's associated set execution
*
@@ -102,42 +84,15 @@
* array of {@link Parameter}s parameterizing the invocation
* @return the {@link SnaMessage} resulting of the invocation
*/
- SubscribeResponse subscribe(String resourceName, String attributeName, Recipient recipient,
- Set<Constraint> conditions);
+ SubscribeResponse subscribe(String resourceName, String attributeName, Recipient recipient, Set<Constraint> conditions, String policy, Object...args);
/**
* Asks for this Resource's associated set execution
*
- * @param parameters
- * array of {@link Parameter}s parameterizing the invocation
- * @return the {@link SnaMessage} resulting of the invocation
- */
- SubscribeResponse subscribe(String resourceName, Recipient recipient, Set<Constraint> conditions);
-
- /**
- * Asks for this Resource's associated set execution
+ * @param parameters array of {@link Parameter}s parameterizing the invocation
*
- * @param parameters
- * array of {@link Parameter}s parameterizing the invocation
- * @return the {@link SnaMessage} resulting of the invocation
+ * @return the resulting {@link UnsubscribeResponse}
*/
- SubscribeResponse subscribe(String resourceName, Recipient recipient, Set<Constraint> conditions, long lifetime);
+ UnsubscribeResponse unsubscribe(String resourceName, String attributeName, String subscriptionId, Object...args);
- /**
- * Asks for this Resource's associated set execution
- *
- * @param parameters
- * array of {@link Parameter}s parameterizing the invocation
- * @return the {@link SnaMessage} resulting of the invocation
- */
- UnsubscribeResponse unsubscribe(String resourceName, String attributeName, String subscriptionId);
-
- /**
- * Asks for this Resource's associated set execution
- *
- * @param parameters
- * array of {@link Parameter}s parameterizing the invocation
- * @return the {@link SnaMessage} resulting of the invocation
- */
- UnsubscribeResponse unsubscribe(String resourceName, String subscriptionId);
}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ServiceImpl.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ServiceImpl.java
index ed91d2a..863e498 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ServiceImpl.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ServiceImpl.java
@@ -48,33 +48,16 @@
super(proxy, tree);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.ResourceCollection#getResources()
- */
@Override
public List<Resource> getResources() {
return super.list();
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.ResourceCollection#
- * getResource(java.lang.String)
- */
@Override
public <R extends Resource> R getResource(String resource) {
return (R) super.element(resource);
}
- /**
- * @inheritDoc
- *
- * @see java.lang.reflect.InvocationHandler# invoke(java.lang.Object,
- * java.lang.reflect.Method, java.lang.Object[])
- */
@Override
public Object invoke(Object proxy, Method method, Object[] parameters) throws Throwable {
Object result = null;
@@ -83,39 +66,27 @@
if (method.isVarArgs() && parameters != null && parameters.length == 1
&& parameters[0].getClass().isArray()) {
calledParameters = (Object[]) parameters[0];
-
- } else {
+ } else
calledParameters = parameters;
- }
+
if (calledParameters.length > 0) {
String resourceName = (String) calledParameters[0];
calledParameters[0] = getResource(resourceName);
}
result = this.proxy.invoke(method.getName().toUpperCase(), calledParameters);
- } else {
+ } else
result = method.invoke(this, parameters);
- }
- if (result == this.proxy || result == this) {
+
+ if (result == this.proxy || result == this)
return proxy;
- }
return result;
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.common.primitive.ElementsProxy#isAccessible()
- */
@Override
public boolean isAccessible() {
return true;
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.common.primitive.Describable#getDescription()
- */
@Override
public Description getDescription() {
return new Description() {
@@ -659,42 +630,21 @@
return this.subscriptionsCount;
}
- /**
- * @inheritDoc
- *
- * @see ModelElement#getRegisteredEvent()
- */
@Override
protected Lifecycle getRegisteredEvent() {
return Lifecycle.SERVICE_APPEARING;
}
- /**
- * @inheritDoc
- *
- * @see ModelElement#getUnregisteredEvent()
- */
@Override
protected Lifecycle getUnregisteredEvent() {
return Lifecycle.SERVICE_DISAPPEARING;
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.ModelElement#getProxyType()
- */
@Override
protected Class<? extends ElementsProxy<Resource>> getProxyType() {
return Service.class;
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.SensiNactResourceModelElement#
- * getProxy(java.util.List)
- */
@Override
public ServiceProxy getProxy(List<MethodAccessibility> methodAccessibilities) {
try {
@@ -708,13 +658,6 @@
return null;
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.ModelElement#
- * getElementProxy(org.eclipse.sensinact.gateway.core.security.AccessTree,
- * org.eclipse.sensinact.gateway.common.primitive.Nameable)
- */
@Override
protected Resource getElementProxy(AccessTree<?> tree, ResourceImpl element)
throws ModelElementProxyBuildException {
@@ -724,13 +667,6 @@
return element.getProxy(tree);
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.ModelElement#
- * getWrapper(org.eclipse.sensinact.gateway.core.ModelElementProxy,
- * org.eclipse.sensinact.gateway.core.security.ImmutableAccessTree)
- */
@Override
protected ModelElementProxyWrapper getWrapper(ServiceProxy proxy, ImmutableAccessTree tree) {
ServiceProxyWrapper wrapper = new ServiceProxyWrapper(proxy, tree);
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ServiceProviderImpl.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ServiceProviderImpl.java
index c23d61e..4e76e9a 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ServiceProviderImpl.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ServiceProviderImpl.java
@@ -79,7 +79,7 @@
String location = null;
Service admin = getService(ServiceProvider.ADMINISTRATION_SERVICE_NAME);
if (admin != null) {
- JSONObject response = admin.get(LocationResource.LOCATION).getResponse();
+ JSONObject response = admin.get(LocationResource.LOCATION, DataResource.VALUE).getResponse();
location = String.valueOf(response.opt(DataResource.VALUE));
}
return location;
@@ -90,7 +90,7 @@
String setLocation = null;
Service admin = getService(ServiceProvider.ADMINISTRATION_SERVICE_NAME);
if (admin != null) {
- JSONObject response = admin.set(LocationResource.LOCATION, location).getResponse();
+ JSONObject response = admin.set(LocationResource.LOCATION, DataResource.VALUE, location).getResponse();
setLocation = String.valueOf(response.opt(DataResource.VALUE));
}
return setLocation;
@@ -101,7 +101,7 @@
ServiceProvider.LifecycleStatus status = null;
Service admin = getService(ServiceProvider.ADMINISTRATION_SERVICE_NAME);
if (admin != null) {
- JSONObject response = admin.get(ServiceProvider.LIFECYCLE_STATUS).getResponse();
+ JSONObject response = admin.get(ServiceProvider.LIFECYCLE_STATUS, DataResource.VALUE).getResponse();
status = ServiceProvider.LifecycleStatus.valueOf(String.valueOf(response.opt(DataResource.VALUE)));
}
return status;
@@ -113,7 +113,7 @@
ServiceProvider.LifecycleStatus setStatus = null;
Service admin = getService(ServiceProvider.ADMINISTRATION_SERVICE_NAME);
if (admin != null) {
- JSONObject response = admin.set(ServiceProvider.LIFECYCLE_STATUS, status).getResponse();
+ JSONObject response = admin.set(ServiceProvider.LIFECYCLE_STATUS, DataResource.VALUE, status).getResponse();
setStatus = ServiceProvider.LifecycleStatus.valueOf(String.valueOf(response.opt(DataResource.VALUE)));
}
return setStatus;
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ServiceProxy.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ServiceProxy.java
index 140e6a0..a63b2c4 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ServiceProxy.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/ServiceProxy.java
@@ -48,11 +48,6 @@
this.methods = new HashMap<String, AccessMethod>();
}
- /**
- * @inheritDoc
- *
- * @see SensiNactResourceModelElementProxy# getAccessMethod(AccessMethod.Type)
- */
@Override
public AccessMethod getAccessMethod(String method) {
return this.methods.get(method);
@@ -103,26 +98,21 @@
}
switch (methodAccessibility.getMethod().name()) {
case "ACT":
- actMethod = new ServiceAccessMethod(mediator, getPath(), AccessMethod.Type.valueOf(AccessMethod.ACT),
- handler);
+ actMethod = new ServiceAccessMethod(mediator, getPath(), AccessMethod.Type.valueOf(AccessMethod.ACT),handler);
break;
case "DESCRIBE":
break;
case "GET":
- getMethod = new ServiceAccessMethod(mediator, getPath(), AccessMethod.Type.valueOf(AccessMethod.GET),
- handler);
+ getMethod = new ServiceAccessMethod(mediator, getPath(), AccessMethod.Type.valueOf(AccessMethod.GET),handler);
break;
case "SET":
- setMethod = new ServiceAccessMethod(mediator, getPath(), AccessMethod.Type.valueOf(AccessMethod.SET),
- handler);
+ setMethod = new ServiceAccessMethod(mediator, getPath(), AccessMethod.Type.valueOf(AccessMethod.SET),handler);
break;
case "SUBSCRIBE":
- subscribeMethod = new ServiceAccessMethod(mediator, getPath(),
- AccessMethod.Type.valueOf(AccessMethod.SUBSCRIBE), handler);
+ subscribeMethod = new ServiceAccessMethod(mediator, getPath(),AccessMethod.Type.valueOf(AccessMethod.SUBSCRIBE), handler);
break;
case "UNSUBSCRIBE":
- unsubscribeMethod = new ServiceAccessMethod(mediator, getPath(),
- AccessMethod.Type.valueOf(AccessMethod.UNSUBSCRIBE), handler);
+ unsubscribeMethod = new ServiceAccessMethod(mediator, getPath(),AccessMethod.Type.valueOf(AccessMethod.UNSUBSCRIBE), handler);
break;
default:
break;
@@ -138,16 +128,17 @@
Signature getSignature = new Signature(mediator, GET, new Class<?>[] { String.class, String.class },
new String[] { "resourceName", "attributeName" });
+
Signature setSignature = new Signature(mediator, SET,
new Class<?>[] { String.class, String.class, Object.class },
new String[] { "resourceName", "attributeName", "value" });
Signature actSignature = new Signature(mediator, ACT, new Class<?>[] { String.class, Object[].class },
new String[] { "resourceName", "arguments" });
-
+
Signature subscribeSignature = new Signature(mediator, SUBSCRIBE,
- new Class<?>[] { String.class, String.class, Recipient.class, Set.class },
- new String[] { "resourceName", "attributeName", "listener", "conditions" });
+ new Class<?>[] { String.class, String.class, Recipient.class, Set.class, String.class },
+ new String[] { "resourceName", "attributeName", "listener", "conditions", "policy" });
Signature unsubscribeSignature = new Signature(mediator, UNSUBSCRIBE,
new Class<?>[] { String.class, String.class, String.class },
@@ -156,10 +147,6 @@
// Get method
if (getMethod != null) {
getMethod.addSignature(getSignature);
- Signature getAttributeShortcut = new Signature(mediator, GET, new Class<?>[] { String.class },
- new String[] { "resourceName" });
-
- getMethod.addSignature(getAttributeShortcut);
registerMethod(AccessMethod.GET, getMethod);
} else {
@@ -169,10 +156,7 @@
}
// Set method
if (setMethod != null) {
- setMethod.addSignature(setSignature);
- Signature setAttributeShortcut = new Signature(mediator, SET, new Class<?>[] { String.class, Object.class },
- new String[] { "resourceName", "value" });
- setMethod.addSignature(setAttributeShortcut);
+ setMethod.addSignature(setSignature);
registerMethod(AccessMethod.SET, setMethod);
} else {
@@ -194,21 +178,16 @@
if (subscribeMethod != null) {
subscribeMethod.addSignature(subscribeSignature);
- Signature subscribeConditionsShortcut = new Signature(mediator, SUBSCRIBE,
- new Class<?>[] { String.class, String.class, Recipient.class },
- new String[] { "resourceName", "attributeName", "listener" });
-
- subscribeMethod.addSignature(subscribeConditionsShortcut);
-
- Signature subscribeNameConditionsShortcut = new Signature(mediator, SUBSCRIBE,
- new Class<?>[] { String.class, Recipient.class }, new String[] { "resourceName", "listener" });
-
- Signature subscribeNameShortcut = new Signature(mediator, SUBSCRIBE,
- new Class<?>[] { String.class, Recipient.class, Set.class },
- new String[] { "resourceName", "listener", "conditions" });
-
- subscribeMethod.addSignature(subscribeNameConditionsShortcut);
- subscribeMethod.addSignature(subscribeNameShortcut);
+ Signature subscribePolicyShortcut = new Signature(mediator, SUBSCRIBE,
+ new Class<?>[] { String.class, String.class, Recipient.class, Set.class },
+ new String[] { "resourceName", "attributeName", "listener", "conditions" });
+
+ Signature subscribeConditionsPolicyShortcut = new Signature(mediator, SUBSCRIBE,
+ new Class<?>[] { String.class, String.class, Recipient.class },
+ new String[] { "resourceName", "attributeName", "listener" });
+
+ subscribeMethod.addSignature(subscribePolicyShortcut);
+ subscribeMethod.addSignature(subscribeConditionsPolicyShortcut);
registerMethod(AccessMethod.SUBSCRIBE, subscribeMethod);
} else {
@@ -219,8 +198,10 @@
// Unsubscribe method
if (unsubscribeMethod != null) {
unsubscribeMethod.addSignature(unsubscribeSignature);
+
Signature unsubscribeNameShortcut = new Signature(mediator, UNSUBSCRIBE,
- new Class<?>[] { String.class, String.class }, new String[] { "resourceName", "subscriptionId" });
+ new Class<?>[] { String.class, String.class, String.class },
+ new String[] { "resourceName", "attributeName", "subscriptionId" });
unsubscribeMethod.addSignature(unsubscribeNameShortcut);
registerMethod(AccessMethod.UNSUBSCRIBE, unsubscribeMethod);
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Session.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Session.java
index 0a3b426..66adfe5 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Session.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/Session.java
@@ -16,12 +16,12 @@
import org.eclipse.sensinact.gateway.common.execution.Executable;
import org.eclipse.sensinact.gateway.core.message.MidAgentCallback;
import org.eclipse.sensinact.gateway.core.message.SnaFilter;
-import org.eclipse.sensinact.gateway.core.method.legacy.ActResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.UnsubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.ActResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
+import org.eclipse.sensinact.gateway.core.method.SetResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.UnsubscribeResponse;
import org.json.JSONArray;
import org.json.JSONObject;
@@ -130,11 +130,13 @@
* @param attributeId
* the String identifier of the resource's attribute targeted by the
* access method call
+ * @param args optional extra arguments Object array parameterizing the call
*
* @return the JSON formated response of the GET access method invocation,
* wrapped into a {@link GetResponse}
*/
- GetResponse get(String serviceProviderId, String serviceId, String resourceId, String attributeId);
+ GetResponse get(String serviceProviderId, String serviceId, String resourceId, String attributeId,
+ Object...args);
/**
* Invokes the GET access method on the resource whose String identifier is
@@ -155,13 +157,14 @@
* @param attributeId
* the String identifier of the resource's attribute targeted by the
* access method call
+ * @param args optional extra arguments Object array parameterizing the call
*
* @return the JSON formated response of the GET access method invocation,
* tagged by the specified request identifier, and wrapped into a
* {@link GetResponse}
*/
GetResponse get(String requestId, String serviceProviderId, String serviceId, String resourceId,
- String attributeId);
+ String attributeId, Object...args);
/**
* Invokes the SET access method on the resource whose String identifier is
@@ -181,12 +184,13 @@
* access method call
* @param parameter
* the value object to be set
+ * @param args optional extra arguments Object array parameterizing the call
*
* @return the JSON formated response of the SET access method invocation,
* wrapped into a {@link SetResponse}
*/
SetResponse set(String serviceProviderId, String serviceId, String resourceId, String attributeId,
- Object parameter);
+ Object parameter, Object...args);
/**
* Invokes the SET access method on the resource whose String identifier is
@@ -209,13 +213,14 @@
* access method call
* @param parameter
* the value object to be set
+ * @param args optional extra arguments Object array parameterizing the call
*
* @return the JSON formated response of the SET access method invocation,
* tagged by the specified request identifier and , wrapped into a
* {@link SetResponse}
*/
SetResponse set(String requestId, String serviceProviderId, String serviceId, String resourceId,
- String attributeId, Object parameter);
+ String attributeId, Object parameter, Object...args);
/**
* Invokes the ACT access method on the resource whose String identifier is
@@ -283,12 +288,13 @@
* @param conditions
* the JSON formated set of constraints applying on the subscription
* to be created
+ * @param args optional extra arguments Object array parameterizing the call
*
* @return the JSON formated response of the SUBSCRIBE access method invocation,
* wrapped into a {@link SubscribeResponse}
*/
SubscribeResponse subscribe(String serviceProviderId, String serviceId, String resourceId,
- Recipient recipient, JSONArray conditions);
+ Recipient recipient, JSONArray conditions, Object...args);
/**
* Invokes the SUBSCRIBE access method on the resource whose String identifier
@@ -312,12 +318,13 @@
* @param policy
* the policy applying on the ErrorHandler of the callback of the
* subscription to be created
+ * @param args optional extra arguments Object array parameterizing the call
*
* @return the JSON formated response of the SUBSCRIBE access method invocation,
* wrapped into a {@link SubscribeResponse}
*/
SubscribeResponse subscribe(String serviceProviderId, String serviceId, String resourceId,
- Recipient recipient, JSONArray conditions, String policy);
+ Recipient recipient, JSONArray conditions, String policy, Object...args);
/**
* Invokes the SUBSCRIBE access method on the resource whose String identifier
@@ -341,13 +348,14 @@
* @param conditions
* the JSON formated set of constraints applying on the subscription
* to be created
+ * @param args optional extra arguments Object array parameterizing the call
*
* @return the JSON formated response of the SUBSCRIBE access method invocation,
* tagged by the specified request identifier, and wrapped into a
* {@link SubscribeResponse}
*/
SubscribeResponse subscribe(String requestId, String serviceProviderId, String serviceId,
- String resourceId, Recipient recipient, JSONArray conditions);
+ String resourceId, Recipient recipient, JSONArray conditions, Object...args);
/**
* Invokes the SUBSCRIBE access method on the resource whose String identifier
@@ -374,13 +382,14 @@
* @param policy
* the policy applying on the ErrorHandler of the callback of the subscription
* to be created
+ * @param args optional extra arguments Object array parameterizing the call
*
* @return the JSON formated response of the SUBSCRIBE access method invocation,
* tagged by the specified request identifier, and wrapped into a
* {@link SubscribeResponse}
*/
SubscribeResponse subscribe(String requestId, String serviceProviderId, String serviceId, String resourceId,
- Recipient recipient, JSONArray conditions, String policy);
+ Recipient recipient, JSONArray conditions, String policy, Object...args);
/**
* Invokes the UNSUBSCRIBE access method on the resource whose String identifier
@@ -397,12 +406,13 @@
* method call
* @param subscriptionId
* the String identifier of the subscription to be deleted
+ * @param args optional extra arguments Object array parameterizing the call
*
* @return the JSON formated response of the UNSUBSCRIBE access method
* invocation, wrapped into a {@link UnsubscribeResponse}
*/
UnsubscribeResponse unsubscribe(String serviceProviderId, String serviceId, String resourceId,
- String subscriptionId);
+ String subscriptionId, Object...args);
/**
* Invokes the UNSUBSCRIBE access method on the resource whose String identifier
@@ -422,13 +432,14 @@
* method call
* @param subscriptionId
* the String identifier of the subscription to be deleted
+ * @param args optional extra arguments Object array parameterizing the call
*
* @return the JSON formated response of the UNSUBSCRIBE access method
* invocation, tagged by the specified request identifier, and wrapped
* into a {@link UnsubscribeResponse}
*/
- UnsubscribeResponse unsubscribe(String requestId, String serviceProviderId, String serviceId, String resourceId,
- String subscriptionId);
+ UnsubscribeResponse unsubscribe(String requestId, String serviceProviderId, String serviceId,
+ String resourceId, String subscriptionId, Object...args);
/**
* Creates and registers an {@link SnaAgent} attached to this Session and that
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/message/SnaMessageListener.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/message/SnaMessageListener.java
index 640f063..f05fd92 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/message/SnaMessageListener.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/message/SnaMessageListener.java
@@ -177,43 +177,43 @@
String messageMethod = null;
switch (((SnaMessageSubType) message.getType()).getSnaMessageType()) {
- case RESPONSE:
- switch ((AccessMethodResponse.Response) message.getType()) {
- case ACT_RESPONSE:
- messageMethod = AccessMethod.ACT;
+ case RESPONSE:
+ switch ((AccessMethodResponse.Response) message.getType()) {
+ case ACT_RESPONSE:
+ messageMethod = AccessMethod.ACT;
+ break;
+ case DESCRIBE_RESPONSE:
+ messageMethod = AccessMethod.DESCRIBE;
+ break;
+ case GET_RESPONSE:
+ messageMethod = AccessMethod.GET;
+ break;
+ case SET_RESPONSE:
+ messageMethod = AccessMethod.SET;
+ break;
+ case SUBSCRIBE_RESPONSE:
+ messageMethod = AccessMethod.SUBSCRIBE;
+ break;
+ case UNSUBSCRIBE_RESPONSE:
+ messageMethod = AccessMethod.UNSUBSCRIBE;
+ break;
+ default:
+ break;
+ }
break;
- case DESCRIBE_RESPONSE:
+ case ERROR:
+ case LIFECYCLE:
messageMethod = AccessMethod.DESCRIBE;
break;
- case GET_RESPONSE:
+ case UPDATE:
messageMethod = AccessMethod.GET;
break;
- case SET_RESPONSE:
- messageMethod = AccessMethod.SET;
- break;
- case SUBSCRIBE_RESPONSE:
- messageMethod = AccessMethod.SUBSCRIBE;
- break;
- case UNSUBSCRIBE_RESPONSE:
- messageMethod = AccessMethod.UNSUBSCRIBE;
- break;
default:
break;
- }
- break;
- case ERROR:
- case LIFECYCLE:
- messageMethod = AccessMethod.DESCRIBE;
- break;
- case UPDATE:
- messageMethod = AccessMethod.GET;
- break;
- default:
- break;
}
- if (messageMethod != null) {
+ if (messageMethod != null)
doHandleAgents(message, messageMethod);
- }
+
doHandleSubscribers(message);
}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/AbstractAccessMethod.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/AbstractAccessMethod.java
index 6a64eee..4ed190d 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/AbstractAccessMethod.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/AbstractAccessMethod.java
@@ -10,6 +10,8 @@
*/
package org.eclipse.sensinact.gateway.core.method;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Deque;
import java.util.HashMap;
@@ -17,8 +19,10 @@
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
import org.eclipse.sensinact.gateway.common.constraint.Fixed;
@@ -130,8 +134,9 @@
* @param parameterTypes
* the array of types of the {@link Signature} to create
* @return a new {@link Signature} instance
+ * @throws InvalidValueException
*/
- private Signature createSignature(Class<?>[] parameterTypes) {
+ private Signature createSignature(Class<?>[] parameterTypes) throws InvalidValueException {
Class<?>[] types = parameterTypes == null ? new Class<?>[0] : parameterTypes;
String[] names = new String[types.length];
@@ -157,24 +162,21 @@
* the array of parameter string names of the {@link Signature} to
* create
* @return a new {@link Signature} instance
+ *
+ * @throws InvalidValueException
*/
- private Signature createSignature(Class<?>[] parameterTypes, String[] parameterNames) {
+ private Signature createSignature(Class<?>[] parameterTypes, String[] parameterNames) throws InvalidValueException {
Signature signature = null;
Class<?>[] types = parameterTypes == null ? new Class<?>[0] : parameterTypes;
-
String[] names = parameterNames == null ? new String[0] : parameterNames;
-
- if (types.length > names.length) {
+ if (types.length > names.length)
return signature;
- }
Parameter[] parameters = new Parameter[types.length];
-
int index = 0;
int length = types.length;
for (; index < length; index++) {
try {
parameters[index] = new Parameter(this.mediator, names[index], types[index]);
-
} catch (InvalidValueException e) {
// cannot happen
e.printStackTrace();
@@ -183,7 +185,7 @@
signature = new Signature(this.mediator, type.name(), parameters);
return signature;
}
-
+
/**
* Creates a {@link Signature} using the parameter types array argument and maps
* it to the {@link AccessMethodExecutor} passed as parameter
@@ -196,9 +198,10 @@
* @param policy
* the {@link AccessMethodExecutor.Execu tionPolicy} of the specified
* {@link AccessMethodExecutor}
+ * @throws InvalidValueException
*/
- public void addSignature(Class<?>[] parameterTypes, AccessMethodExecutor executor,
- AccessMethodExecutor.ExecutionPolicy policy) {
+ public void addSignature(Class<?>[] parameterTypes, AccessMethodExecutor executor, AccessMethodExecutor.ExecutionPolicy policy)
+ throws InvalidValueException {
Signature signature = this.getSignature(parameterTypes);
if (signature != null) {
this.addSignature(signature, executor, policy);
@@ -222,10 +225,11 @@
* @param policy
* the {@link AccessMethodExecutor.ExecutionPolicy} of the specified
* {@link AccessMethodExecutor}
+ * @throws InvalidValueException
* @throws InvalidConstraintDefinitionException
*/
public void addSignature(Class<?>[] parameterTypes, String[] parameterNames, AccessMethodExecutor executor,
- AccessMethodExecutor.ExecutionPolicy policy) {
+ AccessMethodExecutor.ExecutionPolicy policy) throws InvalidValueException {
Signature signature = this.getSignature(parameterTypes);
if (signature != null) {
this.addSignature(signature, executor, policy);
@@ -326,64 +330,51 @@
* {@link Shortcut}
*/
public void addShortcut(Shortcut shortcut, Signature signature) {
- if (shortcut == null || signature == null
- || (this.map.get(signature) == null && this.shortcuts.get(signature) == null)) {
- return;
- }
+ if (shortcut == null || signature == null || (this.map.get(signature) == null && this.shortcuts.get(signature) == null))
+ return;
this.shortcuts.put(shortcut, signature);
}
- /**
- * @inheritDoc
- *
- * @see Describable# getDescription()
- */
@Override
public AccessMethodDescription getDescription() {
return new AccessMethodDescription(this);
}
- /**
- * @inheritDoc
- *
- * @see Nameable#getName()
- */
@Override
public String getName() {
return this.type.name();
}
- /**
- * @inheritDoc
- *
- * @see PathElement#getPath()
- */
+ @Override
public String getPath() {
return this.uri;
}
- /**
- * @return
- */
+ @Override
public int size() {
return this.map.size() + this.shortcuts.size();
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.method.AccessMethod#invoke(java.lang.Object[])
- */
@Override
public R invoke(Object[] parameters) {
- Iterator<Signature> iterator = this.getSignatures().iterator();
+ List<Signature> signatures = new ArrayList<>();
+
+ signatures.addAll(this.shortcuts.keySet().stream().sorted(
+ (s1,s2)->{return s1.length()<s2.length()?-1:(s1.length()>s2.length()?1:0);}
+ ).collect(Collectors.toList()));
+
+ signatures.addAll(this.map.keySet().stream().sorted(
+ (s1,s2)->{return s1.length()<s2.length()?-1:(s1.length()>s2.length()?1:0);}
+ ).collect(Collectors.toList()));
+
+ Iterator<Signature> iterator = signatures.iterator();
while (iterator.hasNext()) {
Signature signature = iterator.next();
- if (signature.validParameters(parameters)) {
+ if (signature.validParameters(parameters))
return this.invoke(signature);
- }
}
+
return this.error(AccessMethodResponse.NOT_FOUND_ERROR_CODE, "Unknown signature");
}
@@ -391,16 +382,13 @@
* Invokes this method using the specified {@link Signature}'s parameter values
* to parameterize the call
*
- * @param signature
- * the {@link Signature} of this method parameterizing the invocation
- * @param accessLevel
- * the integer access level of the call
- * @return the invocation resulting {@link SnaMessage}
+ * @param signature the {@link Signature} of this method parameterizing the invocation
+
+ * @return the resulting {@link SnaMessage}
*/
public synchronized <A extends AccessMethodResponseBuilder<T, R>> R invoke(Signature signature) {
- if (signature == null) {
+ if (signature == null)
return this.error(SnaErrorfulMessage.BAD_REQUEST_ERROR_CODE, "Null signature");
- }
Deque<AccessMethodExecutor> executors = null;
Signature current = signature;
Signature previous = null;
@@ -417,26 +405,25 @@
break;
}
((Shortcut) signature).push((Shortcut) current);
- }
- if (executors == null) {
+ };
+ if (executors == null)
return this.error(SnaErrorfulMessage.NOT_FOUND_ERROR_CODE, "Unknown signature");
- }
+
Object[] parameters = signature.values();
A result = this.createAccessMethodResponseBuilder(parameters);
-
- if (preProcessingExecutor != null) {
- executors.addFirst(preProcessingExecutor);
- }
- if (postProcessingExecutor != null) {
+
+ if (preProcessingExecutor != null)
+ executors.addFirst(preProcessingExecutor);
+
+ if (postProcessingExecutor != null)
executors.addLast(postProcessingExecutor);
- }
+
Iterator<AccessMethodExecutor> iterator = executors.iterator();
while (iterator.hasNext()) {
AccessMethodExecutor executor = iterator.next();
- if (executor == null) {
- continue;
- }
+ if (executor == null)
+ continue;
try {
executor.execute(result);
@@ -447,12 +434,12 @@
}
}
}
- if (preProcessingExecutor != null) {
+ if (preProcessingExecutor != null)
executors.removeFirst();
- }
- if (postProcessingExecutor != null) {
+
+ if (postProcessingExecutor != null)
executors.removeLast();
- }
+
return result.createAccessMethodResponse();
}
@@ -460,11 +447,6 @@
return AccessMethodResponse.<T, R>error(mediator, this.getPath(), this.getType(), errorCode, message, null);
}
- /**
- * @inheritDoc
- *
- * @see AccessMethod#getSignatures()
- */
@Override
public Set<Signature> getSignatures() {
Set<Signature> signatures = new HashSet<Signature>(this.map.keySet());
@@ -472,11 +454,6 @@
return Collections.unmodifiableSet(signatures);
}
- /**
- * @inheritDoc
- *
- * @see AccessMethod# getType()
- */
@Override
public AccessMethod.Type getType() {
return this.type;
@@ -490,11 +467,6 @@
this.shortcuts.clear();
}
- /**
- * @inheritDoc
- *
- * @see org.eclipse.sensinact.gateway.core.method.SnaObjectMethod#getErrorHandler()
- */
@Override
public ErrorHandler getErrorHandler() {
return this.errorHandler;
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/AccessMethod.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/AccessMethod.java
index fcccb88..591d773 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/AccessMethod.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/AccessMethod.java
@@ -52,9 +52,8 @@
*
*/
private static final void initialize() {
- if (initialized) {
+ if (initialized)
return;
- }
initialized = true;
new Type(AccessMethod.GET, AccessMethodResponse.Response.GET_RESPONSE);
new Type(AccessMethod.SET, AccessMethodResponse.Response.SET_RESPONSE);
@@ -69,12 +68,10 @@
* @return
*/
public static final Type valueOf(String name) {
- if (!initialized) {
+ if (!initialized)
initialize();
- }
- if (name == null) {
+ if (name == null)
return null;
- }
return METHODS.get(name);
}
@@ -83,12 +80,10 @@
* @return
*/
public static final Type valueOf(AccessMethodResponse.Response response) {
- if (!initialized) {
+ if (!initialized)
initialize();
- }
- if (response == null) {
+ if (response == null)
return null;
- }
Collection<Type> methods = METHODS.values();
Iterator<Type> it = methods.iterator();
Type m = null;
@@ -96,9 +91,8 @@
if (!it.hasNext())
break;
m = it.next();
- if (response.equals(m.response)) {
+ if (response.equals(m.response))
return m;
- }
}
return null;
}
@@ -107,9 +101,8 @@
* @return
*/
public static final Type[] values() {
- if (!initialized) {
+ if (!initialized)
initialize();
- }
Collection<Type> collection = METHODS.values();
Type[] types = new Type[collection.size()];
Iterator<Type> iterator = collection.iterator();
@@ -159,20 +152,12 @@
return this.response;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
+ @Override
public int hashCode() {
return this.ordinal();
}
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
+
+ @Override
public boolean equals(Object o) {
if (AccessMethod.Type.class.isAssignableFrom(o.getClass())) {
return ((AccessMethod.Type) o).ordinal() == this.ordinal();
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/AccessMethodResponse.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/AccessMethodResponse.java
index dc49d0c..34bdcb6 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/AccessMethodResponse.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/AccessMethodResponse.java
@@ -26,16 +26,7 @@
import org.eclipse.sensinact.gateway.core.message.SnaMessage;
import org.eclipse.sensinact.gateway.core.message.SnaMessageSubType;
import org.eclipse.sensinact.gateway.core.message.SnaResponseMessage;
-import org.eclipse.sensinact.gateway.core.method.legacy.ActResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeJSONResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeMethod;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeMethod.DescribeType;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeStringResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.UnsubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeMethod.DescribeType;
/**
* Extended {@link SnaMessage} dedicated to the responses to the
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/ActMethod.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/ActMethod.java
similarity index 85%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/ActMethod.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/ActMethod.java
index c6d89ab..9b70be7 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/ActMethod.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/ActMethod.java
@@ -8,12 +8,9 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.AbstractAccessMethod;
-import org.eclipse.sensinact.gateway.core.method.AccessMethod;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodExecutor;
import org.json.JSONObject;
/**
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/ActResponse.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/ActResponse.java
similarity index 92%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/ActResponse.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/ActResponse.java
index ef17fdf..4ef63cf 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/ActResponse.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/ActResponse.java
@@ -8,7 +8,7 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import java.util.ArrayList;
import java.util.List;
@@ -16,8 +16,6 @@
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
import org.eclipse.sensinact.gateway.core.message.SnaConstants;
import org.eclipse.sensinact.gateway.core.message.SnaErrorfulMessage;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodJSONResponse;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
import org.eclipse.sensinact.gateway.util.JSONUtils;
import org.json.JSONArray;
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/ActResponseBuilder.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/ActResponseBuilder.java
similarity index 88%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/ActResponseBuilder.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/ActResponseBuilder.java
index afbca53..a4b81dc 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/ActResponseBuilder.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/ActResponseBuilder.java
@@ -8,11 +8,9 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponseBuilder;
import org.json.JSONObject;
/**
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeJSONResponse.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeJSONResponse.java
similarity index 96%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeJSONResponse.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeJSONResponse.java
index 7d91128..23b5b36 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeJSONResponse.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeJSONResponse.java
@@ -8,7 +8,7 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
import org.eclipse.sensinact.gateway.core.message.SnaErrorfulMessage;
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeJSONResponseBuilder.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeJSONResponseBuilder.java
similarity index 94%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeJSONResponseBuilder.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeJSONResponseBuilder.java
index 3eee79c..29c798b 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeJSONResponseBuilder.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeJSONResponseBuilder.java
@@ -8,10 +8,9 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
import org.json.JSONObject;
/**
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeMethod.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeMethod.java
similarity index 90%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeMethod.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeMethod.java
index 2fafbea..9007534 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeMethod.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeMethod.java
@@ -8,12 +8,9 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.AbstractAccessMethod;
-import org.eclipse.sensinact.gateway.core.method.AccessMethod;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodExecutor;
/**
* Describe {@link AccessMethod}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeResponse.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeResponse.java
similarity index 95%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeResponse.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeResponse.java
index 6f793ed..9ca3165 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeResponse.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeResponse.java
@@ -8,7 +8,7 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import java.util.Iterator;
import java.util.Map;
@@ -16,7 +16,6 @@
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
import org.eclipse.sensinact.gateway.common.props.TypedKey;
import org.eclipse.sensinact.gateway.core.message.SnaErrorfulMessage;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
import org.eclipse.sensinact.gateway.util.JSONUtils;
/**
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeResponseBuilder.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeResponseBuilder.java
similarity index 90%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeResponseBuilder.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeResponseBuilder.java
index 4d2b542..89b9c23 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeResponseBuilder.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeResponseBuilder.java
@@ -8,10 +8,9 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponseBuilder;
/**
* Extended {@link AccessMethodResponseBuilder} dedicated to
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeStringResponse.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeStringResponse.java
similarity index 95%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeStringResponse.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeStringResponse.java
index 0221565..aa7fa23 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeStringResponse.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeStringResponse.java
@@ -8,7 +8,7 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
import org.eclipse.sensinact.gateway.core.message.SnaErrorfulMessage;
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeStringResponseBuilder.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeStringResponseBuilder.java
similarity index 97%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeStringResponseBuilder.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeStringResponseBuilder.java
index 4a590db..44788a1 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/DescribeStringResponseBuilder.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/DescribeStringResponseBuilder.java
@@ -8,13 +8,12 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import java.util.Enumeration;
import java.util.Iterator;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
import org.json.JSONArray;
import org.json.JSONObject;
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/GetMethod.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/GetMethod.java
similarity index 81%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/GetMethod.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/GetMethod.java
index 71359c6..7976e1f 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/GetMethod.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/GetMethod.java
@@ -8,12 +8,9 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.AbstractAccessMethod;
-import org.eclipse.sensinact.gateway.core.method.AccessMethod;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodExecutor;
import org.json.JSONObject;
/**
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/GetResponse.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/GetResponse.java
similarity index 86%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/GetResponse.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/GetResponse.java
index f97f667..d42ff83 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/GetResponse.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/GetResponse.java
@@ -8,12 +8,10 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
import org.eclipse.sensinact.gateway.core.message.SnaErrorfulMessage;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodJSONResponse;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
/**
* Extended {@link AccessMethodJSONResponse} returned by an {@link GetMethod}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/GetResponseBuilder.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/GetResponseBuilder.java
similarity index 91%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/GetResponseBuilder.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/GetResponseBuilder.java
index 595ed5e..7dfcc6a 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/GetResponseBuilder.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/GetResponseBuilder.java
@@ -8,11 +8,10 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse.Status;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponseBuilder;
import org.json.JSONObject;
/**
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/LinkedActMethod.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/LinkedActMethod.java
index 2ae8195..94d6306 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/LinkedActMethod.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/LinkedActMethod.java
@@ -19,7 +19,7 @@
import java.util.Map;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.legacy.ActMethod;
+import org.eclipse.sensinact.gateway.common.primitive.InvalidValueException;
/**
* Extended {@link AccessMethod} dedicated to an Actuation
@@ -120,12 +120,11 @@
* Links the registered executors for the specified {@link Signature} of the
* {@link ActMethod} passed as parameters, to this LinkedActMethod
*
- * @param linked
- * the {@link ActMethod} to link with
- * @param Signature
- * the {@Signature} of the {@link ActMethod} to link with
+ * @param linked the {@link ActMethod} to link with
+ * @param Signature the {@Signature} of the {@link ActMethod} to link with
+ * @throws InvalidValueException
*/
- public final void createShortcut(Signature signature, Shortcut shortcut) {
+ public final void createShortcut(Signature signature, Shortcut shortcut) throws InvalidValueException {
Signature thatSignature = null;
if (linked == null || signature == null || signature.getName().intern() != super.getName().intern()
@@ -133,7 +132,6 @@
return;
}
Deque<AccessMethodExecutor> executors = linked.map.get(thatSignature);
-
Map<Integer, Parameter> fixedParameters = new HashMap<Integer, Parameter>();
fixedParameters.putAll(shortcut.getFixedParameters());
@@ -155,9 +153,7 @@
while (iterator.hasNext()) {
parameters.add(iterator.next());
}
- super.map.put(
- new Shortcut(super.mediator, signature.getName(), signature.getResponseType(),
- parameters.toArray(new Parameter[parameters.size()]), fixedParameters),
- new LinkedList<AccessMethodExecutor>(executors));
+ super.map.put(new Shortcut(super.mediator, signature.getName(), parameters.toArray(new Parameter[parameters.size()]),
+ fixedParameters), new LinkedList<AccessMethodExecutor>(executors));
}
}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/Parameter.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/Parameter.java
index e970203..639a21b 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/Parameter.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/Parameter.java
@@ -12,10 +12,12 @@
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import org.eclipse.sensinact.gateway.core.DataResource;
import org.eclipse.sensinact.gateway.core.Metadata;
import org.eclipse.sensinact.gateway.core.message.Recipient;
import org.json.JSONArray;
@@ -45,14 +47,15 @@
protected boolean fixed = false;
protected Object fixedValue = null;
protected List<Constraint> constraints;
-
+
/**
* Constructor
*
- * @param name
- * this parameter's name
- * @param type
- * this parameter's type
+ * @param mediator {@link Mediator} allowing the Parameter to be created to interact
+ * with the OSGi host environment
+ * @param name the String name of the Parameter to be instantiated
+ * @param type the java type of the Parameter to be instantiated
+ *
* @throws InvalidValueException
*/
public Parameter(Mediator mediator, String name, Class<?> type) throws InvalidValueException {
@@ -65,13 +68,15 @@
/**
* Constructor
*
- * @param name
- * this parameter's name
- * @param type
- * this parameter's type
+ * @param mediator {@link Mediator} allowing the Parameter to be created to interact
+ * with the OSGi host environment
+ * @param name the String name of the Parameter to be instantiated
+ * @param type the java type of the Parameter to be instantiated
+ * @param constraints the {@link List} of {@link Constaint}s applying on the Parameter to be instantiated
+ *
* @throws InvalidValueException
*/
- public Parameter(Mediator mediator, String name, Class<?> type, Set<Constraint> constraints)
+ public Parameter(Mediator mediator, String name, Class<?> type, List<Constraint> constraints)
throws InvalidValueException {
super(mediator, name, type);
this.fixed = false;
@@ -82,10 +87,13 @@
/**
* Constructor
*
- * @param name
- * this parameter's name
- * @param type
- * this parameter's type
+ *
+ * @param mediator {@link Mediator} allowing the Parameter to be created to interact
+ * with the OSGi host environment
+ * @param name the String name of the Parameter to be instantiated
+ * @param type the java type of the Parameter to be instantiated
+ * @param value the fixed Object value of the Parameter to be instantiated
+ *
* @throws InvalidValueException
*/
public Parameter(Mediator mediator, String name, Class<?> type, Object value) throws InvalidValueException {
@@ -96,29 +104,30 @@
}
/**
- * @param parameter
+ * Constructor
+ *
+ * @param mediator {@link Mediator} allowing the Parameter to be created to interact
+ * with the OSGi host environment
+ * @param parameter the {@link JSONObject} describing the Parameter to be instantiated
*
* @throws InvalidValueException
*/
public Parameter(Mediator mediator, JSONObject parameter) throws InvalidValueException {
super(mediator, parameter);
- this.fixed = parameter.optBoolean(FIXED_PARAMETER_KEY);
+ this.fixed = parameter.optBoolean(FIXED_PARAMETER_KEY);
if (fixed) {
- this.fixedValue = value;
+ this.fixedValue = parameter.opt(DataResource.VALUE);
this.constraints = Collections.emptyList();
-
} else {
this.fixedValue = null;
JSONArray constraints = parameter.optJSONArray(Metadata.CONSTRAINTS);
List<Constraint> constraintList = new ArrayList<Constraint>();
int index = 0;
int length = constraints == null ? 0 : constraints.length();
-
try {
for (; index < length; index++) {
JSONObject constraintJSON = constraints.getJSONObject(index);
- Constraint constraint = ConstraintFactory.Loader.load(super.mediator.getClassLoader(),
- constraintJSON);
+ Constraint constraint = ConstraintFactory.Loader.load(super.mediator.getClassLoader(),constraintJSON);
constraintList.add(constraint);
}
} catch (InvalidConstraintDefinitionException e) {
@@ -198,79 +207,55 @@
* </ul>
*/
public boolean validParameter(Object parameter) {
- if (Modifiable.FIXED.equals(this.getModifiable())) {
+ if (Modifiable.FIXED.equals(this.getModifiable()))
return true;
- }
+ if((parameter == null || (parameter.getClass().isArray()
+ && parameter.getClass().getComponentType() == Object.class)))
+ return true;
Iterator<Constraint> iterator = this.constraints.iterator();
-
while (iterator.hasNext()) {
Constraint constraint = iterator.next();
- if (!constraint.complies(parameter)) {
+ if (!constraint.complies(parameter))
return false;
- }
}
try {
super.setValue(parameter);
-
} catch (InvalidValueException e) {
return false;
}
return true;
}
- /**
- * @inheritDoc
- *
- * @see Primitive #getModifiable()
- */
@Override
public Modifiable getModifiable() {
return !this.fixed ? Modifiable.UPDATABLE : Modifiable.FIXED;
}
-
- /**
- *
- * @throws InvalidValueException
- */
+
public void reset() {
- if (Modifiable.FIXED.equals(this.getModifiable())) {
+ if (Modifiable.FIXED.equals(this.getModifiable()))
return;
- }
try {
super.setValue(this.fixedValue);
-
} catch (InvalidValueException e) {
- // should never happen
- e.printStackTrace();
+ mediator.error(e);
}
}
- /**
- * @inheritDoc
- *
- * @see Primitive#getValue()
- */
@Override
public Object getValue() {
return super.value;
}
- /**
- * @inheritDoc
- *
- * @see JSONable#getJSON()
- */
@Override
public String getJSON() {
JSONObject description = getJSONObject();
- if (String.class == this.getType() || this.getType().isPrimitive()) {
+ if (String.class == this.getType() || this.getType().isPrimitive())
description.put(PrimitiveDescription.VALUE_KEY, this.getValue());
- } else {
+ else
description.put(PrimitiveDescription.VALUE_KEY, JSONUtils.toJSONFormat(this.getValue()));
- }
return description.toString();
}
-
+
/**
* Returns the JSONObject from which is based the JSON formated string
* description of this Parameter
@@ -284,7 +269,7 @@
description.put(PrimitiveDescription.TYPE_KEY, typeName);
description.put(FIXED_PARAMETER_KEY, this.fixed);
-
+
JSONArray constraints = new JSONArray();
Iterator<Constraint> iterator = this.constraints.iterator();
while (iterator.hasNext()) {
@@ -295,12 +280,6 @@
return description;
}
- /**
- * Validates the type of this Primitive
- *
- * @param type
- * the type to be validated
- */
@Override
protected final void checkType(Class<?> type) throws InvalidValueTypeException {
if (Object.class != type && Object[].class != type && !Recipient.class.isAssignableFrom(type)
@@ -309,43 +288,29 @@
}
}
- /**
- * @inheritDoc
- *
- * @see Primitive#beforeChange(java.lang.Object)
- */
@Override
protected void beforeChange(Object value) throws InvalidValueException {
// do nothing
}
- /**
- * @inheritDoc
- *
- * @see Primitive#afterChange(java.lang.Object)
- */
@Override
protected void afterChange(Object value) throws InvalidValueException {
// do nothing
}
- /**
- * @inheritDoc
- *
- * @see java.lang.Object#clone()
- */
+ @Override
public Object clone() {
try {
if (this.constraints.isEmpty()) {
- if (this.fixed) {
+ if (this.fixed)
return new Parameter(super.mediator, this.name, this.type, this.fixedValue);
- } else {
+ else
return new Parameter(super.mediator, this.name, this.type);
- }
- } else {
+ } else
return new Parameter(super.mediator, this.name, this.type, this.constraints);
- }
+
} catch (InvalidValueException e) {
+ e.printStackTrace();
return null;
}
}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SetMethod.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SetMethod.java
similarity index 81%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SetMethod.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SetMethod.java
index 1a1f0d4..e16f8bd 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SetMethod.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SetMethod.java
@@ -8,12 +8,9 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.AbstractAccessMethod;
-import org.eclipse.sensinact.gateway.core.method.AccessMethod;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodExecutor;
import org.json.JSONObject;
/**
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SetResponse.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SetResponse.java
similarity index 86%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SetResponse.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SetResponse.java
index b98c55b..2b7af70 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SetResponse.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SetResponse.java
@@ -8,12 +8,10 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
import org.eclipse.sensinact.gateway.core.message.SnaErrorfulMessage;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodJSONResponse;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
/**
* Extended {@link AccessMethodJSONResponse} returned by an {@link SetMethod}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SetResponseBuilder.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SetResponseBuilder.java
similarity index 91%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SetResponseBuilder.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SetResponseBuilder.java
index 4209d25..a102d59 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SetResponseBuilder.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SetResponseBuilder.java
@@ -8,11 +8,10 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse.Status;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponseBuilder;
import org.json.JSONObject;
/**
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/Shortcut.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/Shortcut.java
index 8263d74..d8b3531 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/Shortcut.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/Shortcut.java
@@ -10,6 +10,7 @@
*/
package org.eclipse.sensinact.gateway.core.method;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
@@ -31,16 +32,16 @@
/**
* Constructor
*
- * @param type
- * the type of the {@link AccessMethod} associates to the shortcut to
- * instantiate
- * @param parameterTypes
- * the array of parameter types of the shortcut to instantiate
- * @param parameterNames
- * the array of parameter names of the shortcut to instantiate
- * @param fixedParameters
- * the set of fixed {@link Parameter}s mapped to their index in the
- * method signature
+ * @param mediator the {@link Mediator} allowing the Shortcut to be instantiated to interact
+ * with the OSGi host environment
+ * @param type the type of the {@link AccessMethod} associates to the Shortcut to be
+ * instantiated
+ * @param parameterTypes the array of parameter types of the Shortcut to be
+ * instantiated
+ * @param parameterNames the array of parameter names of the Shortcut to be
+ * instantiated
+ * @param fixedParameters the set of fixed {@link Parameter}s mapped to their index in the
+ * method signature
* @throws InvalidValueException
*/
public Shortcut(Mediator mediator, AccessMethod.Type type, Class<?>[] parameterTypes, String[] parameterNames,
@@ -49,22 +50,21 @@
this.fixedParameters = Collections.unmodifiableMap(fixedParameters);
this.shortucts = new Stack<Shortcut>();
}
-
+
/**
* Constructor
*
- * @param methodType
- * the type of the associated {@link AccessMethod}
- * @param responseType
- * the object type returned by the associated {@link AccessMethod}
- * @param parameters
- * this Signature {@link Parameter}s array
- * @param fixedParameters
- * the set of fixed {@link Parameter}s mapped to their index in the
- * method signature
+ * @param mediator the {@link Mediator} allowing the Shortcut to be instantiated to interact
+ * with the OSGi host environment
+ * @param methodType the type of the associated {@link AccessMethod}
+ * @param responseType the object type returned by the associated {@link AccessMethod}
+ * @param parameters the {@link Parameter}s array parameterizing the call
+ * @param fixedParameters the set of fixed {@link Parameter}s mapped to their index in the
+ * method signature
+ * @throws InvalidValueException
*/
- public Shortcut(Mediator mediator, String methodType, Parameter[] parameters,
- Map<Integer, Parameter> fixedParameters) {
+ public Shortcut(Mediator mediator, String methodType, Parameter[] parameters, Map<Integer, Parameter> fixedParameters)
+ throws InvalidValueException {
super(mediator, methodType, parameters);
this.fixedParameters = Collections.unmodifiableMap(fixedParameters);
this.shortucts = new Stack<Shortcut>();
@@ -73,18 +73,20 @@
/**
* Constructor
*
- * @param name
- * the type's name of the associated {@link AccessMethod}
- * @param responseType
- * the object type returned by the associated {@link AccessMethod}
- * @param parameters
- * this Signature {@link Parameter}s array
- * @param fixedParameters
- * the set of fixed {@link Parameter}s mapped to their index in the
- * method signature
+ *
+ * @param mediator the {@link Mediator} allowing the Shortcut to be instantiated to interact
+ * with the OSGi host environment
+ * @param methodType the type of the associated {@link AccessMethod}
+ * @param responseType the object type returned by the associated {@link AccessMethod}
+ * @param parameters the {@link Parameter}s array parameterizing the call
+ * @param fixedParameters the set of fixed {@link Parameter}s mapped to their index in the
+ * method signature
+ * @param varArgs boolean defining whether thz Shortcut to be instantiated includes an optional
+ * variable Objects array argument
+ * @throws InvalidValueException
*/
public Shortcut(Mediator mediator, String name, AccessMethodResponse.Response returnedType, Parameter[] parameters,
- Map<Integer, Parameter> fixedParameters) {
+ Map<Integer, Parameter> fixedParameters) throws InvalidValueException {
super(mediator, name, returnedType, parameters);
this.fixedParameters = Collections.unmodifiableMap(fixedParameters);
this.shortucts = new Stack<Shortcut>();
@@ -94,13 +96,11 @@
* Pushes the Shortcut whose fixed parameters have to be used while building the
* object values array
*
- * @param shortcut
- * the Shortcut to push
+ * @param shortcut the Shortcut to push
*/
public void push(Shortcut shortcut) {
- if (shortcut == null) {
- return;
- }
+ if (shortcut == null)
+ return;
this.shortucts.push(shortcut);
}
@@ -113,17 +113,10 @@
return this.fixedParameters;
}
- /**
- * Returns the array of object values of this Shortcut's set of
- * {@link Parameter}s after completion
- *
- * @return the array of this Shortcut's {@link Parameter}s'object values
- */
@Override
public Object[] values() {
int position = 0;
Map<Integer, Parameter> gathered = new HashMap<Integer, Parameter>();
-
while (!this.shortucts.isEmpty()) {
gathered.putAll(this.shortucts.pop().getFixedParameters());
}
@@ -135,20 +128,20 @@
for (; position < values.length; position++) {
parameter = gathered.get(position);
- if (parameter == null && iterator.hasNext()) {
- parameter = iterator.next();
- }
+ if (parameter == null && iterator.hasNext())
+ parameter = iterator.next();
values[position] = parameter.getValue();
}
return values;
}
- /**
- * @inheritDoc
- *
- * @see Signature#clone()
- */
+ @Override
public Object clone() {
- return new Shortcut(super.mediator, super.name, super.returnedType, super.parameters, this.fixedParameters);
+ try {
+ return new Shortcut(super.mediator, super.name, super.returnedType, super.parameters, this.fixedParameters);
+ } catch (InvalidValueException e) {
+ super.mediator.error(e);
+ }
+ return null;
}
}
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/Signature.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/Signature.java
index 3f3b7af..a26f454 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/Signature.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/Signature.java
@@ -10,6 +10,7 @@
*/
package org.eclipse.sensinact.gateway.core.method;
+import java.util.Arrays;
import java.util.Iterator;
import org.json.JSONArray;
@@ -56,14 +57,15 @@
* the type of the associated {@link SnaObjectMethod}
* @param parameters
* this Signature {@link Parameter}s array
+ * @throws InvalidValueException
*/
- public Signature(Mediator mediator, String methodType, Parameter[] parameters) {
+ public Signature(Mediator mediator, String methodType, Parameter[] parameters) throws InvalidValueException {
this.mediator = mediator;
int length = parameters == null ? 0 : parameters.length;
this.parameters = new Parameter[length];
int index = 0;
for (; index < length; index++) {
- this.parameters[index] = parameters[index];
+ this.parameters[index] = (Parameter) parameters[index].clone();
}
this.name = methodType;
this.returnedType = AccessMethod.Type.valueOf(this.name).getReturnedType();
@@ -82,7 +84,7 @@
* @throws InvalidValueException
*/
public Signature(Mediator mediator, AccessMethod.Type type, Class<?>[] parameterTypes, String[] parameterNames)
- throws InvalidValueException {
+ throws InvalidValueException {
this.mediator = mediator;
String name = null;
int index = 0;
@@ -93,26 +95,28 @@
String[] names = parameterNames == null ? new String[0] : parameterNames;
for (; index < length; index++) {
- if (index < names.length) {
- name = names[index];
- }
- if (name == null) {
- name = new StringBuilder().append("arg").append(index).toString();
- }
+ if (index < names.length)
+ name = names[index];
+ if (name == null)
+ name = new StringBuilder().append("arg").append(index).toString();
this.parameters[index] = new Parameter(this.mediator, name, parameterTypes[index]);
-
name = null;
}
+
this.name = type.name();
this.returnedType = AccessMethod.Type.valueOf(this.name).getReturnedType();
}
protected Signature(Mediator mediator, String name, AccessMethodResponse.Response returnedType,
- Parameter[] parameters) {
+ Parameter[] parameters) throws InvalidValueException {
this.mediator = mediator;
this.name = name;
this.returnedType = returnedType;
- this.parameters = parameters.clone();
+ this.parameters = new Parameter[parameters.length];
+ int index = 0;
+ for (; index < parameters.length; index++) {
+ this.parameters[index] = (Parameter) parameters[index].clone();
+ }
}
/**
@@ -142,7 +146,6 @@
*/
public Class<?>[] getParameterTypes() {
int index = 0;
-
Class<?>[] parameterTypes = new Class<?>[this.length()];
for (; index < this.length(); index++) {
parameterTypes[index] = this.parameters[index].getType();
@@ -315,18 +318,21 @@
* {@link Set}; false otherwise
*/
public boolean validParameters(Object[] methodParameters) {
- int length = methodParameters == null ? 0 : methodParameters.length;
-
- if (this.parameters.length != length) {
- return false;
- }
- int index = 0;
- for (; index < length; index++) {
- this.parameters[index].reset();
-
- if (!this.parameters[index].validParameter(methodParameters[index])) {
+ try {
+ int length = methodParameters == null ? 0 : methodParameters.length;
+
+ if (this.parameters.length != length)
return false;
+
+ int index = 0;
+ for (; index < length; index++) {
+ this.parameters[index].reset();
+ if (!this.parameters[index].validParameter(methodParameters[index]))
+ return false;
}
+ }catch(Exception | Error e) {
+ e.printStackTrace();
+ return false;
}
return true;
}
@@ -369,11 +375,6 @@
return this.parameters.length;
}
- /**
- * @inheritDoc
- *
- * @see JSONable#getJSON()
- */
@Override
public String getJSON() {
return getJSONObjectDescription().toString();
@@ -399,23 +400,18 @@
return jsonObject;
}
- /**
- * @inheritDoc
- *
- * @see java.lang.Iterable#iterator()
- */
@Override
public Iterator<Parameter> iterator() {
return new ParameterIterator();
}
- /**
- * @inheritDoc
- *
- * @see java.lang.Object#clone()
- */
public Object clone() {
- return new Signature(this.mediator, this.name, this.returnedType, this.parameters);
+ try {
+ return new Signature(this.mediator, this.name, this.returnedType, this.parameters);
+ } catch (InvalidValueException e) {
+ mediator.error(e);
+ }
+ return null;
}
private final class ParameterIterator implements Iterator<Parameter> {
@@ -429,21 +425,11 @@
findNext();
}
- /**
- * @inheritDoc
- *
- * @see java.util.Iterator#hasNext()
- */
@Override
public boolean hasNext() {
return next != null;
}
- /**
- * @inheritDoc
- *
- * @see java.util.Iterator#next()
- */
@Override
public Parameter next() {
Parameter parameter = next;
@@ -451,19 +437,11 @@
return parameter;
}
- /**
- * @inheritDoc
- *
- * @see java.util.Iterator#remove()
- */
@Override
public void remove() {
// not implemented
}
- /**
- *
- */
private final void findNext() {
position += 1;
next = null;
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SubscribeMethod.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SubscribeMethod.java
similarity index 81%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SubscribeMethod.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SubscribeMethod.java
index df6b5d3..6d1cce6 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SubscribeMethod.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SubscribeMethod.java
@@ -8,12 +8,9 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.AbstractAccessMethod;
-import org.eclipse.sensinact.gateway.core.method.AccessMethod;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodExecutor;
import org.json.JSONObject;
/**
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SubscribeResponse.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SubscribeResponse.java
similarity index 88%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SubscribeResponse.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SubscribeResponse.java
index e43d887..96d3345 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SubscribeResponse.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SubscribeResponse.java
@@ -8,12 +8,10 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
import org.eclipse.sensinact.gateway.core.message.SnaErrorfulMessage;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodJSONResponse;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
import org.json.JSONObject;
/**
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SubscribeResponseBuilder.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SubscribeResponseBuilder.java
similarity index 87%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SubscribeResponseBuilder.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SubscribeResponseBuilder.java
index dae371b..4dfe2cb 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/SubscribeResponseBuilder.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/SubscribeResponseBuilder.java
@@ -8,11 +8,9 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponseBuilder;
import org.json.JSONObject;
/**
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/UnsubscribeMethod.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/UnsubscribeMethod.java
similarity index 82%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/UnsubscribeMethod.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/UnsubscribeMethod.java
index ec8d44b..77a8475 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/UnsubscribeMethod.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/UnsubscribeMethod.java
@@ -8,12 +8,9 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.AbstractAccessMethod;
-import org.eclipse.sensinact.gateway.core.method.AccessMethod;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodExecutor;
import org.json.JSONObject;
/**
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/UnsubscribeResponse.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/UnsubscribeResponse.java
similarity index 87%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/UnsubscribeResponse.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/UnsubscribeResponse.java
index 49511a3..76c19ea 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/UnsubscribeResponse.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/UnsubscribeResponse.java
@@ -8,12 +8,10 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
import org.eclipse.sensinact.gateway.core.message.SnaErrorfulMessage;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodJSONResponse;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
/**
* Extended {@link AccessMethodJSONResponse} returned by an
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/UnsubscribeResponseBuilder.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/UnsubscribeResponseBuilder.java
similarity index 87%
rename from platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/UnsubscribeResponseBuilder.java
rename to platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/UnsubscribeResponseBuilder.java
index e048a6f..2c81d0c 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/legacy/UnsubscribeResponseBuilder.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/method/UnsubscribeResponseBuilder.java
@@ -8,11 +8,9 @@
* Contributors:
* Kentyou - initial API and implementation
*/
-package org.eclipse.sensinact.gateway.core.method.legacy;
+package org.eclipse.sensinact.gateway.core.method;
import org.eclipse.sensinact.gateway.common.bundle.Mediator;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
-import org.eclipse.sensinact.gateway.core.method.AccessMethodResponseBuilder;
import org.json.JSONObject;
/**
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/remote/LocalEndpoint.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/remote/LocalEndpoint.java
index 9dfebcf..af216df 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/remote/LocalEndpoint.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/remote/LocalEndpoint.java
@@ -123,37 +123,27 @@
}
@Override
- public JSONObject get(String publicKey, String serviceProviderId, String serviceId, String resourceId,
- String attributeId) {
- return new JSONObject(
- this.getSession(publicKey).get(serviceProviderId, serviceId, resourceId, attributeId).getJSON());
+ public JSONObject get(String publicKey, String serviceProviderId, String serviceId, String resourceId,String attributeId) {
+ return new JSONObject(this.getSession(publicKey).get(serviceProviderId, serviceId, resourceId, attributeId).getJSON());
}
@Override
- public JSONObject set(String publicKey, String serviceProviderId, String serviceId, String resourceId,
- String attributeId, Object parameter) {
- return new JSONObject(this.getSession(publicKey)
- .set(serviceProviderId, serviceId, resourceId, attributeId, parameter).getJSON());
+ public JSONObject set(String publicKey, String serviceProviderId, String serviceId, String resourceId,String attributeId, Object parameter) {
+ return new JSONObject(this.getSession(publicKey).set(serviceProviderId, serviceId, resourceId, attributeId, parameter).getJSON());
}
@Override
- public JSONObject act(String publicKey, String serviceProviderId, String serviceId, String resourceId,
- Object[] parameters) {
- return new JSONObject(
- this.getSession(publicKey).act(serviceProviderId, serviceId, resourceId, parameters).getJSON());
+ public JSONObject act(String publicKey, String serviceProviderId, String serviceId, String resourceId,Object[] parameters) {
+ return new JSONObject(this.getSession(publicKey).act(serviceProviderId, serviceId, resourceId, parameters).getJSON());
}
@Override
- public JSONObject subscribe(String publicKey, String serviceProviderId, String serviceId, String resourceId,
- Recipient recipient, JSONArray conditions) {
- return new JSONObject(this.getSession(publicKey)
- .subscribe(serviceProviderId, serviceId, resourceId, recipient, conditions).getJSON());
+ public JSONObject subscribe(String publicKey, String serviceProviderId, String serviceId, String resourceId,Recipient recipient, JSONArray conditions) {
+ return new JSONObject(this.getSession(publicKey).subscribe(serviceProviderId, serviceId, resourceId, recipient, conditions).getJSON());
}
@Override
- public JSONObject unsubscribe(String publicKey, String serviceProviderId, String serviceId, String resourceId,
- String subscriptionId) {
- return new JSONObject(this.getSession(publicKey)
- .unsubscribe(serviceProviderId, serviceId, resourceId, subscriptionId).getJSON());
+ public JSONObject unsubscribe(String publicKey, String serviceProviderId, String serviceId, String resourceId,String subscriptionId) {
+ return new JSONObject(this.getSession(publicKey).unsubscribe(serviceProviderId, serviceId, resourceId, subscriptionId).getJSON());
}
}
\ No newline at end of file
diff --git a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/remote/RemoteSensiNact.java b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/remote/RemoteSensiNact.java
index b1ac053..7db61b5 100644
--- a/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/remote/RemoteSensiNact.java
+++ b/platform/sensinact-core/src/main/java/org/eclipse/sensinact/gateway/core/remote/RemoteSensiNact.java
@@ -32,7 +32,7 @@
import org.eclipse.sensinact.gateway.core.message.SnaMessage;
import org.eclipse.sensinact.gateway.core.message.SnaRemoteMessage;
import org.eclipse.sensinact.gateway.core.message.SnaRemoteMessageImpl;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
import org.eclipse.sensinact.gateway.util.UriUtils;
import org.json.JSONArray;
import org.json.JSONException;
diff --git a/platform/sensinact-core/src/test/java/org/eclipse/sensinact/gateway/core/test/TestResourceBuilder.java b/platform/sensinact-core/src/test/java/org/eclipse/sensinact/gateway/core/test/TestResourceBuilder.java
index b4f8cbe..13ae27a 100644
--- a/platform/sensinact-core/src/test/java/org/eclipse/sensinact/gateway/core/test/TestResourceBuilder.java
+++ b/platform/sensinact-core/src/test/java/org/eclipse/sensinact/gateway/core/test/TestResourceBuilder.java
@@ -21,12 +21,14 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import org.eclipse.sensinact.gateway.common.constraint.Changed;
import org.eclipse.sensinact.gateway.common.constraint.Constraint;
import org.eclipse.sensinact.gateway.common.constraint.MaxLength;
import org.eclipse.sensinact.gateway.common.constraint.MinLength;
+import org.eclipse.sensinact.gateway.common.execution.ErrorHandler;
import org.eclipse.sensinact.gateway.common.execution.Executable;
import org.eclipse.sensinact.gateway.common.primitive.InvalidValueException;
import org.eclipse.sensinact.gateway.common.primitive.Modifiable;
@@ -60,13 +62,13 @@
import org.eclipse.sensinact.gateway.core.method.AccessMethodExecutor;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponseBuilder;
+import org.eclipse.sensinact.gateway.core.method.GetResponse;
import org.eclipse.sensinact.gateway.core.method.LinkedActMethod;
import org.eclipse.sensinact.gateway.core.method.Parameter;
+import org.eclipse.sensinact.gateway.core.method.SetResponse;
import org.eclipse.sensinact.gateway.core.method.Shortcut;
import org.eclipse.sensinact.gateway.core.method.Signature;
-import org.eclipse.sensinact.gateway.core.method.legacy.GetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SetResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.SubscribeResponse;
+import org.eclipse.sensinact.gateway.core.method.SubscribeResponse;
import org.eclipse.sensinact.gateway.core.method.trigger.Constant;
import org.eclipse.sensinact.gateway.core.security.AccessProfileOption;
import org.eclipse.sensinact.gateway.core.security.AccessTree;
@@ -189,10 +191,7 @@
@Override
public Void execute(AccessMethodResponseBuilder result) throws Exception {
JSONObject jsonObject = (JSONObject) result.getAccessMethodObjectResult();
-
- jsonObject.put("value",
- new StringBuilder().append(jsonObject.get("value")).append("_suffix").toString());
-
+ jsonObject.put("value",new StringBuilder().append(jsonObject.get("value")).append("_suffix").toString());
result.setAccessMethodObjectResult(jsonObject);
return null;
}
@@ -236,19 +235,11 @@
}
}, null);
- JSONObject set1 = session.set("serviceProvider", "testService", "TestProperty2", null, "property3")
- .getResponse();
-
+ JSONObject set1 = session.set("serviceProvider", "testService", "TestProperty2", null, "property3").getResponse();
Thread.sleep(250);
-
- JSONObject set2 = session
- .set("serviceProvider", "testService", "TestProperty2", DataResource.VALUE, "property3").getResponse();
-
+ JSONObject set2 = session.set("serviceProvider", "testService", "TestProperty2", DataResource.VALUE, "property3").getResponse();
Assert.assertEquals(set1.get(DataResource.VALUE), set2.get(DataResource.VALUE));
-
- JSONObject set3 = session
- .set("serviceProvider", "testService", "TestProperty", DataResource.VALUE, "TEST LINKED SUBSCRIPTION")
- .getResponse();
+ JSONObject set3 = session.set("serviceProvider", "testService", "TestProperty", DataResource.VALUE, "TEST LINKED SUBSCRIPTION").getResponse();
Thread.sleep(250);
@@ -273,7 +264,7 @@
((MyModelInstance) this.testContext.getModelInstance()).getHandler().count(filter));
Service proxy = service.<Service>getProxy(this.tree);
- SetResponse error = proxy.set("location", "unknown");
+ SetResponse error = proxy.set("location", DataResource.VALUE, "unknown");
assertTrue(error.getStatusCode() == 403);
assertEquals(1, this.testContext.getLinkCallbackCount());
}
@@ -290,31 +281,25 @@
Assert.assertEquals("TestProperty", r1.getName());
Assert.assertEquals(Resource.Type.PROPERTY, r1.getType());
- String get1 = r1.get(DataResource.VALUE).getJSON();
+ String get1 = r1.get(DataResource.VALUE).getJSON();
String get2 = r1.get().getJSON();
-
+
JSONAssert.assertEquals(get1, get2, false);
SubscribeResponse res = r1.subscribe(new Recipient() {
@Override
public void callback(String callbackId, SnaMessage[] messages) throws Exception {
boolean hasChanged = ((TypedProperties<?>) messages[0]).<Boolean>get("hasChanged");
-
if (!hasChanged)
- ;
- {
TestResourceBuilder.this.testContext.extraCallbackInc();
- }
}
-
+
@Override
public String getJSON() {
return null;
}
- }, new HashSet<Constraint>() {
- {
+ }, new HashSet<Constraint>() {{
this.add(new Changed(Thread.currentThread().getContextClassLoader(), true));
- }
- });
+ }});
r1.set("hello");
Thread.sleep(500);
@@ -328,7 +313,7 @@
ResourceImpl r3impl = service.addLinkedResource("LinkedProperty", r1impl);
PropertyResource r3 = r3impl.<PropertyResource>getProxy(this.tree);
- service.addLinkedResource(LocationResource.LOCATION, this.testContext.getModelInstance().getRootElement()
+ ResourceImpl r4impl = service.addLinkedResource(LocationResource.LOCATION, this.testContext.getModelInstance().getRootElement()
.getAdminService().getResource(LocationResource.LOCATION));
// test linked resource
@@ -338,21 +323,16 @@
JSONAssert.assertEquals(((GetResponse) r1.get()).getResponse(), ((GetResponse) r3.get()).getResponse(), false);
- ResourceImpl r4impl = service.getResource("location");
-
r4impl.registerExecutor(AccessMethod.Type.valueOf(AccessMethod.GET), new Class<?>[0], new String[0],
- new AccessMethodExecutor() {
- @Override
- public Void execute(AccessMethodResponseBuilder result) throws Exception {
- JSONObject jsonObject = (JSONObject) result.getAccessMethodObjectResult();
-
- jsonObject.put("value",
- new StringBuilder().append(jsonObject.get("value")).append("_suffix").toString());
-
- result.setAccessMethodObjectResult(jsonObject);
- return null;
- }
- }, AccessMethodExecutor.ExecutionPolicy.AFTER);
+ new AccessMethodExecutor() {
+ @Override
+ public Void execute(AccessMethodResponseBuilder result) throws Exception {
+ JSONObject jsonObject = (JSONObject) result.getAccessMethodObjectResult();
+ jsonObject.put("value", new StringBuilder().append(jsonObject.get("value")).append("_suffix").toString());
+ result.setAccessMethodObjectResult(jsonObject);
+ return null;
+ }
+ }, AccessMethodExecutor.ExecutionPolicy.AFTER);
String attributeValue = (String) r4impl.getAttribute("value").getValue();
LocationResource r4 = r4impl.<LocationResource>getProxy(this.tree);
@@ -421,21 +401,19 @@
((MyModelInstance) this.testContext.getModelInstance()).getHandler().count(filter));
Service proxy = service.<Service>getProxy(this.tree);
- SetResponse error = proxy.set("location", "unknown");
+ SetResponse error = proxy.set("location", DataResource.VALUE, (Object)"unknown");
assertTrue(error.getStatusCode() == 403);
assertEquals(1, this.testContext.getLinkCallbackCount());
}
@Test
public void testAgent() throws Exception {
+
ServiceImpl service1 = this.testContext.getModelInstance().getRootElement().addService("testService");
-
ResourceImpl r1impl = service1.addDataResource(PropertyResource.class, "TestProperty", String.class, "hello");
-
ServiceImpl service2 = this.testContext.getModelInstance().getRootElement().addService("tostService");
-
ResourceImpl r2impl = service2.addDataResource(PropertyResource.class, "TestProperty", String.class, "hello");
-
+
// wait for the previously generated events to be consumed
Thread.sleep(1000);
SnaFilter filter = new SnaFilter(this.testContext.getMediator(), "/serviceProvider/(test).*", true, false);
@@ -453,12 +431,12 @@
PropertyResource r2 = r2impl.<PropertyResource>getProxy(this.tree);
assertEquals(0, TestResourceBuilder.this.testContext.getAgentCallbackCount());
- r2.set("goodbye");
+ System.out.println(r2.set("goodbye").getJSON());
Thread.sleep(250);
assertEquals(0, TestResourceBuilder.this.testContext.getAgentCallbackCount());
- r1.set("goodbye");
+ System.out.println(r1.set("goodbye").getJSON());
Thread.sleep(250);
assertEquals(1, TestResourceBuilder.this.testContext.getAgentCallbackCount());
diff --git a/platform/sensinact-generic/extra-src/test/java/org/eclipse/sensinact/gateway/generic/test/moke/Activator.java b/platform/sensinact-generic/extra-src/test/java/org/eclipse/sensinact/gateway/generic/test/moke/Activator.java
index 424e1a3..93ba887 100644
--- a/platform/sensinact-generic/extra-src/test/java/org/eclipse/sensinact/gateway/generic/test/moke/Activator.java
+++ b/platform/sensinact-generic/extra-src/test/java/org/eclipse/sensinact/gateway/generic/test/moke/Activator.java
@@ -59,7 +59,6 @@
).withStartAtInitializationTime(startAtInitializationTime
).build("resources.xml", defaults);
-
this.endpoint = new MokeStack(mediator);
this.endpoint.connect(this.manager);
diff --git a/platform/sensinact-generic/src/main/java/org/eclipse/sensinact/gateway/generic/ExtServiceImpl.java b/platform/sensinact-generic/src/main/java/org/eclipse/sensinact/gateway/generic/ExtServiceImpl.java
index b2fdb8a..3a849c5 100644
--- a/platform/sensinact-generic/src/main/java/org/eclipse/sensinact/gateway/generic/ExtServiceImpl.java
+++ b/platform/sensinact-generic/src/main/java/org/eclipse/sensinact/gateway/generic/ExtServiceImpl.java
@@ -99,7 +99,7 @@
return;
}
int index = 0;
- int length = references == null ? 0 : references.size();
+ int length = references == null ?0:references.size();
AccessMethodTriggerFactory.Loader loader = AccessMethodTriggerFactory.LOADER.get();
try {
for (; index < length; index++) {
diff --git a/platform/sensinact-generic/src/main/java/org/eclipse/sensinact/gateway/generic/parser/ParameterDefinition.java b/platform/sensinact-generic/src/main/java/org/eclipse/sensinact/gateway/generic/parser/ParameterDefinition.java
index 96f6c93..6e0fc33 100644
--- a/platform/sensinact-generic/src/main/java/org/eclipse/sensinact/gateway/generic/parser/ParameterDefinition.java
+++ b/platform/sensinact-generic/src/main/java/org/eclipse/sensinact/gateway/generic/parser/ParameterDefinition.java
@@ -25,9 +25,11 @@
import org.json.JSONObject;
import org.xml.sax.Attributes;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
+import java.util.List;
import java.util.Set;
/**
@@ -102,7 +104,7 @@
}
Object fixedValue = null;
Iterator<ConstraintDefinition> iterator = this.constraintDefinitions.iterator();
- Set<Constraint> constraints = new HashSet<Constraint>();
+ List<Constraint> constraints = new ArrayList<Constraint>();
while (iterator.hasNext()) {
try {
@@ -120,10 +122,10 @@
}
}
if (fixedValue == null) {
- parameter = new Parameter(super.mediator, super.getName(), super.getType(), (Set<Constraint>) constraints);
+ parameter = new Parameter(super.mediator, super.getName(), super.getType(), constraints);
} else {
parameter = new Parameter(super.mediator, super.getName(), super.getType(), fixedValue);
- }
+ }
} catch (Exception e) {
e.printStackTrace();
}
diff --git a/platform/sensinact-generic/src/main/java/org/eclipse/sensinact/gateway/generic/parser/SignatureDefinition.java b/platform/sensinact-generic/src/main/java/org/eclipse/sensinact/gateway/generic/parser/SignatureDefinition.java
index d3e45e1..de72d30 100644
--- a/platform/sensinact-generic/src/main/java/org/eclipse/sensinact/gateway/generic/parser/SignatureDefinition.java
+++ b/platform/sensinact-generic/src/main/java/org/eclipse/sensinact/gateway/generic/parser/SignatureDefinition.java
@@ -11,6 +11,7 @@
package org.eclipse.sensinact.gateway.generic.parser;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
@@ -85,6 +86,7 @@
* @throws InvalidValueException
*/
public Signature getSignature(Mediator mediator, ResourceImpl resource, ServiceImpl service) throws InvalidValueException {
+
Map<Integer, Parameter> fixedParameters = new HashMap<Integer, Parameter>();
List<Parameter> parameters = new ArrayList<Parameter>();
@@ -97,11 +99,11 @@
while (parameterIterator.hasNext()) {
ParameterDefinition parameterDefinition = parameterIterator.next();
Parameter parameter = parameterDefinition.getParameter(resource, service);
- if (Modifiable.FIXED.equals(parameter.getModifiable())) {
+
+ if (Modifiable.FIXED.equals(parameter.getModifiable()))
fixedParameters.put(position, parameter);
- } else {
+ else
parameters.add(parameter);
- }
position++;
}
Parameter[] parametersArray = parameters.toArray(new Parameter[parameters.size()]);
@@ -131,11 +133,7 @@
}
return count;
}
-
- /**
- * @inheritDoc
- * @see java.lang.Comparable#compareTo(java.lang.Object)
- */
+
@Override
public int compareTo(SignatureDefinition definition) {
int compare = new Integer(this.size()).compareTo(definition.size());
diff --git a/platform/sensinact-generic/src/test/java/org/eclipse/sensinact/gateway/generic/test/TestGenericImplementation.java b/platform/sensinact-generic/src/test/java/org/eclipse/sensinact/gateway/generic/test/TestGenericImplementation.java
index 2bc8c24..8e88c1c 100644
--- a/platform/sensinact-generic/src/test/java/org/eclipse/sensinact/gateway/generic/test/TestGenericImplementation.java
+++ b/platform/sensinact-generic/src/test/java/org/eclipse/sensinact/gateway/generic/test/TestGenericImplementation.java
@@ -20,7 +20,7 @@
import org.eclipse.sensinact.gateway.core.ServiceProvider;
import org.eclipse.sensinact.gateway.core.Session;
import org.eclipse.sensinact.gateway.core.message.SnaMessage;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
import org.eclipse.sensinact.gateway.test.MidOSGiTest;
import org.eclipse.sensinact.gateway.test.MidProxy;
import org.eclipse.sensinact.gateway.test.ProcessorService;
@@ -65,8 +65,8 @@
getResources = Session.class.getDeclaredMethod("getResources", new Class<?>[] {String.class, String.class});
getJSON = DescribeResponse.class.getDeclaredMethod("getJSON");
getDescription = Describable.class.getDeclaredMethod("getDescription");
- getMethod = Resource.class.getDeclaredMethod("get", new Class<?>[]{String.class});
- setMethod = Resource.class.getDeclaredMethod("set", new Class<?>[]{String.class, Object.class});
+ getMethod = Resource.class.getDeclaredMethod("get", new Class<?>[]{String.class, Object[].class});
+ setMethod = Resource.class.getDeclaredMethod("set", new Class<?>[]{String.class, Object.class, Object[].class});
actMethod = ActionResource.class.getDeclaredMethod("act", new Class<?>[]{Object[].class});
}
@@ -102,7 +102,7 @@
MidProxy midVariable = (MidProxy) Proxy.getInvocationHandler(variable);
MidProxy midVariation = (MidProxy) Proxy.getInvocationHandler(variation);
- SnaMessage response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ SnaMessage response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
JSONObject jsonObject = new JSONObject(response.getJSON());
assertEquals(1, (int) jsonObject.getJSONObject("response").getInt("value"));
@@ -114,7 +114,7 @@
ActionResource action = actionProxy.buildProxy(midAction.getInstance());
actionProxy.toOSGi(actMethod, new Object[]{new Object[0]});
- response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
assertEquals(1, (int) jsonObject.getJSONObject("response").getInt("value"));
resource = service.getResource("turnoff");
@@ -123,11 +123,11 @@
action = actionProxy.buildProxy(midAction.getInstance());
actionProxy.toOSGi(actMethod, new Object[]{new Object[0]});
- response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
jsonObject = new JSONObject(response.getJSON());
assertEquals(0, (int) jsonObject.getJSONObject("response").getInt("value"));
- response = (SnaMessage) midVariation.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ response = (SnaMessage) midVariation.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
jsonObject = new JSONObject(response.getJSON());
@@ -153,14 +153,14 @@
Resource temperature = service.getResource("temperature");
JSONObject jsonObject;
MidProxy midTemperature = (MidProxy) Proxy.getInvocationHandler(temperature);
- SnaMessage response = (SnaMessage) midTemperature.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ SnaMessage response = (SnaMessage) midTemperature.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
jsonObject = new JSONObject(response.getJSON());
assertEquals(5.0f, (float) jsonObject.getJSONObject("response").getDouble("value"), 0.0f);
- response = (SnaMessage) midTemperature.toOSGi(setMethod, new Object[]{DataResource.VALUE, -24.5f});
+ response = (SnaMessage) midTemperature.toOSGi(setMethod, new Object[]{DataResource.VALUE, -24.5f, null});
jsonObject = new JSONObject(response.getJSON());
assertEquals(-24.5f, (float) jsonObject.getJSONObject("response").getDouble("value"), 0.0f);
- response = (SnaMessage) midTemperature.toOSGi(setMethod, new Object[]{DataResource.VALUE, 45.1f});
+ response = (SnaMessage) midTemperature.toOSGi(setMethod, new Object[]{DataResource.VALUE, 45.1f, null});
jsonObject = new JSONObject(response.getJSON());
assertEquals(520, (int) jsonObject.getInt("statusCode"));
core.close();
@@ -305,7 +305,7 @@
MidProxy midAdmin = (MidProxy) Proxy.getInvocationHandler(service);
Description response = (Description) midAdmin.toOSGi(getDescription, null);
MidProxy midResource = (MidProxy) Proxy.getInvocationHandler(resource);
- SnaMessage message = (SnaMessage) midResource.toOSGi(setMethod, new Object[]{"value", "45.5667:5.9333"});
+ SnaMessage message = (SnaMessage) midResource.toOSGi(setMethod, new Object[]{"value", "45.5667:5.9333", null});
JSONObject jsonObject = new JSONObject(message.getJSON());
jsonObject.getJSONObject("response").remove("timestamp");
@@ -315,7 +315,7 @@
ProcessorService processorService = processor.buildProxy();
processorService.process("weather_7,null,admin,location,45.900002:6.11667");
- message = (SnaMessage) midResource.toOSGi(getMethod, new Object[]{"value"});
+ message = (SnaMessage) midResource.toOSGi(getMethod, new Object[]{"value", null});
jsonObject = new JSONObject(message.getJSON());
jsonObject.getJSONObject("response").remove("timestamp");
diff --git a/platform/sensinact-shell/src/main/java/org/eclipse/sensinact/gateway/commands/gogo/internal/shell/ShellAccess.java b/platform/sensinact-shell/src/main/java/org/eclipse/sensinact/gateway/commands/gogo/internal/shell/ShellAccess.java
index 750f5fb..2ac2cc2 100644
--- a/platform/sensinact-shell/src/main/java/org/eclipse/sensinact/gateway/commands/gogo/internal/shell/ShellAccess.java
+++ b/platform/sensinact-shell/src/main/java/org/eclipse/sensinact/gateway/commands/gogo/internal/shell/ShellAccess.java
@@ -12,7 +12,7 @@
import org.eclipse.sensinact.gateway.commands.gogo.osgi.CommandServiceMediator;
import org.eclipse.sensinact.gateway.core.method.AccessMethodResponse;
-import org.eclipse.sensinact.gateway.core.method.legacy.DescribeResponse;
+import org.eclipse.sensinact.gateway.core.method.DescribeResponse;
import org.eclipse.sensinact.gateway.core.security.InvalidCredentialException;
import org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundAccess;
import org.eclipse.sensinact.gateway.nthbnd.endpoint.NorthboundEndpoint;
diff --git a/platform/southbound/http/http-device/src/test/java/org/eclipse/sensinact/gateway/sthbnd/http/test/TestHttpDevice.java b/platform/southbound/http/http-device/src/test/java/org/eclipse/sensinact/gateway/sthbnd/http/test/TestHttpDevice.java
index 7b27f7c..572148f 100644
--- a/platform/southbound/http/http-device/src/test/java/org/eclipse/sensinact/gateway/sthbnd/http/test/TestHttpDevice.java
+++ b/platform/southbound/http/http-device/src/test/java/org/eclipse/sensinact/gateway/sthbnd/http/test/TestHttpDevice.java
@@ -135,8 +135,8 @@
public TestHttpDevice() throws Exception {
super();
getDescription = Describable.class.getDeclaredMethod("getDescription");
- getMethod = Resource.class.getDeclaredMethod("get", new Class<?>[]{String.class});
- setMethod = Resource.class.getDeclaredMethod("set", new Class<?>[]{String.class, Object.class});
+ getMethod = Resource.class.getDeclaredMethod("get", new Class<?>[]{String.class, Object[].class});
+ setMethod = Resource.class.getDeclaredMethod("set", new Class<?>[]{String.class, Object.class, Object[].class});
actMethod = ActionResource.class.getDeclaredMethod("act", new Class<?>[]{Object[].class});
}
@@ -167,16 +167,16 @@
Resource variable = service.getResource("temperature");
MidProxy midVariable = (MidProxy) Proxy.getInvocationHandler(variable);
- SnaMessage response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ SnaMessage response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
JSONObject jsonObject = new JSONObject(response.getJSON());
assertEquals(24, (int) jsonObject.getJSONObject("response").getInt("value"));
- response = (SnaMessage) midVariable.toOSGi(setMethod, new Object[]{DataResource.VALUE, 25});
+ response = (SnaMessage) midVariable.toOSGi(setMethod, new Object[]{DataResource.VALUE, 25, null});
jsonObject = new JSONObject(response.getJSON());
assertEquals(25, (int) jsonObject.getJSONObject("response").getInt("value"));
- response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
jsonObject = new JSONObject(response.getJSON());
assertEquals(25, (int) jsonObject.getJSONObject("response").getInt("value"));
@@ -199,15 +199,15 @@
Resource variable = service.getResource("temperature");
MidProxy midVariable = (MidProxy) Proxy.getInvocationHandler(variable);
- SnaMessage response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ SnaMessage response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
JSONObject jsonObject = new JSONObject(response.getJSON());
assertEquals(24, (int) jsonObject.getJSONObject("response").getInt("value"));
- response = (SnaMessage) midVariable.toOSGi(setMethod, new Object[]{DataResource.VALUE, 25});
+ response = (SnaMessage) midVariable.toOSGi(setMethod, new Object[]{DataResource.VALUE, 25, null});
jsonObject = new JSONObject(response.getJSON());
assertEquals(25, (int) jsonObject.getJSONObject("response").getInt("value"));
- response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
jsonObject = new JSONObject(response.getJSON());
assertEquals(25, (int) jsonObject.getJSONObject("response").getInt("value"));
@@ -230,15 +230,15 @@
Resource variable = service.getResource("temperature");
MidProxy midVariable = (MidProxy) Proxy.getInvocationHandler(variable);
- SnaMessage response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ SnaMessage response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
JSONObject jsonObject = new JSONObject(response.getJSON());
assertEquals(24, (int) jsonObject.getJSONObject("response").getInt("value"));
- response = (SnaMessage) midVariable.toOSGi(setMethod, new Object[]{DataResource.VALUE, 25});
+ response = (SnaMessage) midVariable.toOSGi(setMethod, new Object[]{DataResource.VALUE, 25, null});
jsonObject = new JSONObject(response.getJSON());
assertEquals(25, (int) jsonObject.getJSONObject("response").getInt("value"));
- response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
jsonObject = new JSONObject(response.getJSON());
assertEquals(25, (int) jsonObject.getJSONObject("response").getInt("value"));
@@ -260,7 +260,7 @@
Resource variable = service.getResource("temperature");
MidProxy midVariable = (MidProxy) Proxy.getInvocationHandler(variable);
- SnaMessage response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ SnaMessage response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
JSONObject jsonObject = new JSONObject(response.getJSON());
assertEquals(24, (int) jsonObject.getJSONObject("response").getInt("value"));
@@ -280,27 +280,27 @@
Service service = provider.getService("service1");
Resource variable = service.getResource("temperature");
MidProxy midVariable = (MidProxy) Proxy.getInvocationHandler(variable);
- SnaMessage response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ SnaMessage response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
JSONObject jsonObject = new JSONObject(response.getJSON());
assertEquals(24, (int) jsonObject.getJSONObject("response").getInt("value"));
callback.setRemoteEntity(new JSONObject().put("serviceProviderId", "TestForSensiNactGateway2").put("serviceId", "service1").put("resourceId", "temperature").put("data", 25));
Thread.sleep(2000);
- response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
jsonObject = new JSONObject(response.getJSON());
System.out.println(jsonObject);
assertEquals(25, (int) jsonObject.getJSONObject("response").getInt("value"));
callback.setRemoteEntity(new JSONObject().put("serviceProviderId", "TestForSensiNactGateway2").put("serviceId", "service1").put("resourceId", "temperature").put("data", 32));
Thread.sleep(2000);
- response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
jsonObject = new JSONObject(response.getJSON());
assertEquals(32, (int) jsonObject.getJSONObject("response").getInt("value"));
Thread.sleep(16 * 1000);
callback.setRemoteEntity(new JSONObject().put("serviceProviderId", "TestForSensiNactGateway2").put("serviceId", "service1").put("resourceId", "temperature").put("data", 45));
Thread.sleep(2000);
- response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE});
+ response = (SnaMessage) midVariable.toOSGi(getMethod, new Object[]{DataResource.VALUE, null});
jsonObject = new JSONObject(response.getJSON());
assertEquals(32, (int) jsonObject.getJSONObject("response").getInt("value"));