[Carbon-commits] [Carbon] svn commit r111898 - trunk/carbon/components/governance/org.wso2.carbon.governance.registry.extensions/src/org/wso2/carbon/governance/registry/extensions/handlers

senaka at wso2.com senaka at wso2.com
Thu Aug 25 00:32:21 EDT 2011


Author: senaka
Date: Wed Aug 24 21:32:21 2011
New Revision: 111898
URL: http://wso2.org/svn/browse/wso2?view=rev&revision=111898

Log:
Added JCR handler to build.

Added:
   trunk/carbon/components/governance/org.wso2.carbon.governance.registry.extensions/src/org/wso2/carbon/governance/registry/extensions/handlers/JCRHandler.java

Added: trunk/carbon/components/governance/org.wso2.carbon.governance.registry.extensions/src/org/wso2/carbon/governance/registry/extensions/handlers/JCRHandler.java
URL: http://wso2.org/svn/browse/wso2/trunk/carbon/components/governance/org.wso2.carbon.governance.registry.extensions/src/org/wso2/carbon/governance/registry/extensions/handlers/JCRHandler.java?pathrev=111898
==============================================================================
--- (empty file)
+++ trunk/carbon/components/governance/org.wso2.carbon.governance.registry.extensions/src/org/wso2/carbon/governance/registry/extensions/handlers/JCRHandler.java	Wed Aug 24 21:32:21 2011
@@ -0,0 +1,115 @@
+package org.wso2.carbon.governance.registry.extensions.handlers;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.util.AXIOMUtil;
+import org.hsqldb.User;
+import org.wso2.carbon.governance.api.common.GovernanceArtifactManager;
+import org.wso2.carbon.governance.api.common.dataobjects.GovernanceArtifact;
+import org.wso2.carbon.governance.api.exception.GovernanceException;
+import org.wso2.carbon.governance.api.generic.GenericArtifactManager;
+import org.wso2.carbon.governance.api.generic.dataobjects.GenericArtifact;
+import org.wso2.carbon.governance.api.util.GovernanceArtifactConfiguration;
+import org.wso2.carbon.governance.api.util.GovernanceUtils;
+import org.wso2.carbon.registry.core.Registry;
+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.UserRegistry;
+import org.wso2.carbon.registry.core.utils.RegistryUtils;
+import org.wso2.carbon.registry.extensions.utils.CommonUtil;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Properties;
+
+
+public class JCRHandler extends Handler {
+
+    private String key = null;
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    public void put(RequestContext requestContext) throws RegistryException {
+        if (!CommonUtil.isUpdateLockAvailable()) {
+            return;
+        }
+        CommonUtil.acquireUpdateLock();
+        try {
+            UserRegistry registry = (UserRegistry) GovernanceUtils.getGovernanceSystemRegistry(
+                    requestContext.getSystemRegistry());
+            Resource resource = requestContext.getResource();
+            String tempKey = key;
+            if (tempKey == null) {
+                GovernanceUtils.loadGovernanceArtifacts(registry);
+                List<GovernanceArtifactConfiguration> governanceArtifactConfigurations =
+                        GovernanceUtils.findGovernanceArtifactConfigurations(registry);
+                for (GovernanceArtifactConfiguration configuration : governanceArtifactConfigurations) {
+                    if (configuration.getMediaType().equals(resource.getMediaType())) {
+                        tempKey = configuration.getKey();
+                        break;
+                    }
+                }
+            }
+            GenericArtifactManager manager = new GenericArtifactManager(registry, tempKey);
+            Object content = resource.getContent();
+            try {
+                String contentString;
+                if (content instanceof String) {
+                    contentString = (String) content;
+                } else {
+                    contentString = new String((byte[])content);
+                }
+                Resource oldResource = requestContext.getOldResource();
+                Object oldContent = oldResource.getContent();
+                String oldContentString;
+                if (oldContent instanceof String) {
+                    oldContentString = (String) oldContent;
+                } else {
+                    oldContentString = new String((byte[])oldContent);
+                }
+                if (oldResource == null || !contentString.equals(oldContentString)) {
+                    OMElement contentElement = AXIOMUtil.stringToOM(contentString);
+                    GenericArtifact genericArtifact = manager.newGovernanceArtifact(contentElement);
+                    String[] attributeKeys = genericArtifact.getAttributeKeys();
+                    for (String key : attributeKeys) {
+                        resource.setProperty(key, Arrays.asList(genericArtifact.getAttributes(key)));
+                    }
+                } else {
+                    Properties properties = resource.getProperties();
+                    GenericArtifact genericArtifact = manager.newGovernanceArtifact(new QName("Dummy"));
+                    for (Object key : properties.keySet()) {
+                        String keyString = (String) key;
+                        if (keyString.contains("_") && !RegistryUtils.isHiddenProperty(keyString)) {
+                            List<String> propertyValues = resource.getPropertyValues(keyString);
+                            if (propertyValues.size() > 1) {
+                                genericArtifact.setAttributes(keyString,
+                                        propertyValues.toArray(new String[propertyValues.size()]));
+                            } else {
+                                genericArtifact.setAttribute(keyString, propertyValues.get(0));
+                            }
+                        }
+                    }
+                    new GovernanceArtifactManager(null, null, null, null,
+                            "metadata", "http://www.wso2.org/governance/metadata", null, null) {
+                        @Override
+                        protected void setContent(GovernanceArtifact artifact,
+                                                  Resource resource) throws GovernanceException {
+                            super.setContent(artifact, resource);
+                        }
+                    }.setContent(genericArtifact, resource);
+                }
+            } catch (XMLStreamException e) {
+                throw new RegistryException("Unable to parse content", e);
+            }
+        } catch (Exception e) {
+            throw new RegistryException("an error occurred", e);
+        } finally {
+            CommonUtil.releaseUpdateLock();
+        }
+    }
+}


More information about the Carbon-commits mailing list