You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by hi...@apache.org on 2010/09/23 07:02:58 UTC
svn commit: r1000314 - in
/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse:
config/xml/ message/store/
Author: hiranya
Date: Thu Sep 23 05:02:57 2010
New Revision: 1000314
URL: http://svn.apache.org/viewvc?rev=1000314&view=rev
Log:
Multi XML config support for message stored (SYNAPSE-618)
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MessageStoreFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MessageStoreSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationBuilder.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/store/AbstractMessageStore.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/store/MessageStore.java
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MessageStoreFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MessageStoreFactory.java?rev=1000314&r1=1000313&r2=1000314&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MessageStoreFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MessageStoreFactory.java Thu Sep 23 05:02:57 2010
@@ -24,6 +24,7 @@ import org.apache.axiom.om.OMElement;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.SynapseException;
+import org.apache.synapse.SynapseConstants;
import org.apache.synapse.message.store.InMemoryMessageStore;
import org.apache.synapse.message.store.MessageStore;
import org.apache.synapse.message.store.RedeliveryProcessor;
@@ -65,6 +66,8 @@ public class MessageStoreFactory {
"backoffMutiplier");
public static final QName PARAMETER_Q = new QName(XMLConfigConstants.SYNAPSE_NAMESPACE,
"parameter");
+ private static final QName DESCRIPTION_Q
+ = new QName(SynapseConstants.SYNAPSE_NAMESPACE, "description");
@SuppressWarnings({"UnusedDeclaration"})
public static MessageStore createMessageStore(OMElement elem, Properties properties) {
@@ -103,6 +106,11 @@ public class MessageStoreFactory {
messageStore.setRedeliveryProcessor(redeliveryProcessor);
}
+ OMElement descriptionElem = elem.getFirstChildWithName(DESCRIPTION_Q);
+ if (descriptionElem != null) {
+ messageStore.setDescription(descriptionElem.getText());
+ }
+
messageStore.setParameters(getParameters(elem));
return messageStore;
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MessageStoreSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MessageStoreSerializer.java?rev=1000314&r1=1000313&r2=1000314&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MessageStoreSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MessageStoreSerializer.java Thu Sep 23 05:02:57 2010
@@ -29,6 +29,7 @@ import org.apache.synapse.SynapseConstan
import org.apache.synapse.SynapseException;
import org.apache.synapse.message.store.MessageStore;
+import javax.xml.namespace.QName;
import java.util.Iterator;
/**
@@ -116,12 +117,28 @@ public class MessageStoreSerializer {
}
}
+ if (getSerializedDescription(messageStore) != null) {
+ store.addChild(getSerializedDescription(messageStore));
+ }
+
if (parent != null) {
parent.addChild(store);
}
return store;
}
+ private static OMElement getSerializedDescription(MessageStore messageStore) {
+ OMElement descriptionElem = fac.createOMElement(
+ new QName(SynapseConstants.SYNAPSE_NAMESPACE, "description"));
+
+ if (messageStore.getDescription() != null) {
+ descriptionElem.setText(messageStore.getDescription());
+ return descriptionElem;
+ } else {
+ return null;
+ }
+ }
+
private static void handleException(String msg) {
log.error(msg);
throw new SynapseException(msg);
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationBuilder.java?rev=1000314&r1=1000313&r2=1000314&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationBuilder.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationBuilder.java Thu Sep 23 05:02:57 2010
@@ -26,6 +26,7 @@ import org.apache.commons.logging.LogFac
import org.apache.synapse.Mediator;
import org.apache.synapse.Startup;
import org.apache.synapse.SynapseConstants;
+import org.apache.synapse.message.store.MessageStore;
import org.apache.synapse.commons.executors.PriorityExecutor;
import org.apache.synapse.config.Entry;
import org.apache.synapse.config.SynapseConfigUtils;
@@ -75,6 +76,7 @@ public class MultiXMLConfigurationBuilde
public static final String TASKS_DIR = "tasks";
public static final String EVENTS_DIR = "event-sources";
public static final String EXECUTORS_DIR = "priority-executors";
+ public static final String MESSAGE_STORE_DIR = "message-stores";
public static final String REGISTRY_FILE = "registry.xml";
@@ -121,6 +123,7 @@ public class MultiXMLConfigurationBuilde
createTasks(synapseConfig, root, properties);
createEventSources(synapseConfig, root, properties);
createExecutors(synapseConfig, root, properties);
+ createMessageStores(synapseConfig, root, properties);
return synapseConfig;
}
@@ -313,6 +316,30 @@ public class MultiXMLConfigurationBuilde
}
}
+ private static void createMessageStores(SynapseConfiguration synapseConfig ,
+ String rootDirPath, Properties properties)
+ throws XMLStreamException {
+
+ File messageStoresDir = new File(rootDirPath, MESSAGE_STORE_DIR);
+ if (messageStoresDir.exists() ) {
+ if (log.isDebugEnabled()) {
+ log.debug("Loading Message Stores from :" + messageStoresDir.getPath());
+ }
+
+ File[] messageStores = messageStoresDir.listFiles(filter);
+ for (File file : messageStores) {
+ try {
+ OMElement document = parseFile(file);
+ MessageStore messageStore = SynapseXMLConfigurationFactory.defineMessageStore(
+ synapseConfig, document, properties);
+ messageStore.setFileName(file.getName());
+ synapseConfig.getArtifactDeploymentStore().addArtifact(file.getAbsolutePath(),
+ messageStore.getName());
+ } catch (FileNotFoundException ignored ) { }
+ }
+ }
+ }
+
private static OMElement parseFile(File file)
throws FileNotFoundException, XMLStreamException {
InputStream is = new FileInputStream(file);
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationSerializer.java?rev=1000314&r1=1000313&r2=1000314&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MultiXMLConfigurationSerializer.java Thu Sep 23 05:02:57 2010
@@ -29,6 +29,7 @@ import org.apache.synapse.core.axis2.Pro
import org.apache.synapse.eventing.SynapseEventSource;
import org.apache.synapse.Startup;
import org.apache.synapse.SynapseConstants;
+import org.apache.synapse.message.store.MessageStore;
import org.apache.synapse.startup.AbstractStartup;
import org.apache.synapse.commons.executors.PriorityExecutor;
import org.apache.synapse.commons.executors.config.PriorityExecutorSerializer;
@@ -98,6 +99,7 @@ public class MultiXMLConfigurationSerial
serializeLocalRegistryValues(synapseConfig.getLocalRegistry().values(),
synapseConfig, definitions);
serializeExecutors(synapseConfig.getPriorityExecutors().values(), definitions);
+ serializeMessageStores(synapseConfig.getMessageStores().values(), definitions);
serializeSynapseXML(definitions);
markConfigurationForSerialization(synapseConfig);
@@ -148,6 +150,7 @@ public class MultiXMLConfigurationSerial
Collection<Startup> tasks = synapseConfig.getStartups();
Collection localEntries = synapseConfig.getLocalRegistry().values();
Collection<PriorityExecutor> executors = synapseConfig.getPriorityExecutors().values();
+ Collection<MessageStore> messageStores = synapseConfig.getMessageStores().values();
for (ProxyService service : proxyServices) {
if (service.getFileName() == null) {
@@ -199,6 +202,12 @@ public class MultiXMLConfigurationSerial
SynapseConstants.SYNAPSE_NAMESPACE);
}
+ for (MessageStore messageStore : messageStores) {
+ if(messageStore.getFileName() == null) {
+ MessageStoreSerializer.serializeMessageStore(definitions,messageStore);
+ }
+ }
+
serializeSynapseXML(definitions);
}
@@ -368,6 +377,26 @@ public class MultiXMLConfigurationSerial
return eventDirElem;
}
+ public OMElement serializeMessageStore(MessageStore messagestore,
+ OMElement parent) throws Exception {
+
+ File messageStoreDir = createDirectory(currentDirectory,
+ MultiXMLConfigurationBuilder.MESSAGE_STORE_DIR);
+ OMElement messageStoreElem = MessageStoreSerializer.serializeMessageStore(null,
+ messagestore);
+
+ String fileName = messagestore.getFileName();
+ if (fileName != null) {
+ File messageStoreFile = new File(messageStoreDir , fileName);
+ writeToFile(messageStoreElem , messageStoreFile);
+
+ } else if (parent != null) {
+ parent.addChild(messageStoreElem);
+ }
+
+ return messageStoreElem;
+ }
+
private void writeToFile(OMElement content, File file) throws Exception {
File tempFile = File.createTempFile("syn_mx_", ".xml");
OutputStream out = new FileOutputStream(tempFile);
@@ -428,6 +457,13 @@ public class MultiXMLConfigurationSerial
}
}
+ private void serializeMessageStores(Collection<MessageStore> messaegeStores,
+ OMElement parent) throws Exception{
+ for (MessageStore messageStore : messaegeStores) {
+ serializeMessageStore(messageStore, parent);
+ }
+ }
+
private void serializeSynapseXML(OMElement definitions) throws Exception {
File synapseXML = new File(currentDirectory, SynapseConstants.SYNAPSE_XML);
if (!currentDirectory.exists()) {
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/store/AbstractMessageStore.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/store/AbstractMessageStore.java?rev=1000314&r1=1000313&r2=1000314&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/store/AbstractMessageStore.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/store/AbstractMessageStore.java Thu Sep 23 05:02:57 2010
@@ -73,6 +73,16 @@ public abstract class AbstractMessageSto
*/
protected Map<String,Object> parameters;
+ /**
+ * Message Store description
+ */
+ protected String description;
+
+ /**
+ * Name of the file where this message store is defined
+ */
+ protected String fileName;
+
public void init(SynapseEnvironment se) {
this.synapseEnvironment = se;
this.synapseConfiguration = synapseEnvironment.getSynapseConfiguration();
@@ -159,4 +169,20 @@ public abstract class AbstractMessageSto
public void destroy() {
}
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getDescription() {
+ return this.description;
+ }
+
+ public void setFileName(String filename) {
+ this.fileName = filename;
+ }
+
+ public String getFileName() {
+ return this.fileName;
+ }
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/store/MessageStore.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/store/MessageStore.java?rev=1000314&r1=1000313&r2=1000314&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/store/MessageStore.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/store/MessageStore.java Thu Sep 23 05:02:57 2010
@@ -20,6 +20,7 @@
package org.apache.synapse.message.store;
import org.apache.synapse.config.SynapseConfiguration;
+import org.apache.synapse.SynapseArtifact;
import java.util.List;
import java.util.Map;
@@ -28,7 +29,7 @@ import java.util.Map;
* This is the interface for the Synapse Message Store
* Message Store used to store failed Messages.
*/
-public interface MessageStore {
+public interface MessageStore extends SynapseArtifact {
/**
* store the Message in the Message Store
@@ -154,4 +155,18 @@ public interface MessageStore {
* @param configuration Current SynapseConfiguration
*/
public void setConfiguration(SynapseConfiguration configuration);
+
+ /**
+ * Set the name of the file that the Message store is configured
+ *
+ * @param filename
+ */
+ public void setFileName(String filename);
+
+ /**
+ * get the file name that the message store is configured
+ * @return
+ */
+ public String getFileName();
+
}
\ No newline at end of file