[Carbon-dev] svn commit r41320 - in trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer: . persistence

senaka at wso2.com senaka at wso2.com
Wed Jul 15 12:21:48 PDT 2009


Author: senaka
Date: Wed Jul 15 12:21:46 2009
New Revision: 41320
URL: http://wso2.org/svn/browse/wso2?view=rev&revision=41320

Log:
Adding transaction support.


Modified:
   trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/RegistryBasedSynapseConfigBuilder.java
   trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/RegistryBasedSynapseConfigSerializer.java
   trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/persistence/AbstractRegistryStore.java

Modified: trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/RegistryBasedSynapseConfigBuilder.java
URL: http://wso2.org/svn/browse/wso2/trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/RegistryBasedSynapseConfigBuilder.java?rev=41320&r1=41319&r2=41320&view=diff
==============================================================================
--- trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/RegistryBasedSynapseConfigBuilder.java	(original)
+++ trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/RegistryBasedSynapseConfigBuilder.java	Wed Jul 15 12:21:46 2009
@@ -28,6 +28,7 @@
 import org.apache.synapse.config.xml.XMLConfigurationBuilder;
 import org.wso2.carbon.mediation.initializer.persistence.*;
 import org.wso2.carbon.registry.core.session.UserRegistry;
+import org.wso2.carbon.registry.core.jdbc.utils.Transaction;
 
 import javax.xml.stream.XMLStreamException;
 
@@ -89,13 +90,29 @@
         configuration.setDefaultQName(XMLConfigConstants.DEFINITIONS_ELT);
 
         // load the configuration from the registry
-        buildSynapseRegistryFromRegistry(configuration);
-        buildLocalEntriesFromRegistry(configuration);
-        buildEndpointsFromRegistry(configuration);
-        buildSequencesFromRegistry(configuration);
-        buildProxyServicesFromRegistry(configuration);
-        buildTasksFromRegistry(configuration);
-        buildEvenSourcesFromRegistry(configuration);
+        try {
+            boolean transactionStarted = Transaction.isStarted();
+            if (!transactionStarted) {
+                registry.beginTransaction();
+            }
+            buildSynapseRegistryFromRegistry(configuration);
+            buildLocalEntriesFromRegistry(configuration);
+            buildEndpointsFromRegistry(configuration);
+            buildSequencesFromRegistry(configuration);
+            buildProxyServicesFromRegistry(configuration);
+            buildTasksFromRegistry(configuration);
+            buildEvenSourcesFromRegistry(configuration);
+            if (!transactionStarted) {
+                registry.commitTransaction();
+            }
+        } catch (Exception e) {
+            try {
+                registry.rollbackTransaction();
+            } catch (Exception ex) {
+                throw new SynapseException("Unable to rollback transaction", ex);
+            }
+            throw new SynapseException("Unable to perform registry operation", e);
+        }
 
         // if there are no content in the configuration unless for the registry declaration
         // try to find a synapse.xml file at the root of the declared synapse registry

Modified: trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/RegistryBasedSynapseConfigSerializer.java
URL: http://wso2.org/svn/browse/wso2/trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/RegistryBasedSynapseConfigSerializer.java?rev=41320&r1=41319&r2=41320&view=diff
==============================================================================
--- trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/RegistryBasedSynapseConfigSerializer.java	(original)
+++ trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/RegistryBasedSynapseConfigSerializer.java	Wed Jul 15 12:21:46 2009
@@ -33,6 +33,7 @@
 import org.wso2.carbon.mediation.initializer.persistence.*;
 import org.wso2.carbon.registry.core.session.UserRegistry;
 import org.wso2.carbon.registry.core.exceptions.RegistryException;
+import org.wso2.carbon.registry.core.jdbc.utils.Transaction;
 
 /**
  * Serializes the {@link org.apache.synapse.config.SynapseConfiguration} to a registry space,
@@ -86,42 +87,59 @@
     public void serializeConfiguration(SynapseConfiguration configuration) {
 
         log.info("Persisting the SynapseConfiguration to the registry...");
-        // full config serialization should firs clear the space
-        clearSynapseConfigRegistrySpace();
 
-        if (configuration.getRegistry() != null) {
-            serializeSynapseRegistryToRegistry(configuration.getRegistry());
-        }
+        try {
+            boolean transactionStarted = Transaction.isStarted();
+            if (!transactionStarted) {
+                registry.beginTransaction();
+            }
+            // full config serialization should firs clear the space
+            clearSynapseConfigRegistrySpace();
 
-        for (ProxyService proxyService : configuration.getProxyServices()) {
-            serializeProxyServiceToRegistry(proxyService);
-        }
+            if (configuration.getRegistry() != null) {
+                serializeSynapseRegistryToRegistry(configuration.getRegistry());
+            }
 
-        for (SynapseEventSource eventSource : configuration.getEventSources()) {
-            serializeEventSourceToRegistry(eventSource);
-        }
+            for (ProxyService proxyService : configuration.getProxyServices()) {
+                serializeProxyServiceToRegistry(proxyService);
+            }
 
-        for (Startup startup : configuration.getStartups()) {
-            serializeStartupToRegistry(startup);
-        }
+            for (SynapseEventSource eventSource : configuration.getEventSources()) {
+                serializeEventSourceToRegistry(eventSource);
+            }
+
+            for (Startup startup : configuration.getStartups()) {
+                serializeStartupToRegistry(startup);
+            }
 
-        for (Object o : configuration.getLocalRegistry().values()) {
+            for (Object o : configuration.getLocalRegistry().values()) {
 
-            if (o instanceof SequenceMediator) {
-                // if this entry is a sequence
-                serializeSequenceToRegistry((SequenceMediator) o);
-            } else if (o instanceof Endpoint) {
-                // if this entry is an endpoint
-                serializeEndpointToRegistry((Endpoint) o);
-            } else if (o instanceof Entry) {
-                // if this is an real entry && this isn't the host and ip entries
-                Entry entry = (Entry) o;
-                if (!(SynapseConstants.SERVER_HOST.equals(entry.getKey())
-                        || SynapseConstants.SERVER_IP.equals(entry.getKey()))
-                        && entry.getType() != Entry.REMOTE_ENTRY) {
-                    serializeEntryToRegistry(entry);
+                if (o instanceof SequenceMediator) {
+                    // if this entry is a sequence
+                    serializeSequenceToRegistry((SequenceMediator) o);
+                } else if (o instanceof Endpoint) {
+                    // if this entry is an endpoint
+                    serializeEndpointToRegistry((Endpoint) o);
+                } else if (o instanceof Entry) {
+                    // if this is an real entry && this isn't the host and ip entries
+                    Entry entry = (Entry) o;
+                    if (!(SynapseConstants.SERVER_HOST.equals(entry.getKey())
+                            || SynapseConstants.SERVER_IP.equals(entry.getKey()))
+                            && entry.getType() != Entry.REMOTE_ENTRY) {
+                        serializeEntryToRegistry(entry);
+                    }
                 }
             }
+            if (!transactionStarted) {
+                registry.commitTransaction();
+            }
+        } catch (Exception e) {
+            try {
+                registry.rollbackTransaction();
+            } catch (Exception ex) {
+                log.error("Unable to persist SynapseConfiguration to the registry", ex);
+            }
+            log.error("Unable to persist SynapseConfiguration to the registry", e);
         }
     }
 

Modified: trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/persistence/AbstractRegistryStore.java
URL: http://wso2.org/svn/browse/wso2/trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/persistence/AbstractRegistryStore.java?rev=41320&r1=41319&r2=41320&view=diff
==============================================================================
--- trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/persistence/AbstractRegistryStore.java	(original)
+++ trunk/carbon-components/mediation-initializer/org.wso2.carbon.mediation.initializer/src/main/java/org/wso2/carbon/mediation/initializer/persistence/AbstractRegistryStore.java	Wed Jul 15 12:21:46 2009
@@ -23,6 +23,7 @@
 import org.wso2.carbon.registry.core.exceptions.RegistryException;
 import org.wso2.carbon.registry.core.session.UserRegistry;
 import org.wso2.carbon.registry.core.Resource;
+import org.wso2.carbon.registry.core.jdbc.utils.Transaction;
 
 import javax.xml.stream.XMLStreamException;
 import java.util.Collection;
@@ -61,13 +62,25 @@
     }
 
     protected void persistElement(OMElement element, String resourcePath) throws RegistryException {
-        if (registry.resourceExists(resourcePath)) {
-            registry.delete(resourcePath);
+        try {
+            boolean transactionStarted = Transaction.isStarted();
+            if (!transactionStarted) {
+                registry.beginTransaction();
+            }
+            if (registry.resourceExists(resourcePath)) {
+                registry.delete(resourcePath);
+            }
+            Resource resource = registry.newResource();
+            resource.setContent(element.toString());
+            resource.setMediaType("text/xml");
+            registry.put(resourcePath, resource);
+            if (!transactionStarted) {
+                registry.commitTransaction();
+            }
+        } catch (Exception e) {
+            registry.rollbackTransaction();
+            throw new RegistryException("Unable to persist element", e);
         }
-        Resource resource = registry.newResource();
-        resource.setContent(element.toString());
-        resource.setMediaType("text/xml");
-        registry.put(resourcePath, resource);
     }
 
     protected void handleException(String message, Exception e) {



More information about the Carbon-dev mailing list