[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