Skip to content

Commit

Permalink
Issue rest multiple binaries (#13472)
Browse files Browse the repository at this point in the history
  • Loading branch information
dsilvam authored Jan 23, 2018
1 parent 2443bdd commit 7d57f3b
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -108,15 +108,16 @@ private static String buildLegacyFieldContent(Field field){
}

private static String buildNewFieldDbColumn(com.dotmarketing.portlets.structure.model.Field oldField){
String fieldContent = (oldField.getFieldContentlet()!=null)
String fieldContent = (oldField.getFieldContentlet()!=null)
? (oldField.getFieldContentlet().startsWith("binary"))
? "system_field"
: oldField.getFieldContentlet()
: null;

return fieldContent;
}
private static Field transformToNew(final com.dotmarketing.portlets.structure.model.Field oldField) {
}

private static Field transformToNew(final com.dotmarketing.portlets.structure.model.Field oldField) {
final String fieldType = oldField.getFieldType();

@SuppressWarnings("serial")
Expand Down
25 changes: 24 additions & 1 deletion dotCMS/src/main/java/com/dotcms/rest/ContentResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,7 @@ public Response unlockContent(@Context HttpServletRequest request,
throws DotDataException, DotSecurityException, JSONException {

InitDataObject initData = webResource.init(params, true, request, false, null);

Map<String, String> paramsMap = initData.getParamsMap();
String callback = paramsMap.get(RESTParams.CALLBACK.getValue());
String language = paramsMap.get(RESTParams.LANGUAGE.getValue());
Expand Down Expand Up @@ -705,6 +706,9 @@ private Response multipartPUTandPOST(HttpServletRequest request, HttpServletResp

Map<String, Object> map = new HashMap<String, Object>();
List<String> usedBinaryFields = new ArrayList<String>();
String binaryFieldsInput = null;
List<String> binaryFields = new ArrayList<>();

for (BodyPart part : multipart.getBodyParts()) {
ContentDisposition cd = part.getContentDisposition();
String name = cd != null && cd.getParameters().containsKey("name") ? cd.getParameters()
Expand All @@ -714,6 +718,21 @@ private Response multipartPUTandPOST(HttpServletRequest request, HttpServletResp
.equals("json")) {
try {
processJSON(contentlet, part.getEntityAs(InputStream.class));
try {
binaryFieldsInput =
webResource.processJSON(part.getEntityAs(InputStream.class)).get("binary_fields")
.toString();
} catch (NullPointerException npe) {
}
if (UtilMethods.isSet(binaryFieldsInput)) {
if (!binaryFieldsInput.contains(",")) {
binaryFields.add(binaryFieldsInput);
} else {
for (String binaryFieldSplit : binaryFieldsInput.split(",")) {
binaryFields.add(binaryFieldSplit.trim());
}
}
}
} catch (JSONException e) {

Logger.error(this.getClass(), "Error processing JSON for Stream", e);
Expand Down Expand Up @@ -794,7 +813,11 @@ private Response multipartPUTandPOST(HttpServletRequest request, HttpServletResp
String fieldName = ff.getFieldContentlet();
if (fieldName.startsWith("binary")
&& !usedBinaryFields.contains(fieldName)) {
contentlet.setBinary(ff.getVelocityVarName(), tmp);
String fieldVarName = ff.getVelocityVarName();
if (binaryFields.size() > 0) {
fieldVarName = binaryFields.remove(0);
}
contentlet.setBinary(fieldVarName, tmp);
usedBinaryFields.add(fieldName);
break;
}
Expand Down

0 comments on commit 7d57f3b

Please sign in to comment.