diff --git a/magnolia-ui-vaadin-integration/src/main/java/info/magnolia/ui/vaadin/integration/contentconnector/ConfiguredJcrContentConnectorDefinition.java b/magnolia-ui-vaadin-integration/src/main/java/info/magnolia/ui/vaadin/integration/contentconnector/ConfiguredJcrContentConnectorDefinition.java index 49b5a50..0e6b076 100644 --- a/magnolia-ui-vaadin-integration/src/main/java/info/magnolia/ui/vaadin/integration/contentconnector/ConfiguredJcrContentConnectorDefinition.java +++ b/magnolia-ui-vaadin-integration/src/main/java/info/magnolia/ui/vaadin/integration/contentconnector/ConfiguredJcrContentConnectorDefinition.java @@ -45,9 +45,7 @@ private List nodeTypes = new ArrayList(); - private boolean includeProperties = false; - - private boolean includeSystemNodes; + private boolean includeProperties, includeSystemProperties, includeSystemNodes = false; private String workspace; @@ -114,4 +112,13 @@ public void setDefaultOrder(String defaultOrder) { this.defaultOrder = defaultOrder; } + + @Override + public boolean isIncludeSystemProperties() { + return includeSystemProperties; + } + + public void setIncludeSystemProperties(boolean includeSystemProperties) { + this.includeSystemProperties = includeSystemProperties; + } } diff --git a/magnolia-ui-vaadin-integration/src/main/java/info/magnolia/ui/vaadin/integration/contentconnector/JcrContentConnectorDefinition.java b/magnolia-ui-vaadin-integration/src/main/java/info/magnolia/ui/vaadin/integration/contentconnector/JcrContentConnectorDefinition.java index f1e782d..d1e8612 100644 --- a/magnolia-ui-vaadin-integration/src/main/java/info/magnolia/ui/vaadin/integration/contentconnector/JcrContentConnectorDefinition.java +++ b/magnolia-ui-vaadin-integration/src/main/java/info/magnolia/ui/vaadin/integration/contentconnector/JcrContentConnectorDefinition.java @@ -47,8 +47,14 @@ /** * @return whether properties should be displayed as well (or just nodes) + * @see #isIncludeSystemProperties() */ boolean isIncludeProperties(); + + /** + * @return whether system properties (e.g. jcr and mgnl ones) should be displayed as well. Only has effect if {@link #isIncludeProperties()} returns true. + */ + boolean isIncludeSystemProperties(); /** * @return whether nodes used by the system should be included, for instance nodes internal to the operations of the JCR implementation. @@ -61,7 +67,6 @@ String getDefaultOrder(); /** - * * @return the name of the workspace the JcrContentConnector is bound to. */ String getWorkspace(); @@ -70,6 +75,5 @@ * @return the path configured as root for this workspace. If not specified, defaults to root ("/"). */ String getRootPath(); - } diff --git a/magnolia-ui-workbench/src/main/java/info/magnolia/ui/workbench/tree/HierarchicalJcrContainer.java b/magnolia-ui-workbench/src/main/java/info/magnolia/ui/workbench/tree/HierarchicalJcrContainer.java index b525717..da894d7 100644 --- a/magnolia-ui-workbench/src/main/java/info/magnolia/ui/workbench/tree/HierarchicalJcrContainer.java +++ b/magnolia-ui-workbench/src/main/java/info/magnolia/ui/workbench/tree/HierarchicalJcrContainer.java @@ -203,8 +203,9 @@ PropertyIterator propertyIterator = node.getProperties(); while (propertyIterator.hasNext()) { final Property property = propertyIterator.nextProperty(); - final String propertyName = property.getName(); - if (!propertyName.startsWith(NodeTypes.JCR_PREFIX) && !propertyName.startsWith(NodeTypes.MGNL_PREFIX)) { + boolean isSystemProperty = isSystemProperty(property); + + if (!isSystemProperty || isSystemProperty && getConfiguration().isIncludeSystemProperties()) { properties.add(property); } } @@ -219,6 +220,14 @@ return Collections.unmodifiableCollection(items); } + /** + * @return true if the property name starts with jcr: or mgnl: + */ + protected boolean isSystemProperty(Property property) throws RepositoryException { + final String propertyName = property.getName(); + return propertyName.startsWith(NodeTypes.JCR_PREFIX) || propertyName.startsWith(NodeTypes.MGNL_PREFIX); + } + protected boolean isNodeVisible(Node node) throws RepositoryException { if (!getConfiguration().isIncludeSystemNodes() && node.getName().startsWith("jcr:") || node.getName().startsWith("rep:")) {