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