public class ResourceFind extends Resource {
IRequestChannel mASServer = null;
+ IRequestChannel mRDServer = null;
private Cbor<HashMap<String, Object>> mCbor = new Cbor<>();
public ResourceFind() {
super(Arrays.asList(Constants.PREFIX_OIC, Constants.WELL_KNOWN_URI));
mASServer = ConnectorPool.getConnection("account");
+ mRDServer = ConnectorPool.getConnection("rd");
}
class AccountReceiveHandler implements IResponseEventHandler {
- IRequestChannel mRDServer = null;
private Device mSrcDevice;
private IRequest mRequest;
public AccountReceiveHandler(IRequest request, Device srcDevice) {
- mRDServer = ConnectorPool.getConnection("rd");
+
mSrcDevice = srcDevice;
mRequest = request;
}
}
} else {
String additionalQuery = makeAdditionalQuery(
- payloadData, mSrcDevice.getDeviceId());
-
+ payloadData);
+ if (additionalQuery == null) {
+ mSrcDevice.sendResponse(
+ MessageBuilder.createResponse(mRequest,
+ ResponseStatus.BAD_REQUEST));
+ return;
+ }
mRequest = MessageBuilder.modifyRequest(mRequest, null,
(mRequest.getUriQuery() != null
? mRequest.getUriQuery() : "")
}
}
- private String makeAdditionalQuery(HashMap<String, Object> payloadData,
- String did) {
+ private String makeAdditionalQuery(
+ HashMap<String, Object> payloadData) {
StringBuilder additionalQuery = new StringBuilder();
@Override
public void onDefaultRequestReceived(Device srcDevice, IRequest request)
throws ServerException {
- StringBuffer uriQuery = new StringBuffer();
- uriQuery.append(Constants.REQ_MEMBER_ID + "=" + srcDevice.getUserId());
-
- StringBuffer uriPath = new StringBuffer();
- uriPath.append(Constants.PREFIX_OIC + "/");
- uriPath.append(Constants.ACL_URI + "/");
- uriPath.append(Constants.GROUP_URI + "/");
- uriPath.append(srcDevice.getUserId());
-
- IRequest requestToAS = MessageBuilder.createRequest(RequestMethod.GET,
- uriPath.toString(), uriQuery.toString());
-
- mASServer.sendRequest(requestToAS,
- new AccountReceiveHandler(request, srcDevice));
+ if (request.getUriQuery() != null && request.getUriQueryMap()
+ .containsKey(Constants.REQ_DEVICE_ID)) {
+
+ mRDServer.sendRequest(request, srcDevice);
+ } else {
+ StringBuffer uriQuery = new StringBuffer();
+ uriQuery.append(
+ Constants.REQ_MEMBER_ID + "=" + srcDevice.getUserId());
+
+ StringBuffer uriPath = new StringBuffer();
+ uriPath.append(Constants.PREFIX_OIC + "/");
+ uriPath.append(Constants.ACL_URI + "/");
+ uriPath.append(Constants.GROUP_URI + "/");
+ uriPath.append(srcDevice.getUserId());
+
+ IRequest requestToAS = MessageBuilder.createRequest(
+ RequestMethod.GET, uriPath.toString(), uriQuery.toString());
+
+ mASServer.sendRequest(requestToAS,
+ new AccountReceiveHandler(request, srcDevice));
+ }
}
}
\ No newline at end of file