Skip to content

Commit e689103

Browse files
author
Aaron
committed
1.3.0
* SDK Refactor
1 parent 39a0a25 commit e689103

File tree

7 files changed

+603
-591
lines changed

7 files changed

+603
-591
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ repositories {
2222

2323
dependencies {
2424
//api 'org.iot-dsa:dslink-v2-websocket:+' //for a locally installed sdk
25-
api 'com.github.iot-dsa-v2.sdk-dslink-java-v2:dslink-v2-websocket:0.67.0'
25+
api 'com.github.iot-dsa-v2.sdk-dslink-java-v2:dslink-v2-websocket:0.69.0'
2626
api 'com.squareup.okhttp3:okhttp:3.14.0'
2727
api 'com.squareup.okhttp3:okhttp-urlconnection:3.8.1'
2828
implementation 'commons-logging:commons-logging:+'

dslink.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dslink-java-v2-restadapter",
3-
"version": "1.2.2",
3+
"version": "1.3.0",
44
"description": "Java DSA to REST adapter DSLink",
55
"main": "bin/dslink-java-v2-restadapter",
66
"configs": {
Lines changed: 174 additions & 165 deletions
Original file line numberDiff line numberDiff line change
@@ -1,166 +1,175 @@
1-
package org.iot.dsa.dslink.restadapter;
2-
3-
import org.iot.dsa.dslink.restadapter.Util.AUTH_SCHEME;
4-
import org.iot.dsa.node.*;
5-
import org.iot.dsa.node.DSMap.Entry;
6-
import org.iot.dsa.node.action.ActionInvocation;
7-
import org.iot.dsa.node.action.ActionResult;
8-
import org.iot.dsa.node.action.DSAction;
9-
10-
public class ConnectionNode extends DSNode implements CredentialProvider {
11-
12-
private DSMap parameters;
13-
private WebClientProxy clientProxy;
14-
15-
public ConnectionNode() {
16-
17-
}
18-
19-
ConnectionNode(DSMap parameters) {
20-
this.parameters = parameters;
21-
}
22-
23-
@Override
24-
protected void declareDefaults() {
25-
super.declareDefaults();
26-
declareDefault(Constants.ACT_REMOVE, makeRemoveAction());
27-
declareDefault(Constants.ACT_ADD_RULE, makeAddRuleAction());
28-
declareDefault(Constants.ACT_ADD_RULE_TABLE, makeAddRuleTableAction());
29-
}
30-
31-
@Override
32-
protected void onStarted() {
33-
super.onStarted();
34-
if (this.parameters == null) {
35-
DSIObject o = get(Constants.PARAMS);
36-
if (o instanceof DSMap) {
37-
this.parameters = (DSMap) o;
38-
}
39-
} else {
40-
put(Constants.PARAMS, parameters.copy()).setPrivate(true);
41-
}
42-
}
43-
44-
@Override
45-
protected void onStable() {
46-
super.onStable();
47-
clientProxy = new WebClientProxy(this);
48-
put(Constants.ACT_EDIT, makeEditAction()).setTransient(true);
49-
}
50-
51-
private DSAction makeAddRuleAction() {
52-
DSAction act = new DSAction.Parameterless() {
53-
@Override
54-
public ActionResult invoke(DSInfo target, ActionInvocation invocation) {
55-
((ConnectionNode) target.get()).addRule(invocation.getParameters());
56-
return null;
57-
}
58-
};
59-
act.addParameter(Constants.NAME, DSValueType.STRING, null);
60-
act.addParameter(Constants.SUB_PATH, DSValueType.STRING, null);
61-
act.addParameter(Constants.REST_URL, DSValueType.STRING, null);
62-
act.addDefaultParameter(Constants.REST_METHOD, DSString.valueOf("POST"), null);
63-
act.addDefaultParameter(Constants.URL_PARAMETERS, new DSMap(), null);
64-
act.addParameter(Constants.REQUEST_BODY, DSValueType.STRING, null);
65-
act.addParameter(Constants.MIN_REFRESH_RATE, DSValueType.NUMBER, "Optional, ensures at least this many seconds between updates");
66-
act.addParameter(Constants.MAX_REFRESH_RATE, DSValueType.NUMBER, "Optional, ensures an update gets sent every this many seconds");
67-
return act;
68-
}
69-
70-
71-
private void addRule(DSMap parameters) {
72-
String name = parameters.getString(Constants.NAME);
73-
put(name, new RuleNode(parameters));
74-
}
75-
76-
private DSAction makeAddRuleTableAction() {
77-
DSAction act = new DSAction.Parameterless() {
78-
@Override
79-
public ActionResult invoke(DSInfo target, ActionInvocation invocation) {
80-
((ConnectionNode) target.get()).addRuleTable(invocation.getParameters());
81-
return null;
82-
}
83-
};
84-
act.addParameter(Constants.NAME, DSValueType.STRING, null);
85-
act.addDefaultParameter(Constants.RULE_TABLE, new DSList(), null);
86-
return act;
87-
}
88-
89-
private void addRuleTable(DSMap parameters) {
90-
String name = parameters.getString(Constants.NAME);
91-
DSList table = parameters.getList(Constants.RULE_TABLE);
92-
put(name, new RuleTableNode(table));
93-
}
94-
95-
private DSAction makeRemoveAction() {
96-
return new DSAction.Parameterless() {
97-
@Override
98-
public ActionResult invoke(DSInfo target, ActionInvocation invocation) {
99-
((ConnectionNode) target.get()).delete();
100-
return null;
101-
}
102-
};
103-
}
104-
105-
private void delete() {
106-
getParent().remove(getInfo());
107-
}
108-
109-
private DSIObject makeEditAction() {
110-
DSAction act = new DSAction.Parameterless() {
111-
@Override
112-
public ActionResult invoke(DSInfo target, ActionInvocation invocation) {
113-
((ConnectionNode) target.get()).edit(invocation.getParameters());
114-
return null;
115-
}
116-
};
117-
AUTH_SCHEME scheme = getAuthScheme();
118-
if (!Util.AUTH_SCHEME.OAUTH2_CLIENT.equals(scheme)) {
119-
act.addDefaultParameter(Constants.USERNAME, DSString.valueOf(getUsername()), null);
120-
act.addDefaultParameter(Constants.PASSWORD, DSString.valueOf(getPassword()), null).setEditor("password");
121-
}
122-
if (Util.AUTH_SCHEME.OAUTH2_CLIENT.equals(scheme) || Util.AUTH_SCHEME.OAUTH2_USR_PASS.equals(scheme)) {
123-
act.addDefaultParameter(Constants.CLIENT_ID, DSString.valueOf(getClientId()), null);
124-
act.addDefaultParameter(Constants.CLIENT_SECRET, DSString.valueOf(getClientSecret()), null).setEditor("password");
125-
act.addDefaultParameter(Constants.TOKEN_URL, DSString.valueOf(getTokenURL()), null);
126-
}
127-
return act;
128-
}
129-
130-
private void edit(DSMap parameters) {
131-
for (Entry entry : parameters) {
132-
this.parameters.put(entry.getKey(), entry.getValue().copy());
133-
}
134-
put(Constants.PARAMS, parameters.copy());
135-
onStable();
136-
}
137-
138-
public String getUsername() {
139-
return parameters.getString(Constants.USERNAME);
140-
}
141-
142-
public String getPassword() {
143-
return parameters.getString(Constants.PASSWORD);
144-
}
145-
146-
public String getClientId() {
147-
return parameters.getString(Constants.CLIENT_ID);
148-
}
149-
150-
public String getClientSecret() {
151-
return parameters.getString(Constants.CLIENT_SECRET);
152-
}
153-
154-
public String getTokenURL() {
155-
return parameters.getString(Constants.TOKEN_URL);
156-
}
157-
158-
public AUTH_SCHEME getAuthScheme() {
159-
return AUTH_SCHEME.valueOf(parameters.getString(Constants.CONNTYPE));
160-
}
161-
162-
public WebClientProxy getWebClientProxy() {
163-
return clientProxy;
164-
}
165-
1+
package org.iot.dsa.dslink.restadapter;
2+
3+
import org.iot.dsa.dslink.ActionResults;
4+
import org.iot.dsa.dslink.restadapter.Util.AUTH_SCHEME;
5+
import org.iot.dsa.node.DSIObject;
6+
import org.iot.dsa.node.DSList;
7+
import org.iot.dsa.node.DSLong;
8+
import org.iot.dsa.node.DSMap;
9+
import org.iot.dsa.node.DSMap.Entry;
10+
import org.iot.dsa.node.DSNode;
11+
import org.iot.dsa.node.DSString;
12+
import org.iot.dsa.node.action.DSAction;
13+
import org.iot.dsa.node.action.DSIActionRequest;
14+
15+
public class ConnectionNode extends DSNode implements CredentialProvider {
16+
17+
private WebClientProxy clientProxy;
18+
private DSMap parameters;
19+
20+
public ConnectionNode() {
21+
22+
}
23+
24+
ConnectionNode(DSMap parameters) {
25+
this.parameters = parameters;
26+
}
27+
28+
public AUTH_SCHEME getAuthScheme() {
29+
return AUTH_SCHEME.valueOf(parameters.getString(Constants.CONNTYPE));
30+
}
31+
32+
public String getClientId() {
33+
return parameters.getString(Constants.CLIENT_ID);
34+
}
35+
36+
public String getClientSecret() {
37+
return parameters.getString(Constants.CLIENT_SECRET);
38+
}
39+
40+
public String getPassword() {
41+
return parameters.getString(Constants.PASSWORD);
42+
}
43+
44+
public String getTokenURL() {
45+
return parameters.getString(Constants.TOKEN_URL);
46+
}
47+
48+
public String getUsername() {
49+
return parameters.getString(Constants.USERNAME);
50+
}
51+
52+
public WebClientProxy getWebClientProxy() {
53+
return clientProxy;
54+
}
55+
56+
@Override
57+
protected void declareDefaults() {
58+
super.declareDefaults();
59+
declareDefault(Constants.ACT_REMOVE, makeRemoveAction());
60+
declareDefault(Constants.ACT_ADD_RULE, makeAddRuleAction());
61+
declareDefault(Constants.ACT_ADD_RULE_TABLE, makeAddRuleTableAction());
62+
}
63+
64+
@Override
65+
protected void onStable() {
66+
super.onStable();
67+
clientProxy = new WebClientProxy(this);
68+
put(Constants.ACT_EDIT, makeEditAction()).setTransient(true);
69+
}
70+
71+
@Override
72+
protected void onStarted() {
73+
super.onStarted();
74+
if (this.parameters == null) {
75+
DSIObject o = get(Constants.PARAMS);
76+
if (o instanceof DSMap) {
77+
this.parameters = (DSMap) o;
78+
}
79+
} else {
80+
put(Constants.PARAMS, parameters.copy()).setPrivate(true);
81+
}
82+
}
83+
84+
private void addRule(DSMap parameters) {
85+
String name = parameters.getString(Constants.NAME);
86+
put(name, new RuleNode(parameters));
87+
}
88+
89+
private void addRuleTable(DSMap parameters) {
90+
String name = parameters.getString(Constants.NAME);
91+
DSList table = parameters.getList(Constants.RULE_TABLE);
92+
put(name, new RuleTableNode(table));
93+
}
94+
95+
private void delete() {
96+
getParent().remove(getInfo());
97+
}
98+
99+
private void edit(DSMap parameters) {
100+
for (Entry entry : parameters) {
101+
this.parameters.put(entry.getKey(), entry.getValue().copy());
102+
}
103+
put(Constants.PARAMS, parameters.copy());
104+
onStable();
105+
}
106+
107+
private DSAction makeAddRuleAction() {
108+
DSAction act = new DSAction() {
109+
@Override
110+
public ActionResults invoke(DSIActionRequest req) {
111+
((ConnectionNode) req.getTarget()).addRule(req.getParameters());
112+
return null;
113+
}
114+
};
115+
act.addParameter(Constants.NAME, DSString.NULL, null);
116+
act.addParameter(Constants.SUB_PATH, DSString.NULL, null);
117+
act.addParameter(Constants.REST_URL, DSString.NULL, null);
118+
act.addDefaultParameter(Constants.REST_METHOD, DSString.valueOf("POST"), null);
119+
act.addDefaultParameter(Constants.URL_PARAMETERS, new DSMap(), null);
120+
act.addParameter(Constants.REQUEST_BODY, DSString.NULL, null);
121+
act.addParameter(Constants.MIN_REFRESH_RATE, DSLong.NULL,
122+
"Optional, ensures at least this many seconds between updates");
123+
act.addParameter(Constants.MAX_REFRESH_RATE, DSLong.NULL,
124+
"Optional, ensures an update gets sent every this many seconds");
125+
return act;
126+
}
127+
128+
private DSAction makeAddRuleTableAction() {
129+
DSAction act = new DSAction() {
130+
@Override
131+
public ActionResults invoke(DSIActionRequest req) {
132+
((ConnectionNode) req.getTarget()).addRuleTable(req.getParameters());
133+
return null;
134+
}
135+
};
136+
act.addParameter(Constants.NAME, DSString.NULL, null);
137+
act.addDefaultParameter(Constants.RULE_TABLE, new DSList(), null);
138+
return act;
139+
}
140+
141+
private DSIObject makeEditAction() {
142+
DSAction act = new DSAction() {
143+
@Override
144+
public ActionResults invoke(DSIActionRequest req) {
145+
((ConnectionNode) req.getTarget()).edit(req.getParameters());
146+
return null;
147+
}
148+
};
149+
AUTH_SCHEME scheme = getAuthScheme();
150+
if (!Util.AUTH_SCHEME.OAUTH2_CLIENT.equals(scheme)) {
151+
act.addDefaultParameter(Constants.USERNAME, DSString.valueOf(getUsername()), null);
152+
act.addDefaultParameter(Constants.PASSWORD, DSString.valueOf(getPassword()), null)
153+
.setEditor("password");
154+
}
155+
if (Util.AUTH_SCHEME.OAUTH2_CLIENT.equals(scheme) || Util.AUTH_SCHEME.OAUTH2_USR_PASS
156+
.equals(scheme)) {
157+
act.addDefaultParameter(Constants.CLIENT_ID, DSString.valueOf(getClientId()), null);
158+
act.addDefaultParameter(Constants.CLIENT_SECRET, DSString.valueOf(getClientSecret()),
159+
null).setEditor("password");
160+
act.addDefaultParameter(Constants.TOKEN_URL, DSString.valueOf(getTokenURL()), null);
161+
}
162+
return act;
163+
}
164+
165+
private DSAction makeRemoveAction() {
166+
return new DSAction() {
167+
@Override
168+
public ActionResults invoke(DSIActionRequest req) {
169+
((ConnectionNode) req.getTarget()).delete();
170+
return null;
171+
}
172+
};
173+
}
174+
166175
}

0 commit comments

Comments
 (0)