Fix sign up error in AccountResource
[platform/upstream/iotivity.git] / cloud / interface / src / main / java / org / iotivity / cloud / ciserver / resources / proxy / account / Account.java
index c0512c0..84aefc9 100644 (file)
@@ -26,37 +26,74 @@ import java.util.Arrays;
 import org.iotivity.cloud.base.connector.ConnectorPool;
 import org.iotivity.cloud.base.device.Device;
 import org.iotivity.cloud.base.device.IRequestChannel;
+import org.iotivity.cloud.base.device.IResponseEventHandler;
+import org.iotivity.cloud.base.exception.ClientException;
 import org.iotivity.cloud.base.exception.ServerException;
 import org.iotivity.cloud.base.protocols.IRequest;
+import org.iotivity.cloud.base.protocols.IResponse;
 import org.iotivity.cloud.base.protocols.MessageBuilder;
 import org.iotivity.cloud.base.protocols.enums.RequestMethod;
+import org.iotivity.cloud.base.protocols.enums.ResponseStatus;
 import org.iotivity.cloud.base.resource.Resource;
 import org.iotivity.cloud.ciserver.Constants;
 
 public class Account extends Resource {
-    IRequestChannel mAuthServer = null;
+    IRequestChannel mASServer = null;
 
     public Account() {
-        super(Arrays.asList(Constants.PREFIX_WELL_KNOWN, Constants.PREFIX_OCF,
-                Constants.ACCOUNT_URI));
+        super(Arrays.asList(Constants.PREFIX_OIC, Constants.ACCOUNT_URI));
 
-        mAuthServer = ConnectorPool.getConnection("account");
+        mASServer = ConnectorPool.getConnection("account");
+    }
+
+    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;
+        }
+
+        @Override
+        public void onResponseReceived(IResponse response)
+                throws ClientException {
+            switch (response.getStatus()) {
+                case DELETED:
+                    StringBuffer uriPath = new StringBuffer();
+                    uriPath.append(Constants.PREFIX_OIC + "/");
+                    uriPath.append(Constants.RD_URI);
+                    mRDServer.sendRequest(
+                            MessageBuilder.createRequest(RequestMethod.POST,
+                                    uriPath.toString(), mRequest.getUriQuery()),
+                            mSrcDevice);
+                    break;
+                case CHANGED:
+                    mSrcDevice.sendResponse(response);
+                    break;
+                default:
+                    mSrcDevice.sendResponse(MessageBuilder.createResponse(
+                            mRequest, ResponseStatus.BAD_REQUEST));
+            }
+        }
     }
 
     @Override
     public void onDefaultRequestReceived(Device srcDevice, IRequest request)
             throws ServerException {
         if (request.getMethod().equals(RequestMethod.DELETE)) {
-            String di = request.getUriQueryMap().get(Constants.REQ_DEVICE_ID)
-                    .get(0);
-            StringBuffer uriQuery = new StringBuffer();
-            uriQuery.append(Constants.REQ_DEVICE_ID + "=" + di);
-            uriQuery.append(";");
-            uriQuery.append(Constants.USER_ID + "=" + srcDevice.getUserId());
-
-            request = MessageBuilder.modifyRequest(request, null,
-                    uriQuery.toString(), null, null);
+            StringBuffer additionalQuery = new StringBuffer();
+            additionalQuery
+                    .append(Constants.USER_ID + "=" + srcDevice.getUserId());
+            String uriQuery = request.getUriQuery() + ";"
+                    + additionalQuery.toString();
+            request = MessageBuilder.modifyRequest(request, null, uriQuery,
+                    null, null);
         }
-        mAuthServer.sendRequest(request, srcDevice);
+        mASServer.sendRequest(request,
+                new AccountReceiveHandler(request, srcDevice));
     }
 }