You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by su...@apache.org on 2011/03/28 07:27:37 UTC
svn commit: r1086124 - in /synapse/trunk/java/modules/core/src:
main/java/org/apache/synapse/config/ main/java/org/apache/synapse/config/xml/
main/java/org/apache/synapse/mediators/template/
test/java/org/apache/synapse/config/
Author: supun
Date: Mon Mar 28 05:27:37 2011
New Revision: 1086124
URL: http://svn.apache.org/viewvc?rev=1086124&view=rev
Log:
applying the patch synapse_SYNAPSE-738_config_changes_update.patch for SYNAPSE-738, thanks Udayanga for the contribution
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/AbstractSynapseObserver.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseObserver.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/SynapseXMLConfigurationFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateMediator.java
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/SynapseObserverTest.java
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/AbstractSynapseObserver.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/AbstractSynapseObserver.java?rev=1086124&r1=1086123&r2=1086124&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/AbstractSynapseObserver.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/AbstractSynapseObserver.java Mon Mar 28 05:27:37 2011
@@ -28,6 +28,7 @@ import org.apache.synapse.core.axis2.Pro
import org.apache.synapse.endpoints.Endpoint;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.mediators.template.TemplateMediator;
public abstract class AbstractSynapseObserver implements SynapseObserver {
@@ -47,6 +48,16 @@ public abstract class AbstractSynapseObs
"from the Synapse configuration successfully");
}
+ public void sequenceTemplateAdded(Mediator template) {
+ log.info("Template : " + ((TemplateMediator) template).getName() + " was added " +
+ "to the Synapse configuration successfully" );
+ }
+
+ public void sequenceTemplateRemoved(Mediator template) {
+ log.info("Template : " + ((TemplateMediator) template).getName() + " was removed " +
+ "to the Synapse configuration successfully" );
+ }
+
public void entryAdded(Entry entry) {
log.info("Local entry : " + entry.getKey() + " was added " +
"to the Synapse configuration successfully");
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java?rev=1086124&r1=1086123&r2=1086124&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java Mon Mar 28 05:27:37 2011
@@ -25,9 +25,11 @@ import org.apache.axis2.engine.AxisConfi
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.*;
+import org.apache.synapse.config.xml.TemplateMediatorFactory;
import org.apache.synapse.config.xml.XMLToTemplateMapper;
import org.apache.synapse.config.xml.endpoints.TemplateFactory;
import org.apache.synapse.endpoints.Template;
+import org.apache.synapse.mediators.template.TemplateMediator;
import org.apache.synapse.message.processors.MessageProcessor;
import org.apache.synapse.message.store.MessageStore;
import org.apache.synapse.deployers.SynapseArtifactDeploymentStore;
@@ -61,6 +63,7 @@ public class SynapseConfiguration implem
private static final String ENTRY = "entry";
private static final String ENDPOINT = "endpoint";
private static final String SEQUENCE = "sequence";
+ private static final String TEMPLATE = "sequence-template";
/**
* The remote registry made available to the Synapse configuration. Only one
@@ -173,6 +176,24 @@ public class SynapseConfiguration implem
}
}
+ /**
+ * Add a sequence-template into the local registry. If a template already exists by the specified
+ * key a runtime exception is thrown.
+ *
+ * @param key
+ * the name for the sequence
+ * @param mediator
+ * a Sequence mediator
+ */
+ public synchronized void addSequenceTemplate(String key, TemplateMediator mediator) {
+ assertAlreadyExists(key, TEMPLATE);
+ localRegistry.put(key, mediator);
+
+ for (SynapseObserver o : observers) {
+ o.sequenceTemplateAdded(mediator);
+ }
+ }
+
public synchronized void updateSequence(String key, Mediator mediator) {
localRegistry.put(key, mediator);
for (SynapseObserver o : observers) {
@@ -220,6 +241,89 @@ public class SynapseConfiguration implem
}
/**
+ * Returns the map of defined synapse templates in the configuration excluding the
+ * fetched sequences from remote registry.
+ *
+ * @return Map of Templates defined in the local configuration
+ */
+ public Map<String, TemplateMediator> getSequenceTemplates() {
+
+ Map<String, TemplateMediator> definedTemplates = new HashMap<String, TemplateMediator>();
+
+ synchronized (this) {
+ for (Object o : localRegistry.values()) {
+ if (o instanceof TemplateMediator) {
+ TemplateMediator template = (TemplateMediator) o;
+ definedTemplates.put(template.getName(), template);
+ }
+ }
+ }
+ return definedTemplates;
+ }
+
+ /**
+ * Return the template specified with the given key
+ *
+ * @param key
+ * the key being referenced for the template
+ * @return the template referenced by the key from local/remote registry
+ */
+ public TemplateMediator getSequenceTemplate(String key) {
+ Object o = getEntry(key);
+ if (o instanceof TemplateMediator) {
+ return (TemplateMediator) o;
+ }
+
+ Entry entry = null;
+ if (o == null) {
+ entry = new Entry(key);
+ entry.setType(Entry.REMOTE_ENTRY);
+ } else {
+ Object object = localRegistry.get(key);
+ if (object instanceof Entry) {
+ entry = (Entry) object;
+ }
+ }
+
+ assertEntryNull(entry, key);
+
+ //noinspection ConstantConditions
+ if (entry.getMapper() == null) {
+ entry.setMapper(new XMLToTemplateMapper());
+ }
+
+ if (entry.getType() == Entry.REMOTE_ENTRY) {
+ if (registry != null) {
+ o = registry.getResource(entry, getProperties());
+ if (o != null && o instanceof TemplateMediator) {
+ localRegistry.put(key, entry);
+ return (TemplateMediator) o;
+ } else if (o instanceof OMNode) {
+ TemplateMediator m = (TemplateMediator) new TemplateMediatorFactory().createMediator(
+ (OMElement) o, properties);
+ if (m != null) {
+ entry.setValue(m);
+ return m;
+ }
+ }
+ }
+ } else {
+ Object value = entry.getValue();
+ if (value instanceof OMNode) {
+ Object object = entry.getMapper().getObjectFromOMNode(
+ (OMNode) value, getProperties());
+ if (object instanceof TemplateMediator) {
+ entry.setValue(object);
+ return (TemplateMediator) object;
+ }
+ }
+ }
+
+ return null;
+ }
+
+
+ /**
* Gets the mandatory sequence, from the direct reference. This is also available in the
* {@link SynapseConfiguration#getSequence} but this method improves the performance hence this
* will be required for all messages
@@ -320,6 +424,24 @@ public class SynapseConfiguration implem
}
/**
+ * Removes a template from the local registry
+ *
+ * @param name
+ * of the template to be removed
+ */
+ public synchronized void removeSequenceTemplate(String name) {
+ Object sequence = localRegistry.get(name);
+ if (sequence instanceof TemplateMediator) {
+ localRegistry.remove(name);
+ for (SynapseObserver o : observers) {
+ o.sequenceTemplateRemoved((Mediator) sequence);
+ }
+ } else {
+ handleException("No template exists by the key/name : " + name);
+ }
+ }
+
+ /**
* Return the main/default sequence to be executed. This is the sequence
* which will execute for all messages when message mediation takes place
*
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseObserver.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseObserver.java?rev=1086124&r1=1086123&r2=1086124&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseObserver.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseObserver.java Mon Mar 28 05:27:37 2011
@@ -45,6 +45,18 @@ public interface SynapseObserver {
*/
public void sequenceRemoved(Mediator sequence);
+ /** Event fired when a new sequence template is added to the configuration
+ *
+ * @param template the Sequence mediator added to the configuration
+ */
+ public void sequenceTemplateAdded(Mediator template);
+
+ /** Event fired when an existing sequence template is removed from the configuration
+ *
+ * @param template the Sequence removed from the configuration
+ */
+ public void sequenceTemplateRemoved(Mediator template);
+
/** Event fired when an entry is added to the configuration
*
* @param entry the Entry added to the configuration
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=1086124&r1=1086123&r2=1086124&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 Mon Mar 28 05:27:37 2011
@@ -289,8 +289,6 @@ public class MultiXMLConfigurationBuilde
for (File file : sequences) {
try {
OMElement document = parseFile(file);
- SynapseXMLConfigurationFactory.defineTemplate(
- synapseConfig, document, properties);
OMElement element = document.getFirstChildWithName(
new QName(SynapseConstants.SYNAPSE_NAMESPACE, "sequence"));
if (element != null) {
@@ -303,20 +301,21 @@ public class MultiXMLConfigurationBuilde
file.getAbsolutePath(), mediator.getName());
}
return;
- }
+ } else {
- element = document.getFirstChildWithName(
- new QName(SynapseConstants.SYNAPSE_NAMESPACE, "endpoint"));
- if (element != null) {
- Template endpointTemplate =
- SynapseXMLConfigurationFactory.defineEndpointTemplate(
- synapseConfig, document, properties);
- if (endpointTemplate != null) {
- endpointTemplate.setFileName(file.getName());
- synapseConfig.getArtifactDeploymentStore().addArtifact(
- file.getAbsolutePath(), endpointTemplate.getFileName());
+ element = document.getFirstChildWithName(
+ new QName(SynapseConstants.SYNAPSE_NAMESPACE, "endpoint"));
+ if (element != null) {
+ Template endpointTemplate =
+ SynapseXMLConfigurationFactory.defineEndpointTemplate(
+ synapseConfig, document, properties);
+ if (endpointTemplate != null) {
+ endpointTemplate.setFileName(file.getName());
+ synapseConfig.getArtifactDeploymentStore().addArtifact(
+ file.getAbsolutePath(), endpointTemplate.getFileName());
+ }
+ return;
}
- return;
}
} catch (FileNotFoundException ignored) {}
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SynapseXMLConfigurationFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SynapseXMLConfigurationFactory.java?rev=1086124&r1=1086123&r2=1086124&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SynapseXMLConfigurationFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SynapseXMLConfigurationFactory.java Mon Mar 28 05:27:37 2011
@@ -28,6 +28,7 @@ import org.apache.synapse.SynapseConstan
import org.apache.synapse.SynapseException;
import org.apache.synapse.config.xml.endpoints.TemplateFactory;
import org.apache.synapse.endpoints.Template;
+import org.apache.synapse.mediators.template.TemplateMediator;
import org.apache.synapse.message.processors.MessageProcessor;
import org.apache.synapse.message.store.MessageStore;
import org.apache.synapse.commons.executors.PriorityExecutor;
@@ -234,7 +235,7 @@ public class SynapseXMLConfigurationFact
try {
mediator = MediatorFactoryFinder.getInstance().getMediator(ele, properties);
if (mediator != null) {
- config.addSequence(name, mediator);
+ config.addSequenceTemplate(name, (TemplateMediator) mediator) ;
}
} catch (Exception e) {
if (failSafeSequenceEnabled) {
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorFactory.java?rev=1086124&r1=1086123&r2=1086124&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorFactory.java Mon Mar 28 05:27:37 2011
@@ -53,12 +53,8 @@ public class TemplateMediatorFactory ext
protected Mediator createSpecificMediator(OMElement elem, Properties properties) {
TemplateMediator templateTemplateMediator = new TemplateMediator();
OMAttribute nameAttr = elem.getAttribute(ATT_NAME);
- OMAttribute errorHandlerAttr = elem.getAttribute(ATT_ONERROR);
if (nameAttr != null) {
templateTemplateMediator.setName(nameAttr.getAttributeValue());
- if (errorHandlerAttr != null) {
- templateTemplateMediator.setErrorHandler(errorHandlerAttr.getAttributeValue());
- }
processAuditStatus(templateTemplateMediator, elem);
initParameters(elem, templateTemplateMediator);
OMElement templateBodyElem = elem.getFirstChildWithName(TEMPLATE_BODY_Q);
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorSerializer.java?rev=1086124&r1=1086123&r2=1086124&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/TemplateMediatorSerializer.java Mon Mar 28 05:27:37 2011
@@ -47,11 +47,6 @@ public class TemplateMediatorSerializer
if (mediator.getName() != null) {
templateElem.addAttribute(fac.createOMAttribute(
"name", nullNS, mediator.getName()));
-
- if (mediator.getErrorHandler() != null) {
- templateElem.addAttribute(fac.createOMAttribute(
- "onError", nullNS, mediator.getErrorHandler()));
- }
serializeParams(templateElem,mediator);
serializeBody(templateElem, mediator.getList());
saveTracingState(templateElem, mediator);
@@ -63,7 +58,7 @@ public class TemplateMediatorSerializer
private void serializeParams(OMElement templateElem, TemplateMediator mediator) {
Collection<String> params = mediator.getParameters();
for (String param : params) {
- if (!"".equals(param)) {
+ if (param != null && !"".equals(param)) {
OMElement paramEl = fac.createOMElement("parameter", synNS);
paramEl.addAttribute(fac.createOMAttribute("name", nullNS, param));
templateElem.addChild(paramEl);
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateMediator.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateMediator.java?rev=1086124&r1=1086123&r2=1086124&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateMediator.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/template/TemplateMediator.java Mon Mar 28 05:27:37 2011
@@ -22,7 +22,7 @@ import org.apache.synapse.MessageContext
import org.apache.synapse.SynapseConstants;
import org.apache.synapse.SynapseLog;
import org.apache.synapse.core.SynapseEnvironment;
-import org.apache.synapse.mediators.base.SequenceMediator;
+import org.apache.synapse.mediators.AbstractListMediator;
import java.util.Collection;
import java.util.Stack;
@@ -34,11 +34,12 @@ import java.util.Stack;
* xpath extension var or function , defined under function scope
* ie:- $func:p1 or get-property('func','p2')
*/
-public class TemplateMediator extends SequenceMediator {
+public class TemplateMediator extends AbstractListMediator {
private Collection<String> paramNames;
private String eipPatternName;
+ private String fileName;
public void setParameters(Collection<String> paramNames) {
this.paramNames = paramNames;
@@ -107,4 +108,11 @@ public class TemplateMediator extends Se
}
}
+ public void setFileName(String name) {
+ fileName = name;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
}
Modified: synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/SynapseObserverTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/SynapseObserverTest.java?rev=1086124&r1=1086123&r2=1086124&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/SynapseObserverTest.java (original)
+++ synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/SynapseObserverTest.java Mon Mar 28 05:27:37 2011
@@ -26,6 +26,7 @@ import org.apache.synapse.eventing.Synap
import org.apache.synapse.core.axis2.ProxyService;
import org.apache.synapse.Mediator;
import org.apache.synapse.Startup;
+import org.apache.synapse.mediators.template.TemplateMediator;
import org.apache.synapse.startup.quartz.SimpleQuartz;
import org.apache.synapse.commons.executors.PriorityExecutor;
import org.apache.synapse.mediators.base.SequenceMediator;
@@ -42,6 +43,7 @@ public class SynapseObserverTest extends
private static final int STARTUP = 4;
private static final int EVENT_SRC = 5;
private static final int EXECUTOR = 6;
+ private static final int SEQUENCE_TEMPLATE = 7;
SimpleSynapseObserver observer = new SimpleSynapseObserver();
@@ -64,6 +66,13 @@ public class SynapseObserverTest extends
synapseConfig.removeSequence(seq.getName());
assertItemRemoved(seq.getName(), SEQUENCE);
+ TemplateMediator template = new TemplateMediator();
+ template.setName("template1");
+ synapseConfig.addSequenceTemplate(template.getName(), template);
+ assertItemAdded(template.getName(), SEQUENCE_TEMPLATE);
+ synapseConfig.removeSequenceTemplate(template.getName());
+ assertItemRemoved(template.getName(), SEQUENCE_TEMPLATE);
+
Entry entry = new Entry();
entry.setKey("entry1");
synapseConfig.addEntry(entry.getKey(), entry);
@@ -118,6 +127,7 @@ public class SynapseObserverTest extends
tracker.put(STARTUP, new HashSet<String>());
tracker.put(EVENT_SRC, new HashSet<String>());
tracker.put(EXECUTOR, new HashSet<String>());
+ tracker.put(SEQUENCE_TEMPLATE, new HashSet<String>());
}
public void endpointAdded(Endpoint endpoint) {
@@ -160,6 +170,14 @@ public class SynapseObserverTest extends
tracker.get(SEQUENCE).remove(((SequenceMediator) sequence).getName());
}
+ public void sequenceTemplateAdded(Mediator template) {
+ tracker.get(SEQUENCE_TEMPLATE).add(((TemplateMediator) template).getName());
+ }
+
+ public void sequenceTemplateRemoved(Mediator template) {
+ tracker.get(SEQUENCE_TEMPLATE).remove(((TemplateMediator) template).getName());
+ }
+
public void startupAdded(Startup startup) {
tracker.get(STARTUP).add(startup.getName());
}