From fe2cd10b2ed7e7e311feaead4e1eb4069c3ee1d0 Mon Sep 17 00:00:00 2001 From: Jee Hyeok Kim Date: Mon, 17 Oct 2016 15:34:17 +0900 Subject: [PATCH] Modify /oic/res response 1. Modify /oic/res response from cloud side. Return 4.04 Not found if no resources found. Change-Id: I5a8bf56ff5a3c07c2dc489dc2721b76716d9f6fd Signed-off-by: Jee Hyeok Kim Reviewed-on: https://gerrit.iotivity.org/gerrit/13335 Reviewed-by: Jaehong Jo Reviewed-by: Glen Youngjin Kim Tested-by: jenkins-iotivity --- .../rdserver/resources/directory/res/DiscoveryResource.java | 5 +++++ .../org/iotivity/cloud/testrdserver/DiscoveryResourceTest.java | 6 ++---- cloud/samples/client/airconditioner/aircon_controller.cpp | 10 +++++++++- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/cloud/resourcedirectory/src/main/java/org/iotivity/cloud/rdserver/resources/directory/res/DiscoveryResource.java b/cloud/resourcedirectory/src/main/java/org/iotivity/cloud/rdserver/resources/directory/res/DiscoveryResource.java index 3a1da17..1f7199f 100644 --- a/cloud/resourcedirectory/src/main/java/org/iotivity/cloud/rdserver/resources/directory/res/DiscoveryResource.java +++ b/cloud/resourcedirectory/src/main/java/org/iotivity/cloud/rdserver/resources/directory/res/DiscoveryResource.java @@ -83,6 +83,11 @@ public class DiscoveryResource extends Resource { ArrayList response = mRdManager.discoverResource(diList, rtList, ifList); + if (response.size() == 0) { + return MessageBuilder.createResponse(request, + ResponseStatus.NOT_FOUND); + } + return MessageBuilder.createResponse(request, ResponseStatus.CONTENT, ContentFormat.APPLICATION_CBOR, mCbor.encodingPayloadToCbor(response)); diff --git a/cloud/resourcedirectory/src/test/java/org/iotivity/cloud/testrdserver/DiscoveryResourceTest.java b/cloud/resourcedirectory/src/test/java/org/iotivity/cloud/testrdserver/DiscoveryResourceTest.java index b3709b5..1881f90 100644 --- a/cloud/resourcedirectory/src/test/java/org/iotivity/cloud/testrdserver/DiscoveryResourceTest.java +++ b/cloud/resourcedirectory/src/test/java/org/iotivity/cloud/testrdserver/DiscoveryResourceTest.java @@ -85,11 +85,9 @@ public class DiscoveryResourceTest { RDServerTestUtils.DISCOVERY_REQ_URI, "rt=core.light;di=" + RDServerTestUtils.DI); mDiscoveryResource.onDefaultRequestReceived(mockDevice, request); - // assertion: if the response status is "CONTENT" - // assertion : if the payload is null + // assertion: if the response status is "NOT_FOUND" assertTrue(mLatch.await(2L, SECONDS)); - assertTrue(methodCheck(mResponse, ResponseStatus.CONTENT)); - assertTrue(nullPayloadCheck(mResponse)); + assertTrue(methodCheck(mResponse, ResponseStatus.NOT_FOUND)); } @Test diff --git a/cloud/samples/client/airconditioner/aircon_controller.cpp b/cloud/samples/client/airconditioner/aircon_controller.cpp index 344ac22..bc9a929 100644 --- a/cloud/samples/client/airconditioner/aircon_controller.cpp +++ b/cloud/samples/client/airconditioner/aircon_controller.cpp @@ -217,6 +217,8 @@ void foundAirconditionerResource(shared_ptr resource) void foundDevice(shared_ptr resource) { + cout << "Found device called!" << endl; + vector rt = resource->getResourceTypes(); cout << "Device found: " << resource->uri() << endl; @@ -248,6 +250,12 @@ void foundDevice(shared_ptr resource) } } +void errorFoundDevice(const std::string &uri, const int ecode) +{ + cout << "Found device error on " << uri << " code " << ecode << endl; + g_callbackLock.notify_all(); +} + void presenceDevice(OCStackResult , const unsigned int i, const string &str) { cout << "Presence received, i=" << i << " str=" << str << endl; @@ -325,7 +333,7 @@ int main(int argc, char *argv[]) result = OCPlatform::findResource(g_host, "/oic/res?rt=oic.wk.d", static_cast(CT_ADAPTER_TCP | CT_IP_USE_V4), - &foundDevice); + &foundDevice, &errorFoundDevice); cout << " result: " << result << endl; -- 2.7.4