Author: dulvac Date: Fri Oct 14 09:55:24 2016 New Revision: 1764850 URL: http://svn.apache.org/viewvc?rev=1764850&view=rev Log: SLING-6151 Allow HApi core to be disabled
Added: sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/impl/EmptyAttributeHelperImpl.java Modified: sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/HApiUtil.java sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/impl/HApiUtilImpl.java sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/sightly/TypeView.java Modified: sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/HApiUtil.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/HApiUtil.java?rev=1764850&r1=1764849&r2=1764850&view=diff ============================================================================== --- sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/HApiUtil.java (original) +++ sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/HApiUtil.java Fri Oct 14 09:55:24 2016 @@ -29,14 +29,23 @@ public interface HApiUtil { String DEFAULT_RESOURCE_TYPE = "sling/hapi/components/type"; String RESOURCE_TYPE = "org.apache.sling.hapi.tools.resourcetype"; + String RESOURCE_TYPE_DESC = "The resource used for hapi types"; String DEFAULT_COLLECTION_RESOURCE_TYPE = "sling/hapi/components/typescollection"; String COLLECTION_RESOURCE_TYPE = "org.apache.sling.hapi.tools.collectionresourcetype"; + String COLLECTION_RESOURCE_TYPE_DESC = "The resource used for hapi type collections"; + String DEFAULT_SEARCH_PATH = "/libs/sling/hapi/types"; String SEARCH_PATHS = "org.apache.sling.hapi.tools.searchpaths"; + String SEARCH_PATHS_DESC = "The path under each hapi types can be identified by their FQDN value in addition to the type path"; String DEFAULT_SERVER_URL = "http://localhost:8080"; String EXTERNAL_URL = "org.apache.sling.hapi.tools.externalurl"; + String EXTERNAL_URL_DESC = "The external URL of the instance. This will prefix hapi absolute URLs"; + + boolean DEFAULT_ENABLED = true; + String ENABLED = "org.apache.sling.hapi.tools.enabled"; + String ENABLED_DESC = "Whether hapi is enabled or completely disabled (no output rendered in components)"; /** * <p>Get a HApi type jcr node from a type identifier.</p> Added: sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/impl/EmptyAttributeHelperImpl.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/impl/EmptyAttributeHelperImpl.java?rev=1764850&view=auto ============================================================================== --- sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/impl/EmptyAttributeHelperImpl.java (added) +++ sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/impl/EmptyAttributeHelperImpl.java Fri Oct 14 09:55:24 2016 @@ -0,0 +1,61 @@ +/******************************************************************************* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * <p/> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p/> + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ******************************************************************************/ +package org.apache.sling.hapi.impl; + +import org.apache.sling.hapi.MicrodataAttributeHelper; + +import java.util.Collections; +import java.util.Map; + +public class EmptyAttributeHelperImpl implements MicrodataAttributeHelper { + @Override + public String itemtype() { + return ""; + } + + @Override + public Map<String, String> itemtypeMap() { + return Collections.emptyMap(); + } + + @Override + public String itemprop(String propName) { + return ""; + } + + @Override + public String itemprop(String propName, boolean withType) { + return ""; + } + + @Override + public Map<String, String> itempropMap(String propName, boolean withType) { + return Collections.emptyMap(); + } + + @Override + public Map<String, Map<String, String>> allItemPropMap() { + return Collections.emptyMap(); + } + + @Override + public Map<String, String> allPropTypesMap() { + return Collections.emptyMap(); + } +} Modified: sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/impl/HApiUtilImpl.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/impl/HApiUtilImpl.java?rev=1764850&r1=1764849&r2=1764850&view=diff ============================================================================== --- sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/impl/HApiUtilImpl.java (original) +++ sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/impl/HApiUtilImpl.java Fri Oct 14 09:55:24 2016 @@ -53,26 +53,39 @@ public class HApiUtilImpl implements HAp private final Logger LOG = LoggerFactory.getLogger(HApiUtil.class); - @Property(label = "HApi Resource Type", cardinality = 0, value = DEFAULT_RESOURCE_TYPE) + @Property(label = "HApi Resource Type", cardinality = 0, value = DEFAULT_RESOURCE_TYPE, + description = RESOURCE_TYPE_DESC) public static final String HAPI_RESOURCE_TYPE = RESOURCE_TYPE; - @Property(label = "HApi Collection Resource Type", cardinality = 0, value = DEFAULT_COLLECTION_RESOURCE_TYPE) + @Property(label = "HApi Collection Resource Type", cardinality = 0, value = DEFAULT_COLLECTION_RESOURCE_TYPE, + description = COLLECTION_RESOURCE_TYPE_DESC) private static final String HAPI_COLLECTION_RESOURCE_TYPE = COLLECTION_RESOURCE_TYPE; - @Property(label = "HApi Types Search Paths", cardinality=50, value = {"/libs/sling/hapi/types"}) + @Property(label = "HApi Types Search Paths", cardinality=50, value = {DEFAULT_SEARCH_PATH}, + description = SEARCH_PATHS_DESC) public static final String HAPI_PATHS = SEARCH_PATHS; - @Property(label = "External server URL", cardinality = 0, value = DEFAULT_SERVER_URL) + @Property(label = "External server URL", cardinality = 0, value = DEFAULT_SERVER_URL, + description = EXTERNAL_URL_DESC) public static final String HAPI_EXTERNAL_URL = EXTERNAL_URL; - public static String resourceType; + @Property(label = "Enabled", boolValue = DEFAULT_ENABLED, + description = ENABLED_DESC) + public static final String HAPI_ENABLED = ENABLED; + + + private static String resourceType; private String collectionResourceType; - public static String[] hApiPaths; - public static String serverContextPath; + private static String[] hApiPaths; + private static String serverContextPath; + private boolean enabled; @Activate private void activate(Map<String, Object> configuration) { + enabled = PropertiesUtil.toBoolean(configuration.get(HAPI_ENABLED), false); + if (!enabled) return; + resourceType = PropertiesUtil.toString(configuration.get(HAPI_RESOURCE_TYPE), DEFAULT_RESOURCE_TYPE); collectionResourceType = PropertiesUtil.toString(configuration.get(HAPI_COLLECTION_RESOURCE_TYPE), DEFAULT_COLLECTION_RESOURCE_TYPE); @@ -86,6 +99,9 @@ public class HApiUtilImpl implements HAp @Override @Deprecated public Node getTypeNode(ResourceResolver resolver, String type) throws RepositoryException { + if (!enabled) { + return null; + } return getTypeResource(resolver, type).adaptTo(Node.class); } @@ -94,6 +110,9 @@ public class HApiUtilImpl implements HAp */ @Override public Resource getTypeResource(ResourceResolver resolver, String type) throws RepositoryException { + if (!enabled) { + return null; + } return getFqdnResource(resolver, type, resourceType); } @@ -102,6 +121,9 @@ public class HApiUtilImpl implements HAp */ @Override public Resource getTypeCollectionResource(ResourceResolver resolver, String collection) throws RepositoryException { + if (!enabled) { + return null; + } return getFqdnResource(resolver, collection, collectionResourceType); } @@ -152,6 +174,9 @@ public class HApiUtilImpl implements HAp */ @Override public HApiType fromPath(ResourceResolver resolver, String type) throws RepositoryException { + if (!enabled) { + return null; + } Resource typeResource = this.getTypeResource(resolver, type); LOG.debug("typeResource=" + typeResource); if (null == typeResource) { @@ -167,6 +192,9 @@ public class HApiUtilImpl implements HAp @Override @Deprecated public HApiType fromNode(ResourceResolver resolver, Node typeNode) throws RepositoryException { + if (!enabled) { + return null; + } if (null == typeNode) return null; Resource resource = resolver.getResource(typeNode.getPath()); return fromResource(resolver, resource); @@ -176,6 +204,9 @@ public class HApiUtilImpl implements HAp * {@inheritDoc} */ public HApiType fromResource(ResourceResolver resolver, Resource typeResource) throws RepositoryException { + if (!enabled) { + return null; + } if (null == typeResource) return null; ValueMap resProps = typeResource.adaptTo(ValueMap.class); @@ -244,6 +275,9 @@ public class HApiUtilImpl implements HAp */ @Override public HApiTypesCollection collectionFromResource(ResourceResolver resolver, Resource collectionResource) throws RepositoryException { + if (!enabled) { + return null; + } if (null == collectionResource) return null; ValueMap resProps = collectionResource.adaptTo(ValueMap.class); String name = resProps.get("name", (String) null); @@ -271,6 +305,9 @@ public class HApiUtilImpl implements HAp */ @Override public HApiTypesCollection collectionFromPath(ResourceResolver resolver, String collectionPath) throws RepositoryException { + if (!enabled) { + return null; + } return collectionFromResource(resolver, this.getTypeCollectionResource(resolver, collectionPath)); } @@ -279,6 +316,9 @@ public class HApiUtilImpl implements HAp */ @Override public MicrodataAttributeHelper getHelper(ResourceResolver resolver, String type) throws RepositoryException { + if (!enabled) { + return new EmptyAttributeHelperImpl(); + } return new MicrodataAttributeHelperImpl(resolver, TypesCache.getInstance(this).getType(resolver, getTypeResource(resolver, type))); } } Modified: sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/sightly/TypeView.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/sightly/TypeView.java?rev=1764850&r1=1764849&r2=1764850&view=diff ============================================================================== --- sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/sightly/TypeView.java (original) +++ sling/trunk/contrib/extensions/hapi/core/src/main/java/org/apache/sling/hapi/sightly/TypeView.java Fri Oct 14 09:55:24 2016 @@ -62,20 +62,34 @@ public class TypeView implements Use { public void activate() throws Exception { hapi = sling.getService(HApiUtil.class); me = hapi.fromPath(resourceResolver, resource.getPath()); + + if (null == me) { + return; + } + LOG.debug("me: {} resource: {}", me, resource.getPath()); description = me.getDescription(); parent = me.getParent(); } public String getTitle() { + if (null == me) { + return ""; + } return me.getFqdn(); } public String getDescription() { + if (null == me) { + return ""; + } return description; } public String getParentUrl() { + if (null == me) { + return ""; + } if (null != parent) { return parent.getUrl(); } else { @@ -84,6 +98,9 @@ public class TypeView implements Use { } public String getParentFqdn() { + if (null == me) { + return ""; + } if (null != parent) { return parent.getFqdn(); } else { @@ -92,16 +109,25 @@ public class TypeView implements Use { } public List<String> getParameters() { + if (null == me) { + return Collections.emptyList(); + } return me.getParameters(); } public List<HApiProperty> getProps() { + if (null == me) { + return Collections.emptyList(); + } List<HApiProperty> props = new ArrayList<HApiProperty>(me.getAllProperties().values()); LOG.debug("props: ", props); return props; } public boolean getHasProps() { + if (null == me) { + return false; + } return getProps().size() > 0; } }