From 5957bd0b9dc88de5d09ac18b45c8cad546559a8d Mon Sep 17 00:00:00 2001 From: Emanoel Xavier Date: Thu, 6 Apr 2017 04:26:41 -0700 Subject: [PATCH 1/2] Adding object type on assign method --- src/main/java/net/nuagenetworks/bambou/RestObject.java | 10 ++++++++-- .../bambou/operation/RestObjectOperations.java | 4 +++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/nuagenetworks/bambou/RestObject.java b/src/main/java/net/nuagenetworks/bambou/RestObject.java index 0df3b6f..323494c 100644 --- a/src/main/java/net/nuagenetworks/bambou/RestObject.java +++ b/src/main/java/net/nuagenetworks/bambou/RestObject.java @@ -334,10 +334,16 @@ public void assign(RestSession session, List childRestO @Override public void assign(RestSession session, List childRestObjs, boolean commit) throws RestException { + assign(session, childRestObjs, null, commit); + } + + @Override + public void assign(RestSession session, List childRestObjs, Class objectType, boolean commit) throws RestException { // Make sure there are child objects passed in - if (childRestObjs.isEmpty()) { + if (childRestObjs.isEmpty() && objectType == null) { throw new RestException("No child objects specified"); } + // Extract IDs from the specified child objects List ids = new ArrayList(); @@ -345,7 +351,7 @@ public void assign(RestSession session, List childRestO ids.add(restObject.getId()); } - Class childRestObjClass = childRestObjs.get(0).getClass(); + Class childRestObjClass = objectType == null ? childRestObjs.get(0).getClass() : objectType; ResponseEntity response = session.sendRequestWithRetry(HttpMethod.PUT, getResourceUrlForChildType(session, childRestObjClass), null, null, ids, BambouUtils.getArrayClass(this)); if (response.getStatusCode().series() == HttpStatus.Series.SUCCESSFUL) { diff --git a/src/main/java/net/nuagenetworks/bambou/operation/RestObjectOperations.java b/src/main/java/net/nuagenetworks/bambou/operation/RestObjectOperations.java index f26c100..a6ebd06 100644 --- a/src/main/java/net/nuagenetworks/bambou/operation/RestObjectOperations.java +++ b/src/main/java/net/nuagenetworks/bambou/operation/RestObjectOperations.java @@ -55,7 +55,7 @@ public interface RestObjectOperations { void assign(List childRestObjs) throws RestException; void assign(List childRestObjs, boolean commit) throws RestException; - + void fetch(RestSession session) throws RestException; void save(RestSession session) throws RestException; @@ -78,4 +78,6 @@ void instantiateChild(RestSession session, RestObject childRestObj, RestObjec void assign(RestSession session, List childRestObjs) throws RestException; void assign(RestSession session, List childRestObjs, boolean commit) throws RestException; + + void assign(RestSession session, List childRestObjs, Class objectType, boolean commit) throws RestException; } From fdbeb677ad2182a35af40820cacf87bf05d84dad Mon Sep 17 00:00:00 2001 From: Emanoel Xavier Date: Thu, 6 Apr 2017 05:24:51 -0700 Subject: [PATCH 2/2] Enabling assign to remove children --- .../java/net/nuagenetworks/bambou/RestObject.java | 14 ++++++++++++-- .../java/net/nuagenetworks/bambou/RestSession.java | 7 ++++++- .../bambou/operation/RestObjectOperations.java | 4 ++++ .../bambou/operation/RestSessionOperations.java | 2 ++ 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/nuagenetworks/bambou/RestObject.java b/src/main/java/net/nuagenetworks/bambou/RestObject.java index 323494c..2f2d883 100644 --- a/src/main/java/net/nuagenetworks/bambou/RestObject.java +++ b/src/main/java/net/nuagenetworks/bambou/RestObject.java @@ -212,15 +212,20 @@ public void instantiateChild(RestObject childRestObj, RestObject fromTemplate, I } @Override - public void assign(List childRestObjs) throws RestException { + public void assign(List childRestObjs, Class objectType) throws RestException { RestSession session = RestSession.getCurrentSession(); if (session != null) { - session.assign(this, childRestObjs); + session.assign(this, childRestObjs, objectType); } else { throw new RestException("Session not available in current thread"); } } + @Override + public void assign(List childRestObjs) throws RestException { + assign(childRestObjs, null); + } + @Override public void assign(List childRestObjs, boolean commit) throws RestException { RestSession session = RestSession.getCurrentSession(); @@ -337,6 +342,11 @@ public void assign(RestSession session, List childRestO assign(session, childRestObjs, null, commit); } + @Override + public void assign(RestSession session, List childRestObjs, Class objectType) throws RestException { + assign(session, childRestObjs, objectType, true); + } + @Override public void assign(RestSession session, List childRestObjs, Class objectType, boolean commit) throws RestException { // Make sure there are child objects passed in diff --git a/src/main/java/net/nuagenetworks/bambou/RestSession.java b/src/main/java/net/nuagenetworks/bambou/RestSession.java index fc4c05d..273c3ec 100644 --- a/src/main/java/net/nuagenetworks/bambou/RestSession.java +++ b/src/main/java/net/nuagenetworks/bambou/RestSession.java @@ -203,9 +203,14 @@ public void instantiateChild(RestObject restObj, RestObject childRestObj, RestOb @Override public void assign(RestObject restObj, List childRestObjs) throws RestException { - restObj.assign(this, childRestObjs); + assign(restObj, childRestObjs, null); } + @Override + public void assign(RestObject restObj, List childRestObjs, Class objectType) throws RestException { + restObj.assign(this, childRestObjs, objectType); + } + @Override public void assign(RestObject restObj, List childRestObjs, boolean commit) throws RestException { restObj.assign(this, childRestObjs, commit); diff --git a/src/main/java/net/nuagenetworks/bambou/operation/RestObjectOperations.java b/src/main/java/net/nuagenetworks/bambou/operation/RestObjectOperations.java index a6ebd06..d2e0c80 100644 --- a/src/main/java/net/nuagenetworks/bambou/operation/RestObjectOperations.java +++ b/src/main/java/net/nuagenetworks/bambou/operation/RestObjectOperations.java @@ -53,6 +53,8 @@ public interface RestObjectOperations { void instantiateChild(RestObject childRestObj, RestObject fromTemplate, Integer responseChoice, boolean commit) throws RestException; void assign(List childRestObjs) throws RestException; + + void assign(List childRestObjs, Class objectType) throws RestException; void assign(List childRestObjs, boolean commit) throws RestException; @@ -80,4 +82,6 @@ void instantiateChild(RestSession session, RestObject childRestObj, RestObjec void assign(RestSession session, List childRestObjs, boolean commit) throws RestException; void assign(RestSession session, List childRestObjs, Class objectType, boolean commit) throws RestException; + + void assign(RestSession session, List childRestObjs, Class objectType) throws RestException; } diff --git a/src/main/java/net/nuagenetworks/bambou/operation/RestSessionOperations.java b/src/main/java/net/nuagenetworks/bambou/operation/RestSessionOperations.java index 485073f..9418ec7 100644 --- a/src/main/java/net/nuagenetworks/bambou/operation/RestSessionOperations.java +++ b/src/main/java/net/nuagenetworks/bambou/operation/RestSessionOperations.java @@ -59,6 +59,8 @@ public interface RestSessionOperations { void assign(RestObject restObj, List childRestObjs) throws RestException; void assign(RestObject restObj, List childRestObjs, boolean commit) throws RestException; + + void assign(RestObject restObj, List childRestObjs, Class objectType) throws RestException; List get(RestFetcher fetcher) throws RestException;