Bug 5528 - Delete data impl
[netconf.git] / restconf / sal-rest-connector / src / main / java / org / opendaylight / restconf / restful / utils / ResponseFactory.java
index a8545568f0983175c290c866773eea685ab56d51..5d8c4f56aa63124915eebf5755c37c179f99f88e 100644 (file)
@@ -7,22 +7,37 @@
  */
 package org.opendaylight.restconf.restful.utils;
 
+import java.net.URI;
 import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.ResponseBuilder;
 import javax.ws.rs.core.Response.Status;
 import org.apache.commons.lang3.builder.Builder;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
 final class ResponseFactory extends FutureDataFactory<Void> implements Builder<Response> {
 
-    private final NormalizedNode<?, ?> readData;
-
+    private final ResponseBuilder responseBuilder;
     ResponseFactory(final NormalizedNode<?, ?> readData) {
-        this.readData = readData;
+        final Status status = prepareStatus(readData);
+        this.responseBuilder = Response.status(status);
+    }
+
+    ResponseFactory(final NormalizedNode<?, ?> readData, final URI location) {
+        final Status status = prepareStatus(readData);
+        this.responseBuilder = Response.status(status);
+        this.responseBuilder.location(location);
+    }
+
+    ResponseFactory() {
+        this.responseBuilder = Response.status(Status.OK);
     }
 
     @Override
     public Response build() {
-        final Status status = this.readData != null ? Status.OK : Status.CREATED;
-        return Response.status(status).build();
+        return this.responseBuilder.build();
+    }
+
+    private Status prepareStatus(final NormalizedNode<?, ?> readData) {
+        return readData != null ? Status.OK : Status.CREATED;
     }
 }