This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.
URL Accessibility For Searches Sample
This sample explains how to create Accessible URLs for searches. You might also find the URL Accessibility For Reports Sample useful. We will be reusing the code of the Handler Sample in this example. This sample requires Apache Maven. See Installation Prerequisites for more information on downloading this.
Instructions
1. Navigate to GREG_HOME/
samples/handler/src
to find the source code of the Handler Sample.
2. Add the following dependency to your POM file:
Project Object Model (POM) is an XML representation of a Maven project held in a file named pom.xml. You should find POM file by the name pom.xml inside GREG_HOME/
samples/handler/src
.
<dependency> <groupId>org.wso2.carbon</groupId> <artifactId>org.wso2.carbon.governance.api</artifactId> <version>4.0.1</version> </dependency>
3. Add a new Java Class named URIForSearchHandler
at
GREG_HOME/samples/handler/src/src/main/java/org/wso2/carbon/registry/samples/handler/URIForSearchHandler.java
with the following source:
package org.wso2.carbon.registry.samples.handler; import org.wso2.carbon.governance.api.exception.GovernanceException; import org.wso2.carbon.governance.api.generic.GenericArtifactFilter; import org.wso2.carbon.governance.api.generic.GenericArtifactManager; import org.wso2.carbon.governance.api.generic.dataobjects.GenericArtifact; import org.wso2.carbon.governance.api.util.GovernanceUtils; import org.wso2.carbon.registry.core.Resource; import org.wso2.carbon.registry.core.exceptions.RegistryException; import org.wso2.carbon.registry.core.jdbc.handlers.Handler; import org.wso2.carbon.registry.core.jdbc.handlers.RequestContext; import org.wso2.carbon.registry.core.session.CurrentSession; import org.wso2.carbon.registry.core.utils.RegistryUtils; import javax.xml.namespace.QName; import java.util.List; import java.util.Map; import java.util.Properties; public class URIForSearchHandler extends Handler { public void put(RequestContext requestContext) throws RegistryException { GovernanceUtils.setTenantGovernanceSystemRegistry(CurrentSession.getTenantId()); GenericArtifactManager manager = new GenericArtifactManager( GovernanceUtils.getGovernanceSystemRegistry(null), "uri"); String path = requestContext.getResourcePath().getPath(); final String uri = buildURI(requestContext.getResource()); GenericArtifact[] artifacts = manager.findGenericArtifacts(new GenericArtifactFilter() { public boolean matches(GenericArtifact artifact) throws GovernanceException { return uri.matches(artifact.getAttribute("overview_uri")); } }); if (artifacts.length == 0) { GenericArtifact artifact = manager.newGovernanceArtifact(new QName(RegistryUtils.getResourceName(path))); artifact.setAttribute("overview_type", "Generic"); artifact.setAttribute("overview_uri", uri); manager.addGenericArtifact(artifact); } } public void delete(RequestContext requestContext) throws RegistryException { GovernanceUtils.setTenantGovernanceSystemRegistry(CurrentSession.getTenantId()); GenericArtifactManager manager = new GenericArtifactManager( GovernanceUtils.getGovernanceSystemRegistry(null), "uri"); String path = requestContext.getResourcePath().getPath(); final String uri = buildURI(requestContext.getResource()); GenericArtifact[] artifacts = manager.findGenericArtifacts(new GenericArtifactFilter() { public boolean matches(GenericArtifact artifact) throws GovernanceException { return uri.matches(artifact.getAttribute("overview_uri")); } }); if (artifacts.length > 0) { manager.removeGenericArtifact(artifacts[0].getId()); } } private String buildURI(Resource resource) { StringBuilder url = new StringBuilder("https://localhost:9443/carbon/search/" + "advancedSearch.jsp?region=region3&item=registry_search_menu"); Properties props = resource.getProperties(); for (Map.Entry<Object, Object> entry : props.entrySet()) { if (!RegistryUtils.isHiddenProperty((String)entry.getKey()) && entry.getValue() != null && ((List<String>)entry.getValue()).get(0).length() > 0) { url.append("&").append(entry.getKey()).append("=").append(((List<String>)entry.getValue()).get( 0)); } } return url.toString(); } }
4. Compile the source code by running the following command inside GREG_HOME/
samples/handler/src
:
mvn clean install
The command mvn clean install
will trigger an Apache Maven Build in your command line. This requires you having installed Apache Maven. See Installation Prerequisites for more information on downloading this.
A successful run of Apache Maven will generate a report similar to the following:
5. Copy the GREG_HOME/
samples/handler/src/target/
org.wso2.carbon.registry.samples.handler-4.5.0.jar
into GREG_HOME/repository/components/dropins
.
6. Edit the registry.xml
file which is in GREG_HOME/repository/conf
folder and add the following XML snippet.
<handler class="org.wso2.carbon.registry.samples.handler.URIForSearchHandler"> <filter class="org.wso2.carbon.registry.core.jdbc.handlers.filters.URLMatcher"> <property name="pattern">/_system/config/users/.*/searchFilters/.*</property> </filter> </handler>
See also Handler Configuration Details.
7. Start the WSO2 Governance Registry. See Running the Product on Windows or Running the Product on Linux and Solaris.
8. Navigate to the Search page and search for resources by the name "_system".
See also Search.
9. Once the search has been completed, save the search with the Filter Name "SystemColSearch".
Click the "Save" button to save the search.
10. Finally navigate to the List URI page to see your URI added.
See also Managing URIs.