From 6c25dc5ff217ff5e2aa8c452990798d589267387 Mon Sep 17 00:00:00 2001 From: carycheng Date: Mon, 7 May 2018 10:52:50 -0700 Subject: [PATCH 01/19] updates to metadata cascade policy --- .../java/com/box/sdk/BoxCollaboration.java | 2 +- .../com/box/sdk/BoxMetadataCascadePolicy.java | 118 ++++++++++++++++++ .../com/box/sdk/BoxCollaborationTest.java | 1 - 3 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java diff --git a/src/main/java/com/box/sdk/BoxCollaboration.java b/src/main/java/com/box/sdk/BoxCollaboration.java index ed7c9076f..4f7f9d51b 100644 --- a/src/main/java/com/box/sdk/BoxCollaboration.java +++ b/src/main/java/com/box/sdk/BoxCollaboration.java @@ -175,7 +175,7 @@ public void updateInfo(Info info) { } /** - * Deletes this collaboration. + * Deletes this collanboration. */ public void delete() { BoxAPIConnection api = this.getAPI(); diff --git a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java new file mode 100644 index 000000000..1066cea96 --- /dev/null +++ b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java @@ -0,0 +1,118 @@ +package com.box.sdk; + +import java.net.URL; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; + +import com.eclipsesource.json.JsonArray; +import com.eclipsesource.json.JsonObject; +import com.eclipsesource.json.JsonValue; + +/** + * Represents a Metadata Cascade Policy. + */ +@BoxResourceType("") +public class BoxMetadataCascadePolicy extends BoxResource{ + + /** + * Get All Metadata Cascade Policies URL. + */ + public static final URLTemplate GET_ALL_METADATA_CASCADE_POLICIES_URL_TEMPLATE = + new URLTemplate("metadata_cascade_policies"); + + /** + * Metadata Cascade Policies URL. + */ + public static final URLTemplate METADATA_CASCADE_POLICIES_URL_TEMPLATE = + new URLTemplate("metadata_cascade_polcies/%s"); + + /** + * Constructs a BoxMetadataCascadePolicy for a metadata cascade policy with a given ID. + * + * @param api the API connection used to make the request. + * @param id the ID of the metadata cascade policy. + */ + public BoxMetadataCascadePolicy(BoxAPIConnection api, String id) { super(api, id); } + + + + + + + public class Info extends BoxResource.Info { + private BoxEnterprise ownerEnterprise; + private BoxFolder.Info parent; + private String scope; + private String templateKey; + + /** + * Constructs an empty Info object. + */ + public Info() { super(); } + + /** + * Constructs an Info object by parsing information from a JSON string. + * + * @param json the JSON string to parse. + */ + public Info(String json) { super(json); } + + Info(JsonObject jsonObject) { super(jsonObject); } + + /** + * Gets the enterprise the metadata cascade policy belongs to. + * + * @return the enterprise the metadata cascade policy belongs to. + */ + public BoxEnterprise getOwnerEnterprise() { + return this.ownerEnterprise; + } + + /** + * Gets the folder the metadata cascade policy is on. + * + * @return the folder parent of the metadata cascade policy. + */ + public BoxFolder.Info getParent() { + return this.parent; + } + + /** + * Gets the scope of the metadata cascade policy. + * + * @return the scope of the metadata cascade policy. + */ + public String getScope() { + return this.scope; + } + + /** + * Gets the template key for the metadata cascade policy. + * + * @return the template key for the metadata cascade policy. + */ + public String getTemplateKey() { + return this.templateKey; + } + + @Override + public BoxMetadataCascadePolicy getResource() { return BoxMetadataCascadePolicy.this; } + +// @Override +// protected void parseJSONMember(JsonObject.Member member) { +// super.parseJSONMember(member); +// +// String memberName = member.getName(); +// JsonValue value = member.getValue(); +// try { +// if (memberName.equals("owner_enterprise")) { +// this.ownerEnterprise = value.asObject(); +// } else if (memberName.equals("parent")) { +// if() +// } +// } +// } + } +} diff --git a/src/test/java/com/box/sdk/BoxCollaborationTest.java b/src/test/java/com/box/sdk/BoxCollaborationTest.java index 98d4efb83..5d82eba09 100644 --- a/src/test/java/com/box/sdk/BoxCollaborationTest.java +++ b/src/test/java/com/box/sdk/BoxCollaborationTest.java @@ -393,5 +393,4 @@ public void testCanViewPathSendsCorrectJson() throws IOException { info.setCanViewPath(canViewPathOn); collaboration.updateInfo(info); } - } From 27ac7afe3b627f8b8596883ae3fb7c2d24c1b520 Mon Sep 17 00:00:00 2001 From: carycheng Date: Mon, 7 May 2018 15:51:53 -0700 Subject: [PATCH 02/19] first implementation of metadata cascade policy --- .../com/box/sdk/BoxMetadataCascadePolicy.java | 191 +++++++++++++++--- 1 file changed, 166 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java index 1066cea96..ad2be012c 100644 --- a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java +++ b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java @@ -14,7 +14,7 @@ * Represents a Metadata Cascade Policy. */ @BoxResourceType("") -public class BoxMetadataCascadePolicy extends BoxResource{ +public class BoxMetadataCascadePolicy extends BoxResource { /** * Get All Metadata Cascade Policies URL. @@ -28,17 +28,137 @@ public class BoxMetadataCascadePolicy extends BoxResource{ public static final URLTemplate METADATA_CASCADE_POLICIES_URL_TEMPLATE = new URLTemplate("metadata_cascade_polcies/%s"); + private static final int DEFAULT_LIMIT = 100; + /** * Constructs a BoxMetadataCascadePolicy for a metadata cascade policy with a given ID. * * @param api the API connection used to make the request. * @param id the ID of the metadata cascade policy. */ - public BoxMetadataCascadePolicy(BoxAPIConnection api, String id) { super(api, id); } + public BoxMetadataCascadePolicy(BoxAPIConnection api, String id) { + super(api, id); + } + + /** + * Retrieves list of Box Metadata Cascade Policies that belong to your Enterprise as an Iterable. + * + * @param api the API connection to be used by the resource. + * @param folderID the ID of the folder to retrieve cascade policies for. + * @return the Iterable of Box Metadata Cascade Policies in your enterprise. + */ + public static Iterable getAll(final BoxAPIConnection api, String folderID) { + return getAll(api, folderID, null, DEFAULT_LIMIT); + } + + /** + * Retrieves list of Box Metadata Cascade Policies that belong to your Enterprise as an Iterable. + * + * @param api the API connection to be used by the resource. + * @param folderID the ID of the folder to retrieve cascade policies for. + * @param ownerEnterpriseID the ID of the enterprise to retrieve Metadata Cascade Policies for. + * @return the Iterable of Box Metadata Cascade Policies in your enterprise. + */ + public static Iterable getAll(final BoxAPIConnection api, String folderID, + String ownerEnterpriseID, int limit, String... fields) { + + QueryStringBuilder builder = new QueryStringBuilder(); + if (ownerEnterpriseID != null) { + builder.appendParam("owner_enterprise_id", ownerEnterpriseID); + } + if (fields.length > 0) { + builder.appendParam("fields", fields); + } + return new BoxResourceIterable(api, GET_ALL_METADATA_CASCADE_POLICIES_URL_TEMPLATE + .buildWithQuery(api.getBaseURL(), builder.toString()), limit) { + @Override + protected BoxMetadataCascadePolicy.Info factory(JsonObject jsonObject) { + BoxMetadataCascadePolicy cascadePolicy = + new BoxMetadataCascadePolicy(api, jsonObject.get("id").asString()); + + return cascadePolicy.new Info(jsonObject); + } + }; + } + + /** + * Returns the information for a specific BoxMetadataCascadePolicy. + * + * @param fields the fields to retrieve. + * @return the information about this metadata cascade policy. + */ + public BoxMetadataCascadePolicy.Info getInfo(String... fields) { + QueryStringBuilder builder = new QueryStringBuilder(); + if (fields.length > 0) { + builder.appendParam("fields", fields); + } + URL url = METADATA_CASCADE_POLICIES_URL_TEMPLATE.buildWithQuery(this.getAPI().getBaseURL(), + builder.toString(), this.getID()); + BoxAPIRequest request = new BoxAPIRequest(this.getAPI(), url, "GET"); + BoxJSONResponse response = (BoxJSONResponse) request.send(); + JsonObject responseJSON = JsonObject.readFrom(response.getJSON()); + return new Info(responseJSON); + } + /** + * Creates a new Metadata Cascade Policy on a folder. + * + * @param api the API connection to be used by the resource. + * @param folderID the ID of the folder to create a metadata cascade policy on. + * @param scope the scope of the metadata cascade policy. + * @param templateKey the key of the template. + * @return information about the Metadata Cascade Policy. + */ + public static BoxMetadataCascadePolicy.Info create(final BoxAPIConnection api, String folderID, String scope, + String templateKey) { + URL url = GET_ALL_METADATA_CASCADE_POLICIES_URL_TEMPLATE.build(api.getBaseURL()); + BoxJSONRequest request = new BoxJSONRequest(api, url, "POST"); + JsonObject requestJSON = new JsonObject() + .add("folder_id", folderID) + .add("scope", scope) + .add("templateKey", templateKey); + request.setBody(requestJSON.toString()); + BoxJSONResponse response = (BoxJSONResponse) request.send(); + JsonObject responseJSON = JsonObject.readFrom(response.getJSON()); + BoxMetadataCascadePolicy createdMetadataCascadePolicy = new BoxMetadataCascadePolicy(api, + responseJSON.get("id").asString()); + return createdMetadataCascadePolicy.new Info(responseJSON); + } + /** + * If a policy already exists on a folder, this will apply that policy to all existing files and sub folders within + * the target folder. + * + * @param api the API connection to be used by the resource. + * @param conflictResolution the desired behavior for conflict-resolution. Set to either none or overwrite. + * @param cascadePolicyID the ID of the metadata cascade policy. + * @return information about the Metadata Cascade Policy. + */ + public static BoxMetadataCascadePolicy.Info forceApply(final BoxAPIConnection api, String conflictResolution, + String cascadePolicyID) { + QueryStringBuilder builder = new QueryStringBuilder(); + builder.appendParam("id", cascadePolicyID); + URL url = GET_ALL_METADATA_CASCADE_POLICIES_URL_TEMPLATE.buildWithQuery(api.getBaseURL(), + builder.toString()); + BoxJSONRequest request = new BoxJSONRequest(api, url, "POST"); + JsonObject requestJSON = new JsonObject() + .add("conflict_resolution", conflictResolution); + BoxJSONResponse response = (BoxJSONResponse) request.send(); + JsonObject responseJSON = JsonObject.readFrom(response.getJSON()); + BoxMetadataCascadePolicy createdMetadataCascadePolicy = + new BoxMetadataCascadePolicy(api, responseJSON.get("id").asString()); + return createdMetadataCascadePolicy.new Info(responseJSON); + } + /** + * Deletes the metadata cascade policy. + */ + public void delete() { + URL url = METADATA_CASCADE_POLICIES_URL_TEMPLATE.build(this.getAPI().getBaseURL(), this.getID()); + BoxAPIRequest request = new BoxAPIRequest(this.getAPI(), url, "DELETE"); + BoxAPIResponse response = request.send(); + } public class Info extends BoxResource.Info { @@ -50,21 +170,27 @@ public class Info extends BoxResource.Info { /** * Constructs an empty Info object. */ - public Info() { super(); } + public Info() { + super(); + } /** * Constructs an Info object by parsing information from a JSON string. * * @param json the JSON string to parse. */ - public Info(String json) { super(json); } + public Info(String json) { + super(json); + } - Info(JsonObject jsonObject) { super(jsonObject); } + Info(JsonObject jsonObject) { + super(jsonObject); + } /** * Gets the enterprise the metadata cascade policy belongs to. * - * @return the enterprise the metadata cascade policy belongs to. + * @return the enterprise the metadata cascade policy belongs to. */ public BoxEnterprise getOwnerEnterprise() { return this.ownerEnterprise; @@ -73,7 +199,7 @@ public BoxEnterprise getOwnerEnterprise() { /** * Gets the folder the metadata cascade policy is on. * - * @return the folder parent of the metadata cascade policy. + * @return the folder parent of the metadata cascade policy. */ public BoxFolder.Info getParent() { return this.parent; @@ -82,7 +208,7 @@ public BoxFolder.Info getParent() { /** * Gets the scope of the metadata cascade policy. * - * @return the scope of the metadata cascade policy. + * @return the scope of the metadata cascade policy. */ public String getScope() { return this.scope; @@ -91,28 +217,43 @@ public String getScope() { /** * Gets the template key for the metadata cascade policy. * - * @return the template key for the metadata cascade policy. + * @return the template key for the metadata cascade policy. */ public String getTemplateKey() { return this.templateKey; } @Override - public BoxMetadataCascadePolicy getResource() { return BoxMetadataCascadePolicy.this; } - -// @Override -// protected void parseJSONMember(JsonObject.Member member) { -// super.parseJSONMember(member); -// -// String memberName = member.getName(); -// JsonValue value = member.getValue(); -// try { -// if (memberName.equals("owner_enterprise")) { -// this.ownerEnterprise = value.asObject(); -// } else if (memberName.equals("parent")) { -// if() -// } -// } -// } + public BoxMetadataCascadePolicy getResource() { + return BoxMetadataCascadePolicy.this; + } + + @Override + protected void parseJSONMember(JsonObject.Member member) { + super.parseJSONMember(member); + String memberName = member.getName(); + JsonValue value = member.getValue(); + try { + if (memberName.equals("owner_enterprise")) { + JsonObject jsonObject = value.asObject(); + this.ownerEnterprise = new BoxEnterprise(jsonObject); + } else if (memberName.equals("parent")) { + JsonObject parentJSON = value.asObject(); + if (this.parent == null) { + String parentID = parentJSON.get("id").asString(); + BoxFolder folder = new BoxFolder(getAPI(), parentID); + this.parent = folder.new Info(parentJSON); + } else { + this.parent.update(parentJSON); + } + } else if (memberName.equals("scope")) { + this.scope = value.asString(); + } else if (memberName.equals("templateKey")) { + this.templateKey = value.asString(); + } + } catch (Exception e) { + assert false : "A ParseException indicates a bug in the SDK."; + } + } } } From 2baa8fadb97402bdcabd7fbcaf3c64f783a670d0 Mon Sep 17 00:00:00 2001 From: carycheng Date: Mon, 7 May 2018 16:36:58 -0700 Subject: [PATCH 03/19] updated tests for metadata cascade policy --- .../com/box/sdk/BoxMetadataCascadePolicy.java | 6 +- .../CreateMetadataCascadePolicies201.json | 14 ++ .../GetAllMetadataCascadePolicies200.json | 21 +++ .../GetMetadataCascadePoliciesID200.json | 14 ++ .../box/sdk/BoxMetadataCascadePolicyTest.java | 126 ++++++++++++++++++ 5 files changed, 176 insertions(+), 5 deletions(-) create mode 100644 src/test/Fixtures/BoxMetadataCascadePolicy/CreateMetadataCascadePolicies201.json create mode 100644 src/test/Fixtures/BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200.json create mode 100644 src/test/Fixtures/BoxMetadataCascadePolicy/GetMetadataCascadePoliciesID200.json create mode 100644 src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java diff --git a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java index ad2be012c..32dcb0b36 100644 --- a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java +++ b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java @@ -134,7 +134,7 @@ public static BoxMetadataCascadePolicy.Info create(final BoxAPIConnection api, S * @param cascadePolicyID the ID of the metadata cascade policy. * @return information about the Metadata Cascade Policy. */ - public static BoxMetadataCascadePolicy.Info forceApply(final BoxAPIConnection api, String conflictResolution, + public static void forceApply(final BoxAPIConnection api, String conflictResolution, String cascadePolicyID) { QueryStringBuilder builder = new QueryStringBuilder(); builder.appendParam("id", cascadePolicyID); @@ -145,10 +145,6 @@ public static BoxMetadataCascadePolicy.Info forceApply(final BoxAPIConnection ap JsonObject requestJSON = new JsonObject() .add("conflict_resolution", conflictResolution); BoxJSONResponse response = (BoxJSONResponse) request.send(); - JsonObject responseJSON = JsonObject.readFrom(response.getJSON()); - BoxMetadataCascadePolicy createdMetadataCascadePolicy = - new BoxMetadataCascadePolicy(api, responseJSON.get("id").asString()); - return createdMetadataCascadePolicy.new Info(responseJSON); } /** diff --git a/src/test/Fixtures/BoxMetadataCascadePolicy/CreateMetadataCascadePolicies201.json b/src/test/Fixtures/BoxMetadataCascadePolicy/CreateMetadataCascadePolicies201.json new file mode 100644 index 000000000..d1fab3ccf --- /dev/null +++ b/src/test/Fixtures/BoxMetadataCascadePolicy/CreateMetadataCascadePolicies201.json @@ -0,0 +1,14 @@ +{ + "id": "84113349-794d-445c-b93c-d8481b223434", + "type": "metadata_cascade_policy", + "owner_enterprise": { + "type": "enterprise", + "id": "11111" + }, + "parent": { + "type": "folder", + "id": "22222" + }, + "scope": "enterprise_11111", + "templateKey": "testTemplate" +} diff --git a/src/test/Fixtures/BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200.json b/src/test/Fixtures/BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200.json new file mode 100644 index 000000000..a85748bdf --- /dev/null +++ b/src/test/Fixtures/BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200.json @@ -0,0 +1,21 @@ +{ + "limit": 100, + "entries": [ + { + "id": "84113349-794d-445c-b93c-d8481b223434", + "type": "metadata_cascade_policy", + "owner_enterprise": { + "type": "enterprise", + "id": "11111" + }, + "parent": { + "type": "folder", + "id": "22222" + }, + "scope": "enterprise_11111", + "templateKey": "testTemplate" + } + ], + "next_marker": null, + "prev_marker": null +} diff --git a/src/test/Fixtures/BoxMetadataCascadePolicy/GetMetadataCascadePoliciesID200.json b/src/test/Fixtures/BoxMetadataCascadePolicy/GetMetadataCascadePoliciesID200.json new file mode 100644 index 000000000..d1fab3ccf --- /dev/null +++ b/src/test/Fixtures/BoxMetadataCascadePolicy/GetMetadataCascadePoliciesID200.json @@ -0,0 +1,14 @@ +{ + "id": "84113349-794d-445c-b93c-d8481b223434", + "type": "metadata_cascade_policy", + "owner_enterprise": { + "type": "enterprise", + "id": "11111" + }, + "parent": { + "type": "folder", + "id": "22222" + }, + "scope": "enterprise_11111", + "templateKey": "testTemplate" +} diff --git a/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java b/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java new file mode 100644 index 000000000..8a627a533 --- /dev/null +++ b/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java @@ -0,0 +1,126 @@ +package com.box.sdk; + +import com.eclipsesource.json.JsonObject; +import com.github.tomakehurst.wiremock.client.WireMock; +import com.github.tomakehurst.wiremock.junit.WireMockClassRule; +import org.junit.Assert; +import org.junit.ClassRule; +import org.junit.Test; +import org.junit.experimental.categories.Category; + +import java.io.IOException; +import java.util.Iterator; + +/** + * + */ +public class BoxMetadataCascadePolicyTest { + + /** + * Wiremock + */ + @ClassRule + public static final WireMockClassRule WIRE_MOCK_CLASS_RULE = new WireMockClassRule(53621); + private BoxAPIConnection api = TestConfig.getAPIConnection(); + + @Test + @Category(UnitTest.class) + public void testCreateMetadataCascadePolicySucceedsSendsCorrectJson() throws IOException { + String result = ""; + final String cascadePolicyURL = "/metadata_cascade_policies"; + final String folderID = "22222"; + final String scope = "enterprise_11111"; + final String templateKey = "testTemplate"; + JsonObject cascadeObject = new JsonObject() + .add("folder_id", folderID) + .add("scope", scope) + .add("templateKey", templateKey); + + result = TestConfig.getFixture("BoxMetadataCascadePolicy/CreateMetadataCascadePolicies201"); + + WIRE_MOCK_CLASS_RULE.stubFor(WireMock.post(WireMock.urlPathEqualTo(cascadePolicyURL)) + .withRequestBody(WireMock.equalToJson(cascadeObject.toString())) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(result))); + + BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = BoxMetadataCascadePolicy.create(this.api, folderID, + scope, templateKey); + + Assert.assertEquals(folderID, metadataCascadePolicyInfo.getParent().getID()); + Assert.assertEquals(scope, metadataCascadePolicyInfo.getScope()); + Assert.assertEquals(templateKey, metadataCascadePolicyInfo.getTemplateKey()); + } + + @Test + @Category(UnitTest.class) + public void testGetAllMetadataCascadePoliciesSucceeds() throws IOException { + String result = ""; + final String folderID = "22222"; + final String cascadePolicyID = "84113349-794d-445c-b93c-d8481b223434"; + final String enterpriseID = "11111"; + final String scope = "enterprise_11111"; + final String templateKey = "testTemplate"; + final String cascadePoliciesURL = "/metadata_cascade_policies"; + + result = TestConfig.getFixture("BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200"); + + WIRE_MOCK_CLASS_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo(cascadePoliciesURL)) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(result))); + + Iterator metadataCascadePolicies = + BoxMetadataCascadePolicy.getAll(this.api, folderID).iterator(); + + BoxMetadataCascadePolicy.Info firstCascadePolicy = metadataCascadePolicies.next(); + + Assert.assertEquals(folderID, firstCascadePolicy.getParent().getID()); + Assert.assertEquals(cascadePolicyID, firstCascadePolicy.getID()); + Assert.assertEquals(enterpriseID, firstCascadePolicy.getOwnerEnterprise().getID()); + Assert.assertEquals(scope, firstCascadePolicy.getScope()); + Assert.assertEquals(templateKey, firstCascadePolicy.getTemplateKey()); + } + + @Test + @Category(UnitTest.class) + public void testGetAllMetadataCascadePolicySucceeds() throws IOException { + String result = ""; + final String cascadePolicyID = "84113349-794d-445c-b93c-d8481b223434"; + final String enterpriseID = "11111"; + final String parentID = "22222"; + final String scope = "enterprise_11111"; + final String templateKey = "testTemplate"; + final String cascadePolicyURL = "/metadata_cascade_policies/" + cascadePolicyID; + + result = TestConfig.getFixture("BoxMetadataCascadePolicy/GetMetadataCascadePoliciesID200"); + + WIRE_MOCK_CLASS_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo(cascadePolicyURL)) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(result))); + + BoxMetadataCascadePolicy metadataCascadePolicy = new BoxMetadataCascadePolicy(this.api, cascadePolicyID); + BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = metadataCascadePolicy.getInfo(); + + Assert.assertEquals(enterpriseID, metadataCascadePolicyInfo.getOwnerEnterprise().getID()); + Assert.assertEquals(parentID, metadataCascadePolicyInfo.getParent().getID()); + Assert.assertEquals(scope, metadataCascadePolicyInfo.getScope()); + Assert.assertEquals(templateKey, metadataCascadePolicyInfo.getTemplateKey()); + } + + @Test + @Category(UnitTest.class) + public void testDeleteMetadataCascadePolicySendsCorrectRequest() throws IOException { + final String cascadePolicyID = "84113349-794d-445c-b93c-d8481b223434"; + final String cascadePolicyURL = "/metadata_cascade_policies/" + cascadePolicyID; + + WIRE_MOCK_CLASS_RULE.stubFor(WireMock.delete(WireMock.urlPathEqualTo(cascadePolicyURL)) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withStatus(204))); + + BoxMetadataCascadePolicy metadataCascadePolicy = new BoxMetadataCascadePolicy(this.api, cascadePolicyID); + metadataCascadePolicy.delete(); + } +} From f82e32cd6745f16913525da9dfbfe6ef8b4b6e74 Mon Sep 17 00:00:00 2001 From: carycheng Date: Mon, 7 May 2018 17:04:14 -0700 Subject: [PATCH 04/19] adding docs for metadata cascade policy --- doc/folders.md | 28 +++++++++++++++++++ .../box/sdk/BoxMetadataCascadePolicyTest.java | 4 +-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/doc/folders.md b/doc/folders.md index ac919a9f9..da73d965d 100644 --- a/doc/folders.md +++ b/doc/folders.md @@ -27,6 +27,8 @@ group, and perform other common folder operations (move, copy, delete, etc.). - [Delete Metadata](#delete-metadata) - [Get All Metadata on Folder](#get-all-metadata-on-folder) - [Get Metadata for Multiple Files](#get-metadata-for-multiple-files) +- [Create Cascade Policy On Folder](#create-cascade-policy-on-folder) +- [Get a Cascade Policies Information](#get-a-cascade-policies-information) @@ -386,3 +388,29 @@ for (BoxItem.Info itemInfo : itemsInFolder) { Metadata itemMetadata = itemInfo.getMetadata("properties", "global"); } ``` + +Create Cascade Policy On Folder +------------------------------- + +To set a metadata policy, which applies metadata values on a folder to new items in the folder, call +[`BoxMetadataCascadePolicy.create(BoxAPIConnection api, String folderID, String scope, String templateKey)`][create-policy] +with the api connection, scope, template key of the metadata template to be cascaded, and the ID of the folder to apply the policy to. + +```java +BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = BoxMetadataCascadePolicy.create(this.api, 'folder-id', 'metadata-scope', 'example-template-key'); +``` + +[create-policy]: + +Get a Cascade Policies Information +---------------------------------- + +To retrieve information about a specific metadata cascade policy, call +[`BoxMetadataCascadePolicy.getInfo()`][get-info] + +```java +BoxMetadataCascadePolicy metadataCascadePolicy = new BoxMetadataCascadePolicy(this.api, 'cascade-policy-id'); +BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = metadataCascadePolicy.getInfo(); +``` + +[get-info]: diff --git a/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java b/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java index 8a627a533..a3ee92c74 100644 --- a/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java +++ b/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java @@ -84,7 +84,7 @@ public void testGetAllMetadataCascadePoliciesSucceeds() throws IOException { @Test @Category(UnitTest.class) - public void testGetAllMetadataCascadePolicySucceeds() throws IOException { + public void testGetAMetadataCascadePolicySucceeds() throws IOException { String result = ""; final String cascadePolicyID = "84113349-794d-445c-b93c-d8481b223434"; final String enterpriseID = "11111"; @@ -111,7 +111,7 @@ public void testGetAllMetadataCascadePolicySucceeds() throws IOException { @Test @Category(UnitTest.class) - public void testDeleteMetadataCascadePolicySendsCorrectRequest() throws IOException { + public void testDeleteMetadataCascadePolicySendsCorrectRequest() { final String cascadePolicyID = "84113349-794d-445c-b93c-d8481b223434"; final String cascadePolicyURL = "/metadata_cascade_policies/" + cascadePolicyID; From f0b3fe8b74cbfd46917f02b54ea2f09f948aef62 Mon Sep 17 00:00:00 2001 From: carycheng Date: Tue, 8 May 2018 09:53:15 -0700 Subject: [PATCH 05/19] added docs for cascade policies --- doc/folders.md | 57 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/doc/folders.md b/doc/folders.md index da73d965d..31bd8907b 100644 --- a/doc/folders.md +++ b/doc/folders.md @@ -29,6 +29,9 @@ group, and perform other common folder operations (move, copy, delete, etc.). - [Get Metadata for Multiple Files](#get-metadata-for-multiple-files) - [Create Cascade Policy On Folder](#create-cascade-policy-on-folder) - [Get a Cascade Policies Information](#get-a-cascade-policies-information) +- [Get All Cascade Policy on Folder](#get-all-cascade-policies-on-folder) +- [Force Apply Cascade Policy on Folder](#force-apply-cascade-policy-on-folder) +- [Delete Cascade Policy](#delete-cascade-policy) @@ -393,11 +396,11 @@ Create Cascade Policy On Folder ------------------------------- To set a metadata policy, which applies metadata values on a folder to new items in the folder, call -[`BoxMetadataCascadePolicy.create(BoxAPIConnection api, String folderID, String scope, String templateKey)`][create-policy] +[`create(BoxAPIConnection api, String folderID, String scope, String templateKey)`][create-policy] with the api connection, scope, template key of the metadata template to be cascaded, and the ID of the folder to apply the policy to. ```java -BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = BoxMetadataCascadePolicy.create(this.api, 'folder-id', 'metadata-scope', 'example-template-key'); +BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = BoxMetadataCascadePolicy.create(api, 'folder-id', 'metadata-scope', 'example-template-key'); ``` [create-policy]: @@ -406,11 +409,57 @@ Get a Cascade Policies Information ---------------------------------- To retrieve information about a specific metadata cascade policy, call -[`BoxMetadataCascadePolicy.getInfo()`][get-info] +[`getInfo()`][get-info] ```java -BoxMetadataCascadePolicy metadataCascadePolicy = new BoxMetadataCascadePolicy(this.api, 'cascade-policy-id'); +BoxMetadataCascadePolicy metadataCascadePolicy = new BoxMetadataCascadePolicy(api, 'cascade-policy-id'); BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = metadataCascadePolicy.getInfo(); ``` [get-info]: + +Get All Cascade Policies on Folder +---------------------------------- + +To get a list of all cascade policies on a folder, which show the metadata templates that are being applied to all +items in the folder, call [`getAll(BoxAPIConnection api, String folderID)`][get-all] with the ID of the folder. + +```java +BoxMetadataCascadePolicy.getAll(api, 'folder-id'); +``` + +You can also set the `owner_enterprise_id` option to retrieve only cascade policies owned by a specific enterprise(defaults to the current enterprise). + +```java +BoxMetadataCascadePolicy.getAll(api, 'folder-id', 'owner-enterprise-id', 100); +``` + +[get-all]: + +Force Apply Cascade Policy on Folder +------------------------------------ + +To force apply a metadata template policy and apply metadata values to all existing items in an affected folder, call +[`forceApply(api, String conflictResolution, String cascadePolicy)`][force-apply] with the ID of the cascade policy to force +apply and the conflict resolution method for dealing with items that already have a metadata value that conflicts with the +folder. Specifying a resolution value of `none` will preserve the existing values on items, and specifying `overwrite` +will overwrite values on items in the folder with the metadata value from the folder. + +```java +BoxMetadataCascadePolicy.forceApply(api, 'none', 'cascade-policy-id'); +``` + +[force-apply]: + +Delete Cascade Policy +--------------------- + +To remove a cascade policy and stop applying metadata from a folder to items in the folder, +call [`delete()`][delete-cascade-policy]. + +```java +BoxMetadataCascadePolicy policyToDelete = new BoxMetadataCascadePolicy(api, 'policy-id'); +policyToDelete.delete(); +``` + +[delete-cascade-policy]: From 8a8fa8a8b717c65e25ffaa7e0db247fa9d0cf12c Mon Sep 17 00:00:00 2001 From: carycheng Date: Tue, 8 May 2018 10:45:21 -0700 Subject: [PATCH 06/19] completed metadata cascade policies --- .../com/box/sdk/BoxMetadataCascadePolicy.java | 3 ++- .../box/sdk/BoxMetadataCascadePolicyTest.java | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java index 32dcb0b36..56782dff5 100644 --- a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java +++ b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java @@ -26,7 +26,7 @@ public class BoxMetadataCascadePolicy extends BoxResource { * Metadata Cascade Policies URL. */ public static final URLTemplate METADATA_CASCADE_POLICIES_URL_TEMPLATE = - new URLTemplate("metadata_cascade_polcies/%s"); + new URLTemplate("metadata_cascade_policies/%s"); private static final int DEFAULT_LIMIT = 100; @@ -144,6 +144,7 @@ public static void forceApply(final BoxAPIConnection api, String conflictResolut BoxJSONRequest request = new BoxJSONRequest(api, url, "POST"); JsonObject requestJSON = new JsonObject() .add("conflict_resolution", conflictResolution); + request.setBody(requestJSON.toString()); BoxJSONResponse response = (BoxJSONResponse) request.send(); } diff --git a/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java b/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java index a3ee92c74..3f84a26ff 100644 --- a/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java +++ b/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java @@ -109,6 +109,24 @@ public void testGetAMetadataCascadePolicySucceeds() throws IOException { Assert.assertEquals(templateKey, metadataCascadePolicyInfo.getTemplateKey()); } + @Test + @Category(UnitTest.class) + public void testForceApplyMetadataCascadePolicySucceedsAndSendsCorrectJson() { + final String conflictResolution = "none"; + final String cascadePolicyID = "12345"; + final String forceApplyURL = "/metadata_cascade_policies/" + cascadePolicyID; + + JsonObject policyObject = new JsonObject() + .add("conflict_resolution", conflictResolution); + + WIRE_MOCK_CLASS_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo(forceApplyURL)) + .withQueryParam("id", WireMock.containing(cascadePolicyID)) + .withRequestBody(WireMock.equalToJson(policyObject.toString())) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withStatus(202))); + } + @Test @Category(UnitTest.class) public void testDeleteMetadataCascadePolicySendsCorrectRequest() { From 9475cf9700084c7f63696528b708f6e41d19cb78 Mon Sep 17 00:00:00 2001 From: carycheng Date: Tue, 8 May 2018 10:55:04 -0700 Subject: [PATCH 07/19] fixed lint errors --- .../com/box/sdk/BoxMetadataCascadePolicy.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java index 56782dff5..da40e04de 100644 --- a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java +++ b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java @@ -1,12 +1,7 @@ package com.box.sdk; import java.net.URL; -import java.text.ParseException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; -import com.eclipsesource.json.JsonArray; import com.eclipsesource.json.JsonObject; import com.eclipsesource.json.JsonValue; @@ -56,11 +51,14 @@ public static Iterable getAll(final BoxAPIConnect * * @param api the API connection to be used by the resource. * @param folderID the ID of the folder to retrieve cascade policies for. - * @param ownerEnterpriseID the ID of the enterprise to retrieve Metadata Cascade Policies for. + * @param ownerEnterpriseID the ID of the enterprise to retrieve Metadata Cas cade Policies for. + * @param limit the number of entries for cascade policies to retrieve. + * @param fields optional fields to retrieve for cascade policies. * @return the Iterable of Box Metadata Cascade Policies in your enterprise. */ - public static Iterable getAll(final BoxAPIConnection api, String folderID, - String ownerEnterpriseID, int limit, String... fields) { + public static Iterable getAll(final BoxAPIConnection api, + String folderID, String ownerEnterpriseID, int limit, + String... fields) { QueryStringBuilder builder = new QueryStringBuilder(); if (ownerEnterpriseID != null) { @@ -132,10 +130,9 @@ public static BoxMetadataCascadePolicy.Info create(final BoxAPIConnection api, S * @param api the API connection to be used by the resource. * @param conflictResolution the desired behavior for conflict-resolution. Set to either none or overwrite. * @param cascadePolicyID the ID of the metadata cascade policy. - * @return information about the Metadata Cascade Policy. */ public static void forceApply(final BoxAPIConnection api, String conflictResolution, - String cascadePolicyID) { + String cascadePolicyID) { QueryStringBuilder builder = new QueryStringBuilder(); builder.appendParam("id", cascadePolicyID); @@ -157,7 +154,9 @@ public void delete() { BoxAPIResponse response = request.send(); } - + /** + * Contains information about a BoxMetadataCascadePolicy. + */ public class Info extends BoxResource.Info { private BoxEnterprise ownerEnterprise; private BoxFolder.Info parent; From c59df1b2fa598385050471ffb362bd496743391c Mon Sep 17 00:00:00 2001 From: carycheng Date: Tue, 7 Aug 2018 17:08:06 -0700 Subject: [PATCH 08/19] fixed from feedback --- doc/folders.md | 25 +++++++++++++------ .../java/com/box/sdk/BoxCollaboration.java | 2 +- .../com/box/sdk/BoxMetadataCascadePolicy.java | 6 +---- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/doc/folders.md b/doc/folders.md index 31bd8907b..c2e27121d 100644 --- a/doc/folders.md +++ b/doc/folders.md @@ -400,7 +400,10 @@ To set a metadata policy, which applies metadata values on a folder to new items with the api connection, scope, template key of the metadata template to be cascaded, and the ID of the folder to apply the policy to. ```java -BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = BoxMetadataCascadePolicy.create(api, 'folder-id', 'metadata-scope', 'example-template-key'); +String folderID = "22222"; +String scope = "enterprise"; +String templateKey = "myTemplate"; +BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = BoxMetadataCascadePolicy.create(api, folderID, scope, templateKey); ``` [create-policy]: @@ -412,7 +415,8 @@ To retrieve information about a specific metadata cascade policy, call [`getInfo()`][get-info] ```java -BoxMetadataCascadePolicy metadataCascadePolicy = new BoxMetadataCascadePolicy(api, 'cascade-policy-id'); +String cascadePolicyID = "1234"; +BoxMetadataCascadePolicy metadataCascadePolicy = new BoxMetadataCascadePolicy(api, cascadePolicyID); BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = metadataCascadePolicy.getInfo(); ``` @@ -425,16 +429,21 @@ To get a list of all cascade policies on a folder, which show the metadata templ items in the folder, call [`getAll(BoxAPIConnection api, String folderID)`][get-all] with the ID of the folder. ```java -BoxMetadataCascadePolicy.getAll(api, 'folder-id'); +String folderID = "2222"; +BoxMetadataCascadePolicy.getAll(api, folderID); ``` -You can also set the `owner_enterprise_id` option to retrieve only cascade policies owned by a specific enterprise(defaults to the current enterprise). +You can also call [`getAll(BoxAPIConnection api, String folderID, String enterpriseID, int limit)`][get-all-with-limit] +and set the `enterpriseID` option to retrieve only cascade policies owned by a specific enterprise(defaults to the current enterprise). ```java -BoxMetadataCascadePolicy.getAll(api, 'folder-id', 'owner-enterprise-id', 100); +String folderID = "2222"; +String enterpriseID = "1234"; +BoxMetadataCascadePolicy.getAll(api, folderID, enterpriseID, 100); ``` [get-all]: +[get-all-with-limit]: Force Apply Cascade Policy on Folder ------------------------------------ @@ -446,7 +455,8 @@ folder. Specifying a resolution value of `none` will preserve the existing value will overwrite values on items in the folder with the metadata value from the folder. ```java -BoxMetadataCascadePolicy.forceApply(api, 'none', 'cascade-policy-id'); +String cascadePolicyID = "1234"; +BoxMetadataCascadePolicy.forceApply(api, "none", cascadePolicyID); ``` [force-apply]: @@ -458,7 +468,8 @@ To remove a cascade policy and stop applying metadata from a folder to items in call [`delete()`][delete-cascade-policy]. ```java -BoxMetadataCascadePolicy policyToDelete = new BoxMetadataCascadePolicy(api, 'policy-id'); +String cascadePolicyID = "1234"; +BoxMetadataCascadePolicy policyToDelete = new BoxMetadataCascadePolicy(api, cascadePolicyID); policyToDelete.delete(); ``` diff --git a/src/main/java/com/box/sdk/BoxCollaboration.java b/src/main/java/com/box/sdk/BoxCollaboration.java index 4f7f9d51b..ed7c9076f 100644 --- a/src/main/java/com/box/sdk/BoxCollaboration.java +++ b/src/main/java/com/box/sdk/BoxCollaboration.java @@ -175,7 +175,7 @@ public void updateInfo(Info info) { } /** - * Deletes this collanboration. + * Deletes this collaboration. */ public void delete() { BoxAPIConnection api = this.getAPI(); diff --git a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java index da40e04de..e1e61ebe4 100644 --- a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java +++ b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java @@ -8,7 +8,6 @@ /** * Represents a Metadata Cascade Policy. */ -@BoxResourceType("") public class BoxMetadataCascadePolicy extends BoxResource { /** @@ -133,11 +132,8 @@ public static BoxMetadataCascadePolicy.Info create(final BoxAPIConnection api, S */ public static void forceApply(final BoxAPIConnection api, String conflictResolution, String cascadePolicyID) { - QueryStringBuilder builder = new QueryStringBuilder(); - builder.appendParam("id", cascadePolicyID); - URL url = GET_ALL_METADATA_CASCADE_POLICIES_URL_TEMPLATE.buildWithQuery(api.getBaseURL(), - builder.toString()); + URL url = GET_ALL_METADATA_CASCADE_POLICIES_URL_TEMPLATE.build(api.getBaseURL(), cascadePolicyID); BoxJSONRequest request = new BoxJSONRequest(api, url, "POST"); JsonObject requestJSON = new JsonObject() .add("conflict_resolution", conflictResolution); From 29d04734fdf83f618c44a5efbb94d23f3311708e Mon Sep 17 00:00:00 2001 From: carycheng Date: Tue, 14 Aug 2018 15:57:43 -0700 Subject: [PATCH 09/19] added return type for getAll() for cascade policies and changed forceApply() to nonstatic --- doc/folders.md | 2 +- src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/folders.md b/doc/folders.md index c2e27121d..e24bdbf27 100644 --- a/doc/folders.md +++ b/doc/folders.md @@ -439,7 +439,7 @@ and set the `enterpriseID` option to retrieve only cascade policies owned by a s ```java String folderID = "2222"; String enterpriseID = "1234"; -BoxMetadataCascadePolicy.getAll(api, folderID, enterpriseID, 100); +Iterator metadataCascadePolicies = BoxMetadataCascadePolicy.getAll(api, folderID, enterpriseID, 100); ``` [get-all]: diff --git a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java index e1e61ebe4..20e5469e2 100644 --- a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java +++ b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java @@ -130,11 +130,11 @@ public static BoxMetadataCascadePolicy.Info create(final BoxAPIConnection api, S * @param conflictResolution the desired behavior for conflict-resolution. Set to either none or overwrite. * @param cascadePolicyID the ID of the metadata cascade policy. */ - public static void forceApply(final BoxAPIConnection api, String conflictResolution, + public void forceApply(String conflictResolution, String cascadePolicyID) { - URL url = GET_ALL_METADATA_CASCADE_POLICIES_URL_TEMPLATE.build(api.getBaseURL(), cascadePolicyID); - BoxJSONRequest request = new BoxJSONRequest(api, url, "POST"); + URL url = GET_ALL_METADATA_CASCADE_POLICIES_URL_TEMPLATE.build(this.getAPI().getBaseURL(), cascadePolicyID); + BoxJSONRequest request = new BoxJSONRequest(this.getAPI(), url, "POST"); JsonObject requestJSON = new JsonObject() .add("conflict_resolution", conflictResolution); request.setBody(requestJSON.toString()); From 63f1920a99e19737304ca8ca0bc9914e01302f83 Mon Sep 17 00:00:00 2001 From: carycheng Date: Tue, 14 Aug 2018 16:01:45 -0700 Subject: [PATCH 10/19] added resource type for BoxMetadataCascadePolicy --- src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java | 5 ++--- src/test/java/com/box/sdk/BoxCollaborationTest.java | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java index 20e5469e2..f6813e41c 100644 --- a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java +++ b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java @@ -8,6 +8,7 @@ /** * Represents a Metadata Cascade Policy. */ +@BoxResourceType("metadata_cascade_policy") public class BoxMetadataCascadePolicy extends BoxResource { /** @@ -126,12 +127,10 @@ public static BoxMetadataCascadePolicy.Info create(final BoxAPIConnection api, S * If a policy already exists on a folder, this will apply that policy to all existing files and sub folders within * the target folder. * - * @param api the API connection to be used by the resource. * @param conflictResolution the desired behavior for conflict-resolution. Set to either none or overwrite. * @param cascadePolicyID the ID of the metadata cascade policy. */ - public void forceApply(String conflictResolution, - String cascadePolicyID) { + public void forceApply(String conflictResolution, String cascadePolicyID) { URL url = GET_ALL_METADATA_CASCADE_POLICIES_URL_TEMPLATE.build(this.getAPI().getBaseURL(), cascadePolicyID); BoxJSONRequest request = new BoxJSONRequest(this.getAPI(), url, "POST"); diff --git a/src/test/java/com/box/sdk/BoxCollaborationTest.java b/src/test/java/com/box/sdk/BoxCollaborationTest.java index 41bda7000..fe016323a 100644 --- a/src/test/java/com/box/sdk/BoxCollaborationTest.java +++ b/src/test/java/com/box/sdk/BoxCollaborationTest.java @@ -392,7 +392,7 @@ public void testCanViewPathSendsCorrectJson() throws IOException { info.setCanViewPath(canViewPathOn); collaboration.updateInfo(info); } - + @Test @Category(UnitTest.class) public void testGetAccessibleLoginSucceeds() throws IOException { From 05ed08541fa05507f48a36382612c59fdab129d7 Mon Sep 17 00:00:00 2001 From: carycheng Date: Thu, 16 Aug 2018 17:01:16 -0700 Subject: [PATCH 11/19] added convenience function on on folder for metadata cascade policy --- doc/folders.md | 28 +++++++++++++++++++----- src/main/java/com/box/sdk/BoxFolder.java | 14 ++++++++++++ 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/doc/folders.md b/doc/folders.md index e24bdbf27..d905ea0ff 100644 --- a/doc/folders.md +++ b/doc/folders.md @@ -406,7 +406,7 @@ String templateKey = "myTemplate"; BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = BoxMetadataCascadePolicy.create(api, folderID, scope, templateKey); ``` -[create-policy]: +[create-policy]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#create-com.box.sdk.BoxAPIConnection-java.lang.String-java.lang.String-java.lang.String Get a Cascade Policies Information ---------------------------------- @@ -420,7 +420,7 @@ BoxMetadataCascadePolicy metadataCascadePolicy = new BoxMetadataCascadePolicy(ap BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = metadataCascadePolicy.getInfo(); ``` -[get-info]: +[get-info]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#getInfo-- Get All Cascade Policies on Folder ---------------------------------- @@ -442,8 +442,8 @@ String enterpriseID = "1234"; Iterator metadataCascadePolicies = BoxMetadataCascadePolicy.getAll(api, folderID, enterpriseID, 100); ``` -[get-all]: -[get-all-with-limit]: +[get-all]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#getAll-com.box.sdk.BoxAPIConnection-java.lang.String- +[get-all-with-limit]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#getAll-com.box.sdk.BoxAPIConnection-java.lang.String-java.lang.String-int- Force Apply Cascade Policy on Folder ------------------------------------ @@ -459,7 +459,7 @@ String cascadePolicyID = "1234"; BoxMetadataCascadePolicy.forceApply(api, "none", cascadePolicyID); ``` -[force-apply]: +[force-apply]:http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#forceApply-com.box.sdk.BoxAPIConnection-java.lang.String-java.lang.String- Delete Cascade Policy --------------------- @@ -473,4 +473,20 @@ BoxMetadataCascadePolicy policyToDelete = new BoxMetadataCascadePolicy(api, casc policyToDelete.delete(); ``` -[delete-cascade-policy]: +[delete-cascade-policy]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#delete-- + +Add Cascade Policy on Folder +---------------------------- + +If you already have a Box folder object, you can add a Metadata Cascade Policy by using, +[`createCascadePolicyOnFolder()`][create-cascade-policy-on-folder]. + +```java +String scope = "global"; +String templateKey = "template"; +String folderId = "12345"; +BoxFolder folder = new BoxFolder(api, folderId); +BoxMetadataCascadePolicy.Info cascadePolicyInfo = folder.createCascadePolicyOnFolder(scope, template); +``` + +[create-cascade-policy-on-folder]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#createCascadePolicyOnFolder-java.lang.String-java.lang.String- diff --git a/src/main/java/com/box/sdk/BoxFolder.java b/src/main/java/com/box/sdk/BoxFolder.java index 3831ab3d7..dc7cdb90f 100644 --- a/src/main/java/com/box/sdk/BoxFolder.java +++ b/src/main/java/com/box/sdk/BoxFolder.java @@ -926,6 +926,20 @@ public BoxFile.Info uploadLargeFile(InputStream inputStream, String fileName, lo upload(this.getAPI(), this.getID(), inputStream, url, fileName, fileSize); } + /** + * Creates a new Metadata Cascade Policy on a folder. + * + * @param scope the scope of the metadata cascade policy. + * @param templateKey the key of the template. + * @return information about the Metadata Cascade Policy. + */ + public BoxMetadataCascadePolicy.Info createCascadePolicyOnFolder(String scope, String templateKey) { + BoxMetadataCascadePolicy.Info policyInfo = BoxMetadataCascadePolicy + .create(this.getAPI(), this.getID(), scope, templateKey); + + return policyInfo; + } + /** * Contains information about a BoxFolder. */ From 2e5c83388a3ffac6a4302672a722bf67f7339615 Mon Sep 17 00:00:00 2001 From: carycheng Date: Fri, 17 Aug 2018 13:33:57 -0700 Subject: [PATCH 12/19] fixed from feedback --- doc/folders.md | 44 ++++----- src/main/java/com/box/sdk/BoxFolder.java | 15 ++- .../com/box/sdk/BoxMetadataCascadePolicy.java | 8 +- .../box/sdk/BoxMetadataCascadePolicyTest.java | 93 +++++++++++++++++++ 4 files changed, 135 insertions(+), 25 deletions(-) diff --git a/doc/folders.md b/doc/folders.md index d905ea0ff..7a3caca26 100644 --- a/doc/folders.md +++ b/doc/folders.md @@ -396,19 +396,19 @@ Create Cascade Policy On Folder ------------------------------- To set a metadata policy, which applies metadata values on a folder to new items in the folder, call -[`create(BoxAPIConnection api, String folderID, String scope, String templateKey)`][create-policy] -with the api connection, scope, template key of the metadata template to be cascaded, and the ID of the folder to apply the policy to. +[`createCascadePolicy(String scope, String template)`][create-cascade-policy]. ```java -String folderID = "22222"; -String scope = "enterprise"; -String templateKey = "myTemplate"; -BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = BoxMetadataCascadePolicy.create(api, folderID, scope, templateKey); +String scope = "global"; +String templateKey = "template"; +String folderId = "12345"; +BoxFolder folder = new BoxFolder(api, folderId); +BoxMetadataCascadePolicy.Info cascadePolicyInfo = folder.createCascadePolicyOnFolder(scope, template); ``` -[create-policy]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#create-com.box.sdk.BoxAPIConnection-java.lang.String-java.lang.String-java.lang.String +[create-cascade-policy]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#createCascadePolicy-java.lang.String-java.lang.String- -Get a Cascade Policies Information +Get a Cascade Policy's Information ---------------------------------- To retrieve information about a specific metadata cascade policy, call @@ -426,23 +426,24 @@ Get All Cascade Policies on Folder ---------------------------------- To get a list of all cascade policies on a folder, which show the metadata templates that are being applied to all -items in the folder, call [`getAll(BoxAPIConnection api, String folderID)`][get-all] with the ID of the folder. +items in the folder, call [`getCascadePolicies()`][get-all] on that folder. ```java String folderID = "2222"; -BoxMetadataCascadePolicy.getAll(api, folderID); +BoxFolder folder = new BoxFolder(api, folderID); +Iterator metadataCascadePolicies = folder.getCascadePolicies().iterator(); ``` You can also call [`getAll(BoxAPIConnection api, String folderID, String enterpriseID, int limit)`][get-all-with-limit] -and set the `enterpriseID` option to retrieve only cascade policies owned by a specific enterprise(defaults to the current enterprise). +and set the `enterpriseID` option set to retrieve metadata cascade policies from another enterprise. ```java String folderID = "2222"; String enterpriseID = "1234"; -Iterator metadataCascadePolicies = BoxMetadataCascadePolicy.getAll(api, folderID, enterpriseID, 100); +Iterator metadataCascadePolicies = BoxMetadataCascadePolicy.getAll(api, folderID, enterpriseID, 100).iterator(); ``` -[get-all]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#getAll-com.box.sdk.BoxAPIConnection-java.lang.String- +[get-all]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#getCascadePolicies-- [get-all-with-limit]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#getAll-com.box.sdk.BoxAPIConnection-java.lang.String-java.lang.String-int- Force Apply Cascade Policy on Folder @@ -478,15 +479,16 @@ policyToDelete.delete(); Add Cascade Policy on Folder ---------------------------- -If you already have a Box folder object, you can add a Metadata Cascade Policy by using, -[`createCascadePolicyOnFolder()`][create-cascade-policy-on-folder]. +You can also set a metadata policy on a folder by calling +[`create(BoxAPIConnection api, String folderID, String scope, String templateKey)`][create-policy] +with the api connection, scope, template key of the metadata template to be cascaded, and the ID of the folder to apply the policy to. ```java -String scope = "global"; -String templateKey = "template"; -String folderId = "12345"; -BoxFolder folder = new BoxFolder(api, folderId); -BoxMetadataCascadePolicy.Info cascadePolicyInfo = folder.createCascadePolicyOnFolder(scope, template); +String folderID = "22222"; +String scope = "enterprise"; +String templateKey = "myTemplate"; +BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = BoxMetadataCascadePolicy.create(api, folderID, scope, templateKey); ``` -[create-cascade-policy-on-folder]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#createCascadePolicyOnFolder-java.lang.String-java.lang.String- +[create-policy]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#create-com.box.sdk.BoxAPIConnection-java.lang.String-java.lang.String-java.lang.String- + diff --git a/src/main/java/com/box/sdk/BoxFolder.java b/src/main/java/com/box/sdk/BoxFolder.java index dc7cdb90f..b8ae8fdcf 100644 --- a/src/main/java/com/box/sdk/BoxFolder.java +++ b/src/main/java/com/box/sdk/BoxFolder.java @@ -933,13 +933,26 @@ public BoxFile.Info uploadLargeFile(InputStream inputStream, String fileName, lo * @param templateKey the key of the template. * @return information about the Metadata Cascade Policy. */ - public BoxMetadataCascadePolicy.Info createCascadePolicyOnFolder(String scope, String templateKey) { + public BoxMetadataCascadePolicy.Info createCascadePolicy(String scope, String templateKey) { BoxMetadataCascadePolicy.Info policyInfo = BoxMetadataCascadePolicy .create(this.getAPI(), this.getID(), scope, templateKey); return policyInfo; } + /** + * Retrieves all Metadata Cascade Policies on a folder. + * + * @param fields optional fields to retrieve for cascade policies. + * @return the Iterable of Box Metadata Cascade Policies in your enterprise. + */ + public Iterable getCascadePolicies(String... fields) { + Iterable cascadePoliciesInfo = + BoxMetadataCascadePolicy.getAll(this.getAPI(), this.getID(), fields); + + return cascadePoliciesInfo; + } + /** * Contains information about a BoxFolder. */ diff --git a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java index f6813e41c..184c8b5c7 100644 --- a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java +++ b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java @@ -40,10 +40,12 @@ public BoxMetadataCascadePolicy(BoxAPIConnection api, String id) { * * @param api the API connection to be used by the resource. * @param folderID the ID of the folder to retrieve cascade policies for. + * @param fields optional fields to retrieve for cascade policies. * @return the Iterable of Box Metadata Cascade Policies in your enterprise. */ - public static Iterable getAll(final BoxAPIConnection api, String folderID) { - return getAll(api, folderID, null, DEFAULT_LIMIT); + public static Iterable getAll(final BoxAPIConnection api, + String folderID, String ... fields) { + return getAll(api, folderID, null, DEFAULT_LIMIT, fields); } /** @@ -51,7 +53,7 @@ public static Iterable getAll(final BoxAPIConnect * * @param api the API connection to be used by the resource. * @param folderID the ID of the folder to retrieve cascade policies for. - * @param ownerEnterpriseID the ID of the enterprise to retrieve Metadata Cas cade Policies for. + * @param ownerEnterpriseID the ID of the enterprise to retrieve Metadata Cascade Policies for. * @param limit the number of entries for cascade policies to retrieve. * @param fields optional fields to retrieve for cascade policies. * @return the Iterable of Box Metadata Cascade Policies in your enterprise. diff --git a/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java b/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java index 3f84a26ff..fceb7e155 100644 --- a/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java +++ b/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java @@ -52,6 +52,35 @@ public void testCreateMetadataCascadePolicySucceedsSendsCorrectJson() throws IOE Assert.assertEquals(templateKey, metadataCascadePolicyInfo.getTemplateKey()); } + @Test + @Category(UnitTest.class) + public void testAddMetadataCascadePolicySucceedsSendsCorrectJson() throws IOException { + String result = ""; + final String cascadePolicyURL = "/metadata_cascade_policies"; + final String folderID = "22222"; + final String scope = "enterprise_11111"; + final String templateKey = "testTemplate"; + JsonObject cascadeObject = new JsonObject() + .add("folder_id", folderID) + .add("scope", scope) + .add("templateKey", templateKey); + + result = TestConfig.getFixture("BoxMetadataCascadePolicy/CreateMetadataCascadePolicies201"); + + WIRE_MOCK_CLASS_RULE.stubFor(WireMock.post(WireMock.urlPathEqualTo(cascadePolicyURL)) + .withRequestBody(WireMock.equalToJson(cascadeObject.toString())) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(result))); + + BoxFolder folder = new BoxFolder(this.api, folderID); + BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = folder.createCascadePolicy(scope, templateKey); + + Assert.assertEquals(folderID, metadataCascadePolicyInfo.getParent().getID()); + Assert.assertEquals(scope, metadataCascadePolicyInfo.getScope()); + Assert.assertEquals(templateKey, metadataCascadePolicyInfo.getTemplateKey()); + } + @Test @Category(UnitTest.class) public void testGetAllMetadataCascadePoliciesSucceeds() throws IOException { @@ -82,6 +111,70 @@ public void testGetAllMetadataCascadePoliciesSucceeds() throws IOException { Assert.assertEquals(templateKey, firstCascadePolicy.getTemplateKey()); } + @Test + @Category(UnitTest.class) + public void testGetAllMetadataCascadePoliciesOnFolderSucceeds() throws IOException { + String result = ""; + final String folderID = "22222"; + final String cascadePolicyID = "84113349-794d-445c-b93c-d8481b223434"; + final String enterpriseID = "11111"; + final String scope = "enterprise_11111"; + final String templateKey = "testTemplate"; + final String cascadePoliciesURL = "/metadata_cascade_policies"; + + result = TestConfig.getFixture("BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200"); + + WIRE_MOCK_CLASS_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo(cascadePoliciesURL)) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(result))); + + BoxFolder folder = new BoxFolder(this.api, folderID); + Iterator metadataCascadePolicies = folder + .getCascadePolicies().iterator(); + + BoxMetadataCascadePolicy.Info firstCascadePolicy = metadataCascadePolicies.next(); + + Assert.assertEquals(folderID, firstCascadePolicy.getParent().getID()); + Assert.assertEquals(cascadePolicyID, firstCascadePolicy.getID()); + Assert.assertEquals(enterpriseID, firstCascadePolicy.getOwnerEnterprise().getID()); + Assert.assertEquals(scope, firstCascadePolicy.getScope()); + Assert.assertEquals(templateKey, firstCascadePolicy.getTemplateKey()); + } + + @Test + @Category(UnitTest.class) + public void testGetAllMetadataCascadePoliciesOnFolderWithFieldsSucceeds() throws IOException { + String result = ""; + final String folderID = "22222"; + final String cascadePolicyID = "84113349-794d-445c-b93c-d8481b223434"; + final String enterpriseID = "11111"; + final String scope = "enterprise_11111"; + final String templateKey = "testTemplate"; + final String cascadePoliciesURL = "/metadata_cascade_policies"; + + result = TestConfig.getFixture("BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200"); + + WIRE_MOCK_CLASS_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo(cascadePoliciesURL)) + .withQueryParam("fields", WireMock.containing("owner_enterprise")) + .withQueryParam("fields", WireMock.containing("scope")) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(result))); + + BoxFolder folder = new BoxFolder(this.api, folderID); + Iterator metadataCascadePolicies = folder + .getCascadePolicies("owner_enterprise", "scope").iterator(); + + BoxMetadataCascadePolicy.Info firstCascadePolicy = metadataCascadePolicies.next(); + + Assert.assertEquals(folderID, firstCascadePolicy.getParent().getID()); + Assert.assertEquals(cascadePolicyID, firstCascadePolicy.getID()); + Assert.assertEquals(enterpriseID, firstCascadePolicy.getOwnerEnterprise().getID()); + Assert.assertEquals(scope, firstCascadePolicy.getScope()); + Assert.assertEquals(templateKey, firstCascadePolicy.getTemplateKey()); + } + @Test @Category(UnitTest.class) public void testGetAMetadataCascadePolicySucceeds() throws IOException { From eee67d09c46bb967d9d58c8ba628786c6833809d Mon Sep 17 00:00:00 2001 From: carycheng Date: Wed, 22 Aug 2018 15:28:02 -0700 Subject: [PATCH 13/19] fixed docs from feedback and moved tests --- doc/folders.md | 35 +++---- src/test/java/com/box/sdk/BoxFolderTest.java | 93 +++++++++++++++++++ .../box/sdk/BoxMetadataCascadePolicyTest.java | 93 ------------------- 3 files changed, 106 insertions(+), 115 deletions(-) diff --git a/doc/folders.md b/doc/folders.md index 7a3caca26..dc94dda6e 100644 --- a/doc/folders.md +++ b/doc/folders.md @@ -396,17 +396,17 @@ Create Cascade Policy On Folder ------------------------------- To set a metadata policy, which applies metadata values on a folder to new items in the folder, call -[`createCascadePolicy(String scope, String template)`][create-cascade-policy]. +[`BoxFolder.createCascadePolicy(String scope, String template)`][create-cascade-policy-on-folder]. ```java String scope = "global"; String templateKey = "template"; String folderId = "12345"; BoxFolder folder = new BoxFolder(api, folderId); -BoxMetadataCascadePolicy.Info cascadePolicyInfo = folder.createCascadePolicyOnFolder(scope, template); +BoxMetadataCascadePolicy.Info cascadePolicyInfo = folder.createCascadePolicy(scope, template); ``` -[create-cascade-policy]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#createCascadePolicy-java.lang.String-java.lang.String- +[create-cascade-policy-on-folder]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#createCascadePolicy-java.lang.String-java.lang.String- Get a Cascade Policy's Information ---------------------------------- @@ -426,21 +426,27 @@ Get All Cascade Policies on Folder ---------------------------------- To get a list of all cascade policies on a folder, which show the metadata templates that are being applied to all -items in the folder, call [`getCascadePolicies()`][get-all] on that folder. +items in the folder, call [`BoxFolder.getCascadePolicies()`][get-all] on that folder. ```java String folderID = "2222"; BoxFolder folder = new BoxFolder(api, folderID); -Iterator metadataCascadePolicies = folder.getCascadePolicies().iterator(); +Iterable metadataCascadePolicies = folder.getCascadePolicies(); +for (BoxMetadataCascadePolicy.Info policyInfo : metadataCascadePolicies) { + // take action on policy here +} ``` You can also call [`getAll(BoxAPIConnection api, String folderID, String enterpriseID, int limit)`][get-all-with-limit] -and set the `enterpriseID` option set to retrieve metadata cascade policies from another enterprise. +and set the `enterpriseID` option to retrieve metadata cascade policies from another enterprise. ```java String folderID = "2222"; String enterpriseID = "1234"; -Iterator metadataCascadePolicies = BoxMetadataCascadePolicy.getAll(api, folderID, enterpriseID, 100).iterator(); +Iterable metadataCascadePolicies = BoxMetadataCascadePolicy.getAll(api, folderID, enterpriseID, 100); +for (BoxMetadataCascadePolicy.Info policyInfo : metadataCascadePolicies) { + // take action on polcy here +} ``` [get-all]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#getCascadePolicies-- @@ -476,19 +482,4 @@ policyToDelete.delete(); [delete-cascade-policy]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#delete-- -Add Cascade Policy on Folder ----------------------------- - -You can also set a metadata policy on a folder by calling -[`create(BoxAPIConnection api, String folderID, String scope, String templateKey)`][create-policy] -with the api connection, scope, template key of the metadata template to be cascaded, and the ID of the folder to apply the policy to. - -```java -String folderID = "22222"; -String scope = "enterprise"; -String templateKey = "myTemplate"; -BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = BoxMetadataCascadePolicy.create(api, folderID, scope, templateKey); -``` - -[create-policy]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#create-com.box.sdk.BoxAPIConnection-java.lang.String-java.lang.String-java.lang.String- diff --git a/src/test/java/com/box/sdk/BoxFolderTest.java b/src/test/java/com/box/sdk/BoxFolderTest.java index 784ff1b8a..c6bb9d484 100644 --- a/src/test/java/com/box/sdk/BoxFolderTest.java +++ b/src/test/java/com/box/sdk/BoxFolderTest.java @@ -944,6 +944,99 @@ public void testGetAllMetadataSucceeds() throws IOException { Assert.assertEquals(scope, metadata.getScope()); } + @Test + @Category(UnitTest.class) + public void testAddMetadataCascadePolicySucceedsSendsCorrectJson() throws IOException { + String result = ""; + final String cascadePolicyURL = "/metadata_cascade_policies"; + final String folderID = "22222"; + final String scope = "enterprise_11111"; + final String templateKey = "testTemplate"; + JsonObject cascadeObject = new JsonObject() + .add("folder_id", folderID) + .add("scope", scope) + .add("templateKey", templateKey); + + result = TestConfig.getFixture("BoxMetadataCascadePolicy/CreateMetadataCascadePolicies201"); + + WIRE_MOCK_CLASS_RULE.stubFor(WireMock.post(WireMock.urlPathEqualTo(cascadePolicyURL)) + .withRequestBody(WireMock.equalToJson(cascadeObject.toString())) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(result))); + + BoxFolder folder = new BoxFolder(this.api, folderID); + BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = folder.createCascadePolicy(scope, templateKey); + + Assert.assertEquals(folderID, metadataCascadePolicyInfo.getParent().getID()); + Assert.assertEquals(scope, metadataCascadePolicyInfo.getScope()); + Assert.assertEquals(templateKey, metadataCascadePolicyInfo.getTemplateKey()); + } + + @Test + @Category(UnitTest.class) + public void testGetAllMetadataCascadePoliciesOnFolderSucceeds() throws IOException { + String result = ""; + final String folderID = "22222"; + final String cascadePolicyID = "84113349-794d-445c-b93c-d8481b223434"; + final String enterpriseID = "11111"; + final String scope = "enterprise_11111"; + final String templateKey = "testTemplate"; + final String cascadePoliciesURL = "/metadata_cascade_policies"; + + result = TestConfig.getFixture("BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200"); + + WIRE_MOCK_CLASS_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo(cascadePoliciesURL)) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(result))); + + BoxFolder folder = new BoxFolder(this.api, folderID); + Iterator metadataCascadePolicies = folder + .getCascadePolicies().iterator(); + + BoxMetadataCascadePolicy.Info firstCascadePolicy = metadataCascadePolicies.next(); + + Assert.assertEquals(folderID, firstCascadePolicy.getParent().getID()); + Assert.assertEquals(cascadePolicyID, firstCascadePolicy.getID()); + Assert.assertEquals(enterpriseID, firstCascadePolicy.getOwnerEnterprise().getID()); + Assert.assertEquals(scope, firstCascadePolicy.getScope()); + Assert.assertEquals(templateKey, firstCascadePolicy.getTemplateKey()); + } + + @Test + @Category(UnitTest.class) + public void testGetAllMetadataCascadePoliciesOnFolderWithFieldsSucceeds() throws IOException { + String result = ""; + final String folderID = "22222"; + final String cascadePolicyID = "84113349-794d-445c-b93c-d8481b223434"; + final String enterpriseID = "11111"; + final String scope = "enterprise_11111"; + final String templateKey = "testTemplate"; + final String cascadePoliciesURL = "/metadata_cascade_policies"; + + result = TestConfig.getFixture("BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200"); + + WIRE_MOCK_CLASS_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo(cascadePoliciesURL)) + .withQueryParam("fields", WireMock.containing("owner_enterprise")) + .withQueryParam("fields", WireMock.containing("scope")) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(result))); + + BoxFolder folder = new BoxFolder(this.api, folderID); + Iterator metadataCascadePolicies = folder + .getCascadePolicies("owner_enterprise", "scope").iterator(); + + BoxMetadataCascadePolicy.Info firstCascadePolicy = metadataCascadePolicies.next(); + + Assert.assertEquals(folderID, firstCascadePolicy.getParent().getID()); + Assert.assertEquals(cascadePolicyID, firstCascadePolicy.getID()); + Assert.assertEquals(enterpriseID, firstCascadePolicy.getOwnerEnterprise().getID()); + Assert.assertEquals(scope, firstCascadePolicy.getScope()); + Assert.assertEquals(templateKey, firstCascadePolicy.getTemplateKey()); + } + @Test @Category(UnitTest.class) public void createSharedLinkSucceeds() throws IOException { diff --git a/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java b/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java index fceb7e155..3f84a26ff 100644 --- a/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java +++ b/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java @@ -52,35 +52,6 @@ public void testCreateMetadataCascadePolicySucceedsSendsCorrectJson() throws IOE Assert.assertEquals(templateKey, metadataCascadePolicyInfo.getTemplateKey()); } - @Test - @Category(UnitTest.class) - public void testAddMetadataCascadePolicySucceedsSendsCorrectJson() throws IOException { - String result = ""; - final String cascadePolicyURL = "/metadata_cascade_policies"; - final String folderID = "22222"; - final String scope = "enterprise_11111"; - final String templateKey = "testTemplate"; - JsonObject cascadeObject = new JsonObject() - .add("folder_id", folderID) - .add("scope", scope) - .add("templateKey", templateKey); - - result = TestConfig.getFixture("BoxMetadataCascadePolicy/CreateMetadataCascadePolicies201"); - - WIRE_MOCK_CLASS_RULE.stubFor(WireMock.post(WireMock.urlPathEqualTo(cascadePolicyURL)) - .withRequestBody(WireMock.equalToJson(cascadeObject.toString())) - .willReturn(WireMock.aResponse() - .withHeader("Content-Type", "application/json") - .withBody(result))); - - BoxFolder folder = new BoxFolder(this.api, folderID); - BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = folder.createCascadePolicy(scope, templateKey); - - Assert.assertEquals(folderID, metadataCascadePolicyInfo.getParent().getID()); - Assert.assertEquals(scope, metadataCascadePolicyInfo.getScope()); - Assert.assertEquals(templateKey, metadataCascadePolicyInfo.getTemplateKey()); - } - @Test @Category(UnitTest.class) public void testGetAllMetadataCascadePoliciesSucceeds() throws IOException { @@ -111,70 +82,6 @@ public void testGetAllMetadataCascadePoliciesSucceeds() throws IOException { Assert.assertEquals(templateKey, firstCascadePolicy.getTemplateKey()); } - @Test - @Category(UnitTest.class) - public void testGetAllMetadataCascadePoliciesOnFolderSucceeds() throws IOException { - String result = ""; - final String folderID = "22222"; - final String cascadePolicyID = "84113349-794d-445c-b93c-d8481b223434"; - final String enterpriseID = "11111"; - final String scope = "enterprise_11111"; - final String templateKey = "testTemplate"; - final String cascadePoliciesURL = "/metadata_cascade_policies"; - - result = TestConfig.getFixture("BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200"); - - WIRE_MOCK_CLASS_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo(cascadePoliciesURL)) - .willReturn(WireMock.aResponse() - .withHeader("Content-Type", "application/json") - .withBody(result))); - - BoxFolder folder = new BoxFolder(this.api, folderID); - Iterator metadataCascadePolicies = folder - .getCascadePolicies().iterator(); - - BoxMetadataCascadePolicy.Info firstCascadePolicy = metadataCascadePolicies.next(); - - Assert.assertEquals(folderID, firstCascadePolicy.getParent().getID()); - Assert.assertEquals(cascadePolicyID, firstCascadePolicy.getID()); - Assert.assertEquals(enterpriseID, firstCascadePolicy.getOwnerEnterprise().getID()); - Assert.assertEquals(scope, firstCascadePolicy.getScope()); - Assert.assertEquals(templateKey, firstCascadePolicy.getTemplateKey()); - } - - @Test - @Category(UnitTest.class) - public void testGetAllMetadataCascadePoliciesOnFolderWithFieldsSucceeds() throws IOException { - String result = ""; - final String folderID = "22222"; - final String cascadePolicyID = "84113349-794d-445c-b93c-d8481b223434"; - final String enterpriseID = "11111"; - final String scope = "enterprise_11111"; - final String templateKey = "testTemplate"; - final String cascadePoliciesURL = "/metadata_cascade_policies"; - - result = TestConfig.getFixture("BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200"); - - WIRE_MOCK_CLASS_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo(cascadePoliciesURL)) - .withQueryParam("fields", WireMock.containing("owner_enterprise")) - .withQueryParam("fields", WireMock.containing("scope")) - .willReturn(WireMock.aResponse() - .withHeader("Content-Type", "application/json") - .withBody(result))); - - BoxFolder folder = new BoxFolder(this.api, folderID); - Iterator metadataCascadePolicies = folder - .getCascadePolicies("owner_enterprise", "scope").iterator(); - - BoxMetadataCascadePolicy.Info firstCascadePolicy = metadataCascadePolicies.next(); - - Assert.assertEquals(folderID, firstCascadePolicy.getParent().getID()); - Assert.assertEquals(cascadePolicyID, firstCascadePolicy.getID()); - Assert.assertEquals(enterpriseID, firstCascadePolicy.getOwnerEnterprise().getID()); - Assert.assertEquals(scope, firstCascadePolicy.getScope()); - Assert.assertEquals(templateKey, firstCascadePolicy.getTemplateKey()); - } - @Test @Category(UnitTest.class) public void testGetAMetadataCascadePolicySucceeds() throws IOException { From 7d8d42d0af9901757242961af304ae33503f84c7 Mon Sep 17 00:00:00 2001 From: carycheng Date: Thu, 23 Aug 2018 11:40:03 -0700 Subject: [PATCH 14/19] fixed from feedback --- doc/folders.md | 11 ++--- src/main/java/com/box/sdk/BoxFolder.java | 16 +++++++ .../com/box/sdk/BoxMetadataCascadePolicy.java | 12 +++-- src/test/java/com/box/sdk/BoxFolderTest.java | 44 +++++++++++++++++-- .../box/sdk/BoxMetadataCascadePolicyTest.java | 12 ++--- 5 files changed, 79 insertions(+), 16 deletions(-) diff --git a/doc/folders.md b/doc/folders.md index dc94dda6e..807fb6e8f 100644 --- a/doc/folders.md +++ b/doc/folders.md @@ -426,7 +426,7 @@ Get All Cascade Policies on Folder ---------------------------------- To get a list of all cascade policies on a folder, which show the metadata templates that are being applied to all -items in the folder, call [`BoxFolder.getCascadePolicies()`][get-all] on that folder. +items in the folder, call [`getCascadePolicies()`][get-all] on that folder. ```java String folderID = "2222"; @@ -462,11 +462,12 @@ folder. Specifying a resolution value of `none` will preserve the existing value will overwrite values on items in the folder with the metadata value from the folder. ```java -String cascadePolicyID = "1234"; -BoxMetadataCascadePolicy.forceApply(api, "none", cascadePolicyID); +String cascadePolicyID = "e4392a41-7de5-4232-bdf7-15e0d6bba067"; +BoxMetadataCascadePolicy policy = new BoxMetadataCascadePolicy(api, cascadePolicyID); +policy.forceApply(api, "none"); ``` -[force-apply]:http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#forceApply-com.box.sdk.BoxAPIConnection-java.lang.String-java.lang.String- +[force-apply]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#forceApply-com.box.sdk.BoxAPIConnection-java.lang.String-java.lang.String- Delete Cascade Policy --------------------- @@ -475,7 +476,7 @@ To remove a cascade policy and stop applying metadata from a folder to items in call [`delete()`][delete-cascade-policy]. ```java -String cascadePolicyID = "1234"; +String cascadePolicyID = "e4392a41-7de5-4232-bdf7-15e0d6bba067"; BoxMetadataCascadePolicy policyToDelete = new BoxMetadataCascadePolicy(api, cascadePolicyID); policyToDelete.delete(); ``` diff --git a/src/main/java/com/box/sdk/BoxFolder.java b/src/main/java/com/box/sdk/BoxFolder.java index b8ae8fdcf..06a3aa9f4 100644 --- a/src/main/java/com/box/sdk/BoxFolder.java +++ b/src/main/java/com/box/sdk/BoxFolder.java @@ -953,6 +953,22 @@ public Iterable getCascadePolicies(String... fiel return cascadePoliciesInfo; } + /** + * Retrieves all Metadata Cascade Policies on a folder. + * + * @param enterpriseID the ID of the enterprise to retrieve cascade policies for. + * @param limit the number of entries of cascade policies to retrieve. + * @param fields optional fields to retrieve for cascade policies. + * @return the Iterable of Box Metadata Cascade Policies in your enterprise. + */ + public Iterable getCascadePolicies(String enterpriseID, + int limit, String... fields) { + Iterable cascadePoliciesInfo = + BoxMetadataCascadePolicy.getAll(this.getAPI(), this.getID(), enterpriseID, limit, fields); + + return cascadePoliciesInfo; + } + /** * Contains information about a BoxFolder. */ diff --git a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java index 184c8b5c7..a91ab638b 100644 --- a/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java +++ b/src/main/java/com/box/sdk/BoxMetadataCascadePolicy.java @@ -23,6 +23,12 @@ public class BoxMetadataCascadePolicy extends BoxResource { public static final URLTemplate METADATA_CASCADE_POLICIES_URL_TEMPLATE = new URLTemplate("metadata_cascade_policies/%s"); + /** + * Force Metadata Cascade Policies URL. + */ + public static final URLTemplate FORCE_METADATA_CASCADE_POLICIES_URL_TEMPLATE = + new URLTemplate("metadata_cascade_policies/%s/apply"); + private static final int DEFAULT_LIMIT = 100; /** @@ -63,6 +69,7 @@ public static Iterable getAll(final BoxAPIConnect String... fields) { QueryStringBuilder builder = new QueryStringBuilder(); + builder.appendParam("folder_id", folderID); if (ownerEnterpriseID != null) { builder.appendParam("owner_enterprise_id", ownerEnterpriseID); } @@ -130,11 +137,10 @@ public static BoxMetadataCascadePolicy.Info create(final BoxAPIConnection api, S * the target folder. * * @param conflictResolution the desired behavior for conflict-resolution. Set to either none or overwrite. - * @param cascadePolicyID the ID of the metadata cascade policy. */ - public void forceApply(String conflictResolution, String cascadePolicyID) { + public void forceApply(String conflictResolution) { - URL url = GET_ALL_METADATA_CASCADE_POLICIES_URL_TEMPLATE.build(this.getAPI().getBaseURL(), cascadePolicyID); + URL url = FORCE_METADATA_CASCADE_POLICIES_URL_TEMPLATE.build(this.getAPI().getBaseURL(), this.getID()); BoxJSONRequest request = new BoxJSONRequest(this.getAPI(), url, "POST"); JsonObject requestJSON = new JsonObject() .add("conflict_resolution", conflictResolution); diff --git a/src/test/java/com/box/sdk/BoxFolderTest.java b/src/test/java/com/box/sdk/BoxFolderTest.java index c6bb9d484..d2e580f0b 100644 --- a/src/test/java/com/box/sdk/BoxFolderTest.java +++ b/src/test/java/com/box/sdk/BoxFolderTest.java @@ -987,6 +987,7 @@ public void testGetAllMetadataCascadePoliciesOnFolderSucceeds() throws IOExcepti result = TestConfig.getFixture("BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200"); WIRE_MOCK_CLASS_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo(cascadePoliciesURL)) + .withQueryParam("folder_id", WireMock.equalTo(folderID)) .willReturn(WireMock.aResponse() .withHeader("Content-Type", "application/json") .withBody(result))); @@ -1018,15 +1019,52 @@ public void testGetAllMetadataCascadePoliciesOnFolderWithFieldsSucceeds() throws result = TestConfig.getFixture("BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200"); WIRE_MOCK_CLASS_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo(cascadePoliciesURL)) - .withQueryParam("fields", WireMock.containing("owner_enterprise")) - .withQueryParam("fields", WireMock.containing("scope")) + .withQueryParam("folder_id", WireMock.equalTo(folderID)) + .withQueryParam("fields", WireMock.equalTo("owner_enterprise")) + .withQueryParam("limit", WireMock.equalTo("100")) .willReturn(WireMock.aResponse() .withHeader("Content-Type", "application/json") .withBody(result))); BoxFolder folder = new BoxFolder(this.api, folderID); Iterator metadataCascadePolicies = folder - .getCascadePolicies("owner_enterprise", "scope").iterator(); + .getCascadePolicies("owner_enterprise").iterator(); + + BoxMetadataCascadePolicy.Info firstCascadePolicy = metadataCascadePolicies.next(); + + Assert.assertEquals(folderID, firstCascadePolicy.getParent().getID()); + Assert.assertEquals(cascadePolicyID, firstCascadePolicy.getID()); + Assert.assertEquals(enterpriseID, firstCascadePolicy.getOwnerEnterprise().getID()); + Assert.assertEquals(scope, firstCascadePolicy.getScope()); + Assert.assertEquals(templateKey, firstCascadePolicy.getTemplateKey()); + } + + @Test + @Category(UnitTest.class) + public void testGetAllMetadataCascadePoliciesWithEnterpriseIDSucceeds() throws IOException { + String result = ""; + final String folderID = "22222"; + final String cascadePolicyID = "84113349-794d-445c-b93c-d8481b223434"; + final String enterpriseID = "11111"; + final String scope = "enterprise_11111"; + final String templateKey = "testTemplate"; + final int limit = 100; + final String cascadePoliciesURL = "/metadata_cascade_policies"; + + result = TestConfig.getFixture("BoxMetadataCascadePolicy/GetAllMetadataCascadePolicies200"); + + WIRE_MOCK_CLASS_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo(cascadePoliciesURL)) + .withQueryParam("folder_id", WireMock.equalTo(folderID)) + .withQueryParam("owner_enterprise_id", WireMock.equalTo(enterpriseID)) + .withQueryParam("fields", WireMock.equalTo("owner_enterprise")) + .withQueryParam("limit", WireMock.equalTo("100")) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(result))); + + BoxFolder folder = new BoxFolder(this.api, folderID); + Iterator metadataCascadePolicies = folder + .getCascadePolicies(enterpriseID, limit, "owner_enterprise").iterator(); BoxMetadataCascadePolicy.Info firstCascadePolicy = metadataCascadePolicies.next(); diff --git a/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java b/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java index 3f84a26ff..4c539169d 100644 --- a/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java +++ b/src/test/java/com/box/sdk/BoxMetadataCascadePolicyTest.java @@ -111,20 +111,22 @@ public void testGetAMetadataCascadePolicySucceeds() throws IOException { @Test @Category(UnitTest.class) - public void testForceApplyMetadataCascadePolicySucceedsAndSendsCorrectJson() { + public void testForceApplyMetadataCascadePolicySucceedsAndSendsCorrectJson() throws IOException { final String conflictResolution = "none"; - final String cascadePolicyID = "12345"; - final String forceApplyURL = "/metadata_cascade_policies/" + cascadePolicyID; + final String cascadePolicyID = "84113349-794d-445c-b93c-d8481b223434"; + final String forceApplyURL = "/metadata_cascade_policies/" + cascadePolicyID + "/apply"; JsonObject policyObject = new JsonObject() .add("conflict_resolution", conflictResolution); - WIRE_MOCK_CLASS_RULE.stubFor(WireMock.get(WireMock.urlPathEqualTo(forceApplyURL)) - .withQueryParam("id", WireMock.containing(cascadePolicyID)) + WIRE_MOCK_CLASS_RULE.stubFor(WireMock.post(WireMock.urlPathEqualTo(forceApplyURL)) .withRequestBody(WireMock.equalToJson(policyObject.toString())) .willReturn(WireMock.aResponse() .withHeader("Content-Type", "application/json") .withStatus(202))); + + BoxMetadataCascadePolicy metadataCascadePolicy = new BoxMetadataCascadePolicy(this.api, cascadePolicyID); + metadataCascadePolicy.forceApply(conflictResolution); } @Test From ab7fb99f8a6086806412bb61f39ca82e320a968c Mon Sep 17 00:00:00 2001 From: carycheng Date: Thu, 23 Aug 2018 14:34:49 -0700 Subject: [PATCH 15/19] fixed from feedback --- src/main/java/com/box/sdk/BoxFolder.java | 6 ++---- src/test/java/com/box/sdk/BoxFolderTest.java | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/box/sdk/BoxFolder.java b/src/main/java/com/box/sdk/BoxFolder.java index 06a3aa9f4..624c7028d 100644 --- a/src/main/java/com/box/sdk/BoxFolder.java +++ b/src/main/java/com/box/sdk/BoxFolder.java @@ -933,11 +933,9 @@ public BoxFile.Info uploadLargeFile(InputStream inputStream, String fileName, lo * @param templateKey the key of the template. * @return information about the Metadata Cascade Policy. */ - public BoxMetadataCascadePolicy.Info createCascadePolicy(String scope, String templateKey) { - BoxMetadataCascadePolicy.Info policyInfo = BoxMetadataCascadePolicy - .create(this.getAPI(), this.getID(), scope, templateKey); + public BoxMetadataCascadePolicy.Info addMetadataCascadePolicy(String scope, String templateKey) { - return policyInfo; + return BoxMetadataCascadePolicy.create(this.getAPI(), this.getID(), scope, templateKey); } /** diff --git a/src/test/java/com/box/sdk/BoxFolderTest.java b/src/test/java/com/box/sdk/BoxFolderTest.java index d2e580f0b..d179446df 100644 --- a/src/test/java/com/box/sdk/BoxFolderTest.java +++ b/src/test/java/com/box/sdk/BoxFolderTest.java @@ -966,7 +966,7 @@ public void testAddMetadataCascadePolicySucceedsSendsCorrectJson() throws IOExce .withBody(result))); BoxFolder folder = new BoxFolder(this.api, folderID); - BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = folder.createCascadePolicy(scope, templateKey); + BoxMetadataCascadePolicy.Info metadataCascadePolicyInfo = folder.addMetadataCascadePolicy(scope, templateKey); Assert.assertEquals(folderID, metadataCascadePolicyInfo.getParent().getID()); Assert.assertEquals(scope, metadataCascadePolicyInfo.getScope()); From caf64f8900e7766ec769d1b452a0181fc1301a3a Mon Sep 17 00:00:00 2001 From: carycheng Date: Thu, 23 Aug 2018 14:36:19 -0700 Subject: [PATCH 16/19] fixed docs naming for create cascade policy --- doc/folders.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/folders.md b/doc/folders.md index 807fb6e8f..d3c740e0d 100644 --- a/doc/folders.md +++ b/doc/folders.md @@ -396,17 +396,17 @@ Create Cascade Policy On Folder ------------------------------- To set a metadata policy, which applies metadata values on a folder to new items in the folder, call -[`BoxFolder.createCascadePolicy(String scope, String template)`][create-cascade-policy-on-folder]. +[`BoxFolder.addMetadataCascadePolicy(String scope, String template)`][create-cascade-policy-on-folder]. ```java String scope = "global"; String templateKey = "template"; String folderId = "12345"; BoxFolder folder = new BoxFolder(api, folderId); -BoxMetadataCascadePolicy.Info cascadePolicyInfo = folder.createCascadePolicy(scope, template); +BoxMetadataCascadePolicy.Info cascadePolicyInfo = folder.addMetadataCascadePolicy(scope, template); ``` -[create-cascade-policy-on-folder]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#createCascadePolicy-java.lang.String-java.lang.String- +[create-cascade-policy-on-folder]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#addMetadataCascadePolicy-java.lang.String-java.lang.String- Get a Cascade Policy's Information ---------------------------------- From eedbb8e47a8f209260912fe6f6fdeaccad6bb8e3 Mon Sep 17 00:00:00 2001 From: carycheng Date: Thu, 23 Aug 2018 14:58:37 -0700 Subject: [PATCH 17/19] renaming metadata casacade policies in folder to be more clear --- doc/folders.md | 6 +++--- src/main/java/com/box/sdk/BoxFolder.java | 4 ++-- src/test/java/com/box/sdk/BoxFolderTest.java | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/folders.md b/doc/folders.md index d3c740e0d..67394fabc 100644 --- a/doc/folders.md +++ b/doc/folders.md @@ -426,12 +426,12 @@ Get All Cascade Policies on Folder ---------------------------------- To get a list of all cascade policies on a folder, which show the metadata templates that are being applied to all -items in the folder, call [`getCascadePolicies()`][get-all] on that folder. +items in the folder, call [`getMetadataCascadePolicies()`][get-all] on that folder. ```java String folderID = "2222"; BoxFolder folder = new BoxFolder(api, folderID); -Iterable metadataCascadePolicies = folder.getCascadePolicies(); +Iterable metadataCascadePolicies = folder.getMetadataCascadePolicies(); for (BoxMetadataCascadePolicy.Info policyInfo : metadataCascadePolicies) { // take action on policy here } @@ -449,7 +449,7 @@ for (BoxMetadataCascadePolicy.Info policyInfo : metadataCascadePolicies) { } ``` -[get-all]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#getCascadePolicies-- +[get-all]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#getMetadataCascadePolicies-- [get-all-with-limit]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#getAll-com.box.sdk.BoxAPIConnection-java.lang.String-java.lang.String-int- Force Apply Cascade Policy on Folder diff --git a/src/main/java/com/box/sdk/BoxFolder.java b/src/main/java/com/box/sdk/BoxFolder.java index 624c7028d..7e6143061 100644 --- a/src/main/java/com/box/sdk/BoxFolder.java +++ b/src/main/java/com/box/sdk/BoxFolder.java @@ -944,7 +944,7 @@ public BoxMetadataCascadePolicy.Info addMetadataCascadePolicy(String scope, Stri * @param fields optional fields to retrieve for cascade policies. * @return the Iterable of Box Metadata Cascade Policies in your enterprise. */ - public Iterable getCascadePolicies(String... fields) { + public Iterable getMetadataCascadePolicies(String... fields) { Iterable cascadePoliciesInfo = BoxMetadataCascadePolicy.getAll(this.getAPI(), this.getID(), fields); @@ -959,7 +959,7 @@ public Iterable getCascadePolicies(String... fiel * @param fields optional fields to retrieve for cascade policies. * @return the Iterable of Box Metadata Cascade Policies in your enterprise. */ - public Iterable getCascadePolicies(String enterpriseID, + public Iterable getMetadataCascadePolicies(String enterpriseID, int limit, String... fields) { Iterable cascadePoliciesInfo = BoxMetadataCascadePolicy.getAll(this.getAPI(), this.getID(), enterpriseID, limit, fields); diff --git a/src/test/java/com/box/sdk/BoxFolderTest.java b/src/test/java/com/box/sdk/BoxFolderTest.java index d179446df..e741eb13f 100644 --- a/src/test/java/com/box/sdk/BoxFolderTest.java +++ b/src/test/java/com/box/sdk/BoxFolderTest.java @@ -994,7 +994,7 @@ public void testGetAllMetadataCascadePoliciesOnFolderSucceeds() throws IOExcepti BoxFolder folder = new BoxFolder(this.api, folderID); Iterator metadataCascadePolicies = folder - .getCascadePolicies().iterator(); + .getMetadataCascadePolicies().iterator(); BoxMetadataCascadePolicy.Info firstCascadePolicy = metadataCascadePolicies.next(); @@ -1028,7 +1028,7 @@ public void testGetAllMetadataCascadePoliciesOnFolderWithFieldsSucceeds() throws BoxFolder folder = new BoxFolder(this.api, folderID); Iterator metadataCascadePolicies = folder - .getCascadePolicies("owner_enterprise").iterator(); + .getMetadataCascadePolicies("owner_enterprise").iterator(); BoxMetadataCascadePolicy.Info firstCascadePolicy = metadataCascadePolicies.next(); From 3c90d83d80363999cb17f95c70585e73a1d9ebd2 Mon Sep 17 00:00:00 2001 From: carycheng Date: Thu, 23 Aug 2018 15:07:18 -0700 Subject: [PATCH 18/19] fixed error in test with wrong function name --- src/test/java/com/box/sdk/BoxFolderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/box/sdk/BoxFolderTest.java b/src/test/java/com/box/sdk/BoxFolderTest.java index e741eb13f..33b0698c9 100644 --- a/src/test/java/com/box/sdk/BoxFolderTest.java +++ b/src/test/java/com/box/sdk/BoxFolderTest.java @@ -1064,7 +1064,7 @@ public void testGetAllMetadataCascadePoliciesWithEnterpriseIDSucceeds() throws I BoxFolder folder = new BoxFolder(this.api, folderID); Iterator metadataCascadePolicies = folder - .getCascadePolicies(enterpriseID, limit, "owner_enterprise").iterator(); + .getMetadataCascadePolicies(enterpriseID, limit, "owner_enterprise").iterator(); BoxMetadataCascadePolicy.Info firstCascadePolicy = metadataCascadePolicies.next(); From 868628d2c68ceeb415ce057234da0ff25b7d0c4b Mon Sep 17 00:00:00 2001 From: carycheng Date: Thu, 23 Aug 2018 15:12:50 -0700 Subject: [PATCH 19/19] updated example to use the getMetadataCascadePolicies function in BoxFolder --- doc/folders.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/doc/folders.md b/doc/folders.md index 67394fabc..cbbb16fff 100644 --- a/doc/folders.md +++ b/doc/folders.md @@ -437,20 +437,22 @@ for (BoxMetadataCascadePolicy.Info policyInfo : metadataCascadePolicies) { } ``` -You can also call [`getAll(BoxAPIConnection api, String folderID, String enterpriseID, int limit)`][get-all-with-limit] +You can also call [`getMetadataCascadePolicies(String enterpriseID, int limit, String... fields)`][get-all-with-limit] and set the `enterpriseID` option to retrieve metadata cascade policies from another enterprise. ```java String folderID = "2222"; -String enterpriseID = "1234"; -Iterable metadataCascadePolicies = BoxMetadataCascadePolicy.getAll(api, folderID, enterpriseID, 100); +String enterpriseID = "3333"; +int limit = 50; +BoxFolder folder = new BoxFolder(api, folderID); +Iterable metadataCascadePolicies = folder.getMetadataCascadePolicies(enterpriseID, limit); for (BoxMetadataCascadePolicy.Info policyInfo : metadataCascadePolicies) { - // take action on polcy here + // take action on policy here } ``` [get-all]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#getMetadataCascadePolicies-- -[get-all-with-limit]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxMetadataCascadePolicy.html#getAll-com.box.sdk.BoxAPIConnection-java.lang.String-java.lang.String-int- +[get-all-with-limit]: http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#getMetadataCascadePolicies-java.lang.String-int- Force Apply Cascade Policy on Folder ------------------------------------