Author: pzf
Date: Mon Jul 30 05:37:18 2007
New Revision: 560948
URL: http://svn.apache.org/viewvc?view=rev&rev=560948
Log:
updated synapse to support pluggable configuration XML file types see JIRA
https://issues.apache.org/jira/browse/SYNAPSE-111
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/XMLConfigurationBuilder.java
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java?view=diff&rev=560948&r1=560947&r2=560948
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
Mon Jul 30 05:37:18 2007
@@ -32,13 +32,9 @@
import org.apache.synapse.registry.Registry;
import org.apache.axis2.AxisFault;
import org.apache.axis2.engine.AxisConfiguration;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
+import javax.xml.namespace.QName;
import java.util.*;
-import java.net.URLConnection;
import java.io.IOException;
/**
@@ -52,6 +48,7 @@
/** The remote registry made available to the Synapse configuration. Only
one is supported */
Registry registry = null;
+ private QName defaultQName = null;
/** Holds Proxy services defined through Synapse */
private Map proxyServices = new HashMap();
@@ -435,4 +432,12 @@
log.error(msg);
throw new SynapseException(msg);
}
+
+ public void setDefaultQName(QName defaultQName) {
+ this.defaultQName = defaultQName;
+ }
+
+ public QName getDefaultQName() {
+ return defaultQName;
+ }
}
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/XMLConfigurationBuilder.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/XMLConfigurationBuilder.java?view=diff&rev=560948&r1=560947&r2=560948
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/XMLConfigurationBuilder.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/XMLConfigurationBuilder.java
Mon Jul 30 05:37:18 2007
@@ -19,27 +19,15 @@
package org.apache.synapse.config.xml;
+import java.io.InputStream;
+
import org.apache.axiom.om.*;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.synapse.SynapseException;
-import org.apache.synapse.Mediator;
import org.apache.synapse.config.SynapseConfiguration;
-import org.apache.synapse.config.Entry;
-import org.apache.synapse.config.Util;
-import org.apache.synapse.config.xml.endpoints.EndpointAbstractFactory;
-import org.apache.synapse.core.axis2.ProxyService;
-import org.apache.synapse.mediators.base.SequenceMediator;
-import org.apache.synapse.mediators.builtin.SendMediator;
-import org.apache.synapse.endpoints.Endpoint;
-import org.apache.synapse.mediators.builtin.LogMediator;
-import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Iterator;
/**
@@ -49,183 +37,17 @@
private static Log log = LogFactory.getLog(XMLConfigurationBuilder.class);
- public static SynapseConfiguration getConfiguration(InputStream is) {
+ public static SynapseConfiguration getConfiguration(InputStream is) throws
XMLStreamException {
+
log.info("Generating the Synapse configuration model by parsing the
XML configuration");
- SynapseConfiguration config = new SynapseConfiguration();
-
- SequenceMediator rootSequence = new SequenceMediator();
- rootSequence.setName(org.apache.synapse.Constants.MAIN_SEQUENCE_KEY);
-
OMElement definitions = null;
- try {
- definitions = new StAXOMBuilder(is).getDocumentElement();
- definitions.build();
-
- OMNamespace namespace = definitions.getNamespace();
- if(namespace == null){
- handleException("No namespace is defined for definitions
element");
- }
-
- if (Constants.SYNAPSE_NAMESPACE.equals(namespace.getNamespaceURI())
- && Constants.DEFINITIONS_ELT.getLocalPart()
- .equals(definitions.getQName().getLocalPart())) {
-
- Iterator iter = definitions.getChildren();
-
- while (iter.hasNext()) {
- Object o = iter.next();
- if (o instanceof OMElement) {
- OMElement elt = (OMElement) o;
- if (Constants.SEQUENCE_ELT.equals(elt.getQName())) {
- String key = elt.getAttributeValue(
- new QName(Constants.NULL_NAMESPACE, "key"));
- // this could be a sequence def or a mediator of
the main sequence
- if (key != null) {
- Mediator m =
MediatorFactoryFinder.getInstance().getMediator(elt);
- rootSequence.addChild(m);
- } else {
- defineSequence(config, elt);
- }
- } else if
(Constants.ENDPOINT_ELT.equals(elt.getQName())) {
- defineEndpoint(config, elt);
- } else if (Constants.ENTRY_ELT.equals(elt.getQName()))
{
- defineEntry(config, elt);
- } else if (Constants.PROXY_ELT.equals(elt.getQName()))
{
- defineProxy(config, elt);
- } else if
(Constants.REGISTRY_ELT.equals(elt.getQName())) {
- defineRegistry(config, elt);
- } else {
- Mediator m =
MediatorFactoryFinder.getInstance().getMediator(elt);
- rootSequence.addChild(m);
- }
- }
- }
- } else {
- handleException("Invalid Synapse Configuration : No definition
element found");
- }
-
- } catch (XMLStreamException e) {
- handleException("Error parsing Synapse configuration : " +
e.getMessage(), e);
- }
-
- if (is != null) {
- try {
- is.close();
- } catch (IOException ignore) {}
- }
-
- if (config.getLocalRegistry().isEmpty() &&
config.getProxyServices().isEmpty() &&
- rootSequence.getList().isEmpty() && config.getRegistry() !=
null) {
- OMNode remoteConfigNode =
config.getRegistry().lookup("synapse.xml");
- config =
getConfiguration(Util.getStreamSource(remoteConfigNode).getInputStream());
- }
-
- if (config.getMainSequence() == null) {
- if (rootSequence.getList().isEmpty()) {
- setDefaultMainSequence(config);
- } else {
- config.addSequence(rootSequence.getName(), rootSequence);
- }
- } else if (!rootSequence.getList().isEmpty()) {
- handleException("Invalid Synapse Configuration : Conflict in
resolving the \"main\" " +
- "mediator\n\tSynapse Configuration cannot have sequence
named \"main\" and " +
- "toplevel mediators simultaniously");
- }
-
- if (config.getFaultSequence() == null) {
- setDefaultFaultSequence(config);
- }
-
+
+ definitions = new StAXOMBuilder(is).getDocumentElement();
+ definitions.build();
+
+ SynapseConfiguration config =
ConfigurationFactoryAndSerializerFinder.getInstance().getConfiguration(definitions);
return config;
+
}
-
- private static void defineRegistry(SynapseConfiguration config, OMElement
elem) {
- if (config.getRegistry() != null) {
- handleException("Only one remote registry can be defined within a
configuration");
- }
- config.setRegistry(RegistryFactory.createRegistry(elem));
- }
-
- private static void defineProxy(SynapseConfiguration config, OMElement
elem) {
- ProxyService proxy = ProxyServiceFactory.createProxy(elem);
- if (config.getProxyService(proxy.getName()) != null) {
- handleException("Duplicate proxy service with name : " +
proxy.getName());
- }
- config.addProxyService(proxy.getName(), proxy);
- }
-
- private static void defineEntry(SynapseConfiguration config, OMElement
elem) {
- Entry entry = EntryFactory.createEntry(elem);
- if (config.getLocalRegistry().get(entry.getKey()) != null) {
- handleException("Duplicate registry entry definition for key : " +
entry.getKey());
- }
- config.addEntry(entry.getKey(), entry);
- }
-
- public static void defineSequence(SynapseConfiguration config, OMElement
ele) {
-
- String name = ele.getAttributeValue(new
QName(Constants.NULL_NAMESPACE, "name"));
- if (name != null) {
- if (config.getLocalRegistry().get(name) != null) {
- handleException("Duplicate sequence definition : " + name);
- }
- config.addSequence(name,
MediatorFactoryFinder.getInstance().getMediator(ele));
- } else {
- handleException("Invalid sequence definition without a name");
- }
- }
-
- public static void defineEndpoint(SynapseConfiguration config, OMElement
ele) {
-
- String name = ele.getAttributeValue(new
QName(Constants.NULL_NAMESPACE, "name"));
- if (name != null) {
- if (config.getLocalRegistry().get(name.trim()) != null) {
- handleException("Duplicate endpoint definition : " + name);
- }
- Endpoint endpoint =
-
EndpointAbstractFactory.getEndpointFactroy(ele).createEndpoint(ele, false);
- config.addEndpoint(name.trim(), endpoint);
- } else {
- handleException("Invalid endpoint definition without a name");
- }
- }
-
- /**
- * Return the main sequence if one is not defined. This implementation
defaults to
- * a simple sequence with a <send/>
- *
- * @param config the configuration to be updated
- */
- private static void setDefaultMainSequence(SynapseConfiguration config) {
- SequenceMediator main = new SequenceMediator();
- main.setName(org.apache.synapse.Constants.MAIN_SEQUENCE_KEY);
- main.addChild(new SendMediator());
- config.addSequence(org.apache.synapse.Constants.MAIN_SEQUENCE_KEY,
main);
- }
-
- /**
- * Return the fault sequence if one is not defined. This implementation
defaults to
- * a simple sequence with a <log level="full"/>
- *
- * @param config the configuration to be updated
- */
- private static void setDefaultFaultSequence(SynapseConfiguration config) {
- SequenceMediator fault = new SequenceMediator();
- fault.setName(org.apache.synapse.Constants.FAULT_SEQUENCE_KEY);
- LogMediator log = new LogMediator();
- log.setLogLevel(LogMediator.FULL);
- fault.addChild(log);
- config.addSequence(org.apache.synapse.Constants.FAULT_SEQUENCE_KEY,
fault);
- }
-
- private static void handleException(String msg) {
- log.error(msg);
- throw new SynapseException(msg);
- }
-
- private static void handleException(String msg, Exception e) {
- log.error(msg, e);
- throw new SynapseException(msg, e);
- }
-}
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]