diff --git a/CHANGELOG.md b/CHANGELOG.md index d7738673d4..4c5dcc64e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,10 +6,6 @@ after the 3.9.0 release. All changes up until the 3.9.0 release can be found in The format is based on [Keep a Changelog](http://keepachangelog.com) ## Unreleased ([details][unreleased changes details]) - -### Fixed -- #2146 - POI exception generating Excel file with too many references - [unreleased changes details]: https://github.com/Adobe-Consulting-Services/acs-aem-commons/compare/acs-aem-commons-4.3.2...HEAD @@ -18,10 +14,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com) ### Fixed - #2082 - ETag filter never sends 304 - #2148 - Bugfix for displaying sizes (adresses #2132) +- #2146 - POI exception generating Excel file with too many references ### Changed +- #2164 - Adding support for page create dialog to content model framework (aka dialog resource provider) - #2133 - Update test library dependencies + ## [4.4.0] - 2019-12-17 ### Added diff --git a/bundle/src/main/java/com/adobe/acs/commons/mcp/form/AbstractResourceImpl.java b/bundle/src/main/java/com/adobe/acs/commons/mcp/form/AbstractResourceImpl.java index 5667e29d53..c29c5755fa 100644 --- a/bundle/src/main/java/com/adobe/acs/commons/mcp/form/AbstractResourceImpl.java +++ b/bundle/src/main/java/com/adobe/acs/commons/mcp/form/AbstractResourceImpl.java @@ -20,10 +20,12 @@ package com.adobe.acs.commons.mcp.form; import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.stream.StreamSupport; import org.apache.commons.lang3.StringUtils; import org.apache.sling.api.resource.AbstractResource; import org.apache.sling.api.resource.ModifiableValueMap; @@ -128,10 +130,10 @@ public Resource getChild(String relPath) { if (current == null) { return null; } - } else if (current.getChild(name) == null) { - return null; } else { - current = current.getChild(name); + return StreamSupport.stream(getChildren().spliterator(), false) + .filter(r->r.getName().equals(name)) + .findFirst().orElse(null); } } return current; @@ -163,7 +165,11 @@ public boolean hasChildren() { @Override public boolean isResourceType(String type) { - return Objects.equals(getResourceType(), type); + if (getResourceResolver() != null) { + return getResourceResolver().isResourceType(this, type); + } else { + return Objects.equals(getResourceType(), type); + } } public void setPath(String path) { @@ -177,7 +183,8 @@ public String getPath() { @Override public String getResourceType() { - return type; + Object t = meta.get("sling:resourceType"); + return t == null ? null : String.valueOf(t); } @Override @@ -214,4 +221,11 @@ public void disableMergeResourceProvider() { getResourceMetadata().put("sling:hideChildren", "*"); children.forEach(c -> ((AbstractResourceImpl) c).disableMergeResourceProvider()); } + + public Map convertTreeToMap() { + HashMap out = new HashMap<>(); + out.putAll(meta); + children.forEach(c -> out.put(c.getName(), ((AbstractResourceImpl) c).convertTreeToMap())); + return out; + } } diff --git a/bundle/src/main/java/com/adobe/acs/commons/mcp/form/FieldComponent.java b/bundle/src/main/java/com/adobe/acs/commons/mcp/form/FieldComponent.java index 9ea5d1beee..61236a3539 100644 --- a/bundle/src/main/java/com/adobe/acs/commons/mcp/form/FieldComponent.java +++ b/bundle/src/main/java/com/adobe/acs/commons/mcp/form/FieldComponent.java @@ -73,6 +73,9 @@ public final void setup(String name, AccessibleObject fieldOrMethod, FormField f componentMetadata.put("required", formField.required()); } componentMetadata.put("emptyText", formField.hint()); + if (formField.showOnCreate()) { + componentMetadata.put("cq:showOnCreate", true); + } Optional defaultValue = getOption("default"); if (!defaultValue.isPresent()) { diff --git a/bundle/src/main/java/com/adobe/acs/commons/mcp/form/FieldsetComponent.java b/bundle/src/main/java/com/adobe/acs/commons/mcp/form/FieldsetComponent.java index ccd3bf7baf..c2303aaf4f 100644 --- a/bundle/src/main/java/com/adobe/acs/commons/mcp/form/FieldsetComponent.java +++ b/bundle/src/main/java/com/adobe/acs/commons/mcp/form/FieldsetComponent.java @@ -43,7 +43,7 @@ public void init() { @Override public Resource buildComponentResource() { - getComponentMetadata().put(CLASS, getClass()); + getComponentMetadata().put(CLASS, getCssClass()); return super.buildComponentResource(); } diff --git a/bundle/src/main/java/com/adobe/acs/commons/mcp/form/FormField.java b/bundle/src/main/java/com/adobe/acs/commons/mcp/form/FormField.java index 4b90e9723c..4705563e8e 100644 --- a/bundle/src/main/java/com/adobe/acs/commons/mcp/form/FormField.java +++ b/bundle/src/main/java/com/adobe/acs/commons/mcp/form/FormField.java @@ -48,6 +48,8 @@ String[] options() default {}; + boolean showOnCreate() default true; + public static class Factory { private Factory() { // Factory cannot be instantiated @@ -95,6 +97,11 @@ public String[] options() { public Class annotationType() { return null; } + + @Override + public boolean showOnCreate() { + return true; + } }; } } diff --git a/bundle/src/main/java/com/adobe/acs/commons/mcp/form/package-info.java b/bundle/src/main/java/com/adobe/acs/commons/mcp/form/package-info.java index d18023e4bb..ea1f4739c6 100644 --- a/bundle/src/main/java/com/adobe/acs/commons/mcp/form/package-info.java +++ b/bundle/src/main/java/com/adobe/acs/commons/mcp/form/package-info.java @@ -20,7 +20,7 @@ /** * Form components for MCP */ -@Version("5.0.0") +@Version("5.1.0") package com.adobe.acs.commons.mcp.form; import org.osgi.annotation.versioning.Version; diff --git a/bundle/src/test/java/com/adobe/acs/commons/mcp/form/FieldComponentTest.java b/bundle/src/test/java/com/adobe/acs/commons/mcp/form/FieldComponentTest.java index b790e2fb34..019cf8a06a 100644 --- a/bundle/src/test/java/com/adobe/acs/commons/mcp/form/FieldComponentTest.java +++ b/bundle/src/test/java/com/adobe/acs/commons/mcp/form/FieldComponentTest.java @@ -179,6 +179,10 @@ public Class component() { public String[] options() { return options; } + + public boolean showOnCreate() { + return true; + } }; setup("test", null, field, null); }