[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