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 2010/05/07 10:33:57 UTC
svn commit: r942029 - in
/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse: ./
config/xml/ config/xml/endpoints/ endpoints/
Author: supun
Date: Fri May 7 08:33:56 2010
New Revision: 942029
URL: http://svn.apache.org/viewvc?rev=942029&view=rev
Log:
Enabling endpoints to have user defined properties. The immediate use case is for the Loadbalancing algorithms. The corresponding issue is SYNAPSE-615
Added:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/PropertyInclude.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorPropertySerializer.java
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/IndirectEndpointFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/IndirectEndpointSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/ResolvingEndpointFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/ResolvingEndpointSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
Added: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/PropertyInclude.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/PropertyInclude.java?rev=942029&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/PropertyInclude.java (added)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/PropertyInclude.java Fri May 7 08:33:56 2010
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.synapse;
+
+import org.apache.synapse.mediators.MediatorProperty;
+
+import java.util.Collection;
+
+/**
+ * This inteface makes an entity to have properties. Usually properties are specified
+ * in the XML configuration langugae.
+ */
+public interface PropertyInclude {
+ /**
+ * Add a property
+ * @param property property to be added
+ */
+ void addProperty(MediatorProperty property);
+
+ /**
+ * Add a set of properties
+ * @param properties <code>Collection</code> of properties to be added
+ */
+ void addProperties(Collection<MediatorProperty> properties);
+
+ /**
+ * Retrieve the property with the specific name
+ * @param name name of the parameter
+ * @return the value of the parameter if present otherwise <code>null</code>
+ */
+ MediatorProperty getProperty(String name);
+
+ /**
+ * Remove a property and return it
+ * @param name name of the property to be removed
+ * @return Property which is removed
+ */
+ MediatorProperty removeProperty(String name);
+
+ /**
+ * Get all the parameters as a <code>Collection</code>
+ * @return retrieve the parameters as a <code>Collection</code>
+ */
+ Collection<MediatorProperty> getProperties();
+}
Added: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorPropertySerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorPropertySerializer.java?rev=942029&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorPropertySerializer.java (added)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorPropertySerializer.java Fri May 7 08:33:56 2010
@@ -0,0 +1,111 @@
+package org.apache.synapse.config.xml;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.synapse.mediators.MediatorProperty;
+import org.apache.synapse.SynapseConstants;
+import org.apache.synapse.SynapseException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import java.util.Collection;
+
+/**
+ * A utility class for serializing instances of MediatorProperty objects by reading
+ * through a given XML configuration
+ *
+ * <pre>
+ * <element>
+ * <property name="string" (value="literal" | expression="xpath")/>*
+ * </element>
+ * </pre>
+ */
+public class MediatorPropertySerializer {
+ private static final Log log = LogFactory.getLog(MediatorPropertySerializer.class);
+
+ protected static final OMFactory fac = OMAbstractFactory.getOMFactory();
+ protected static final OMNamespace synNS = SynapseConstants.SYNAPSE_OMNAMESPACE;
+ protected static final OMNamespace nullNS
+ = fac.createOMNamespace(XMLConfigConstants.NULL_NAMESPACE, "");
+
+ protected static final QName PROP_Q
+ = new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, "property");
+
+ /**
+ * Serialize all the properties to the given paren element. For each and every
+ * property ther will be a seperate property element created inside the parent element.
+ *
+ * @param parent element to which property elements should be added
+ * @param props <code>Collection</code> of propertis
+ */
+ public static void serializeMediatorProperties(OMElement parent,
+ Collection<MediatorProperty> props) {
+ serializeMediatorProperties(parent, props, PROP_Q);
+ }
+
+ /**
+ * Serialize all the properties to the given paren element. For each and every
+ * property ther will be a seperate element with the given name created inside the
+ * parent element.
+ *
+ * @param parent element to which property elements should be added
+ * @param props <code>Collection</code> of propertis
+ * @param childElementName <code>QNmae</code> of the property element to be created
+ */
+ public static void serializeMediatorProperties(OMElement parent,
+ Collection<MediatorProperty> props,
+ QName childElementName) {
+ for (MediatorProperty mp : props) {
+ serializeMediatorProperty(parent, mp, childElementName);
+ }
+ }
+
+ /**
+ * Serialize the property to the given paren element. There will be a element created with
+ * the name property inside the parent element.
+ *
+ * @param parent element to which property elements should be added
+ * @param mp a property to be serialized
+ */
+ public static void serializeMediatorProperty(OMElement parent,
+ MediatorProperty mp) {
+ serializeMediatorProperty(parent, mp, PROP_Q);
+ }
+
+ /**
+ * Serialize the property to the given paren element. There will be a element created with
+ * given name inside the parent element.
+ *
+ * @param parent element to which property elements should be added
+ * @param mp a property to be serialized
+ * @param childElementName <code>QName</code> of the element to be created
+ */
+ public static void serializeMediatorProperty(OMElement parent,
+ MediatorProperty mp,
+ QName childElementName) {
+ OMElement prop = fac.createOMElement(childElementName, parent);
+ if (mp.getName() != null) {
+ prop.addAttribute(fac.createOMAttribute("name", nullNS, mp.getName()));
+ } else {
+ String msg = "Mediator property name missing";
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+
+ if (mp.getValue() != null) {
+ prop.addAttribute(fac.createOMAttribute("value", nullNS, mp.getValue()));
+
+ } else if (mp.getExpression() != null) {
+ SynapseXPathSerializer.serializeXPath(mp.getExpression(), prop, "expression");
+
+ } else {
+ String msg = "Mediator property must have a literal value or be an expression";
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+
+ }
+}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java Fri May 7 08:33:56 2010
@@ -87,6 +87,8 @@ public class AddressEndpointFactory exte
processAuditStatus(definition, addressEndpoint.getName(), addressElement);
}
+ processProperties(addressEndpoint, epConfig);
+
return addressEndpoint;
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java Fri May 7 08:33:56 2010
@@ -45,6 +45,10 @@ public class AddressEndpointSerializer e
= fac.createOMElement("endpoint", SynapseConstants.SYNAPSE_OMNAMESPACE);
AddressEndpoint addressEndpoint = (AddressEndpoint) endpoint;
+
+ // serialize the properties
+ serializeProperties(addressEndpoint, endpointElement);
+
String name = addressEndpoint.getName();
boolean anon = addressEndpoint.isAnonymous();
if (name != null && !anon) {
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java Fri May 7 08:33:56 2010
@@ -85,6 +85,9 @@ public class DefaultEndpointFactory exte
defaultEndpoint.setDefinition(endpoint);
processAuditStatus(endpoint, defaultEndpoint.getName(),defaultElement);
}
+
+ processProperties(defaultEndpoint, epConfig);
+
return defaultEndpoint;
}
@@ -155,5 +158,5 @@ public class DefaultEndpointFactory exte
}
}
}
- }
+ }
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointSerializer.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointSerializer.java Fri May 7 08:33:56 2010
@@ -54,6 +54,9 @@ public class DefaultEndpointSerializer e
OMElement defaultElement = serializeEndpointDefinition(epAddress);
endpointElement.addChild(defaultElement);
+ // serialize the properties
+ serializeProperties(defaultEndpoint, endpointElement);
+
return endpointElement;
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java Fri May 7 08:33:56 2010
@@ -126,6 +126,8 @@ public class DynamicLoadbalanceEndpointF
}
}
+ processProperties(loadbalanceEndpoint, epConfig);
+
return loadbalanceEndpoint;
}
return null;
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointSerializer.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointSerializer.java Fri May 7 08:33:56 2010
@@ -55,6 +55,8 @@ public class DynamicLoadbalanceEndpointS
DynamicLoadbalanceEndpoint dynamicLoadbalanceEndpoint = (DynamicLoadbalanceEndpoint) endpoint;
+ // serialize the parameters
+ serializeProperties(dynamicLoadbalanceEndpoint, endpointElement);
String name = dynamicLoadbalanceEndpoint.getName();
boolean anon = dynamicLoadbalanceEndpoint.isAnonymous();
@@ -84,7 +86,7 @@ public class DynamicLoadbalanceEndpointS
membershipHandlerElement.addAttribute("class",loadBalanceMembershipHandler.getClass().getName(),null);
Properties membershipHandlerProperties = loadBalanceMembershipHandler.getProperties();
- OMElement propertyElement = null;
+ OMElement propertyElement;
for (Object property : membershipHandlerProperties.keySet()){
propertyElement = fac.createOMElement("property", SynapseConstants.SYNAPSE_OMNAMESPACE);
membershipHandlerElement.addChild(propertyElement);
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointFactory.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointFactory.java Fri May 7 08:33:56 2010
@@ -28,16 +28,21 @@ import org.apache.synapse.SynapseConstan
import org.apache.synapse.SynapseException;
import org.apache.synapse.config.XMLToObjectMapper;
import org.apache.synapse.config.xml.XMLConfigConstants;
+import org.apache.synapse.config.xml.MediatorPropertyFactory;
import org.apache.synapse.endpoints.Endpoint;
import org.apache.synapse.endpoints.IndirectEndpoint;
import org.apache.synapse.endpoints.EndpointDefinition;
+import org.apache.synapse.PropertyInclude;
+import org.apache.synapse.mediators.MediatorProperty;
import org.apache.synapse.endpoints.AbstractEndpoint;
import org.apache.synapse.util.UUIDGenerator;
+
import javax.xml.namespace.QName;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.StringTokenizer;
+import java.util.List;
/**
* All endpoint factories should extend from this abstract class. Use EndpointFactory to obtain the
@@ -501,6 +506,21 @@ public abstract class EndpointFactory im
return endpoints;
}
+ /**
+ * Helper method to extract endpoint properties.
+ *
+ * @param endpoint actual endpoint to set the properties
+ * @param endpointElement actual endpoint element
+ */
+ protected void processProperties(PropertyInclude endpoint, OMElement endpointElement) {
+ List<MediatorProperty> properties =
+ MediatorPropertyFactory.getMediatorProperties(endpointElement);
+
+ if (properties != null && properties.size() > 0) {
+ endpoint.addProperties(properties);
+ }
+ }
+
protected 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/endpoints/EndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointSerializer.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/EndpointSerializer.java Fri May 7 08:33:56 2010
@@ -25,11 +25,16 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.SynapseConstants;
import org.apache.synapse.SynapseException;
+import org.apache.synapse.PropertyInclude;
+import org.apache.synapse.mediators.MediatorProperty;
import org.apache.synapse.aspects.statistics.StatisticsConfigurable;
import org.apache.synapse.config.xml.XMLConfigConstants;
+import org.apache.synapse.config.xml.MediatorPropertySerializer;
import org.apache.synapse.endpoints.*;
import org.apache.synapse.endpoints.EndpointDefinition;
+import java.util.Collection;
+
/**
* All endpoint serializers should implement this interface. Use EndpointSerializer to
* obtain the correct EndpointSerializer implementation for a particular endpoint.
@@ -296,4 +301,11 @@ public abstract class EndpointSerializer
throw new SynapseException("Serializer for endpoint " +
endpoint.getClass().toString() + " is not defined.");
}
+
+ protected void serializeProperties(PropertyInclude endpoint, OMElement element) {
+ Collection<MediatorProperty> properties = endpoint.getProperties();
+ if (properties != null && properties.size() > 0) {
+ MediatorPropertySerializer.serializeMediatorProperties(element, properties);
+ }
+ }
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointFactory.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointFactory.java Fri May 7 08:33:56 2010
@@ -59,6 +59,9 @@ public class FailoverEndpointFactory ext
}
// set endpoints and return
failoverEndpoint.setChildren(getEndpoints(failoverElement, failoverEndpoint));
+ // process the parameters
+ processProperties(failoverEndpoint, epConfig);
+
return failoverEndpoint;
}
return null;
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointSerializer.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/FailoverEndpointSerializer.java Fri May 7 08:33:56 2010
@@ -22,7 +22,6 @@ package org.apache.synapse.config.xml.en
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.synapse.SynapseConstants;
-import org.apache.synapse.SynapseException;
import org.apache.synapse.endpoints.Endpoint;
import org.apache.synapse.endpoints.FailoverEndpoint;
@@ -44,6 +43,10 @@ public class FailoverEndpointSerializer
fac = OMAbstractFactory.getOMFactory();
OMElement endpointElement
= fac.createOMElement("endpoint", SynapseConstants.SYNAPSE_OMNAMESPACE);
+
+ // serialize the parameters
+ serializeProperties(failoverEndpoint, endpointElement);
+
OMElement failoverElement
= fac.createOMElement("failover", SynapseConstants.SYNAPSE_OMNAMESPACE);
endpointElement.addChild(failoverElement);
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/IndirectEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/IndirectEndpointFactory.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/IndirectEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/IndirectEndpointFactory.java Fri May 7 08:33:56 2010
@@ -51,6 +51,10 @@ public class IndirectEndpointFactory ext
indirectEndpoint.setName(name);
}
indirectEndpoint.setKey(ref);
+
+ // process the parameters
+ processProperties(indirectEndpoint, epConfig);
+
return indirectEndpoint;
}
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/IndirectEndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/IndirectEndpointSerializer.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/IndirectEndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/IndirectEndpointSerializer.java Fri May 7 08:33:56 2010
@@ -22,7 +22,6 @@ package org.apache.synapse.config.xml.en
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.synapse.SynapseConstants;
-import org.apache.synapse.SynapseException;
import org.apache.synapse.endpoints.Endpoint;
import org.apache.synapse.endpoints.IndirectEndpoint;
@@ -48,6 +47,9 @@ public class IndirectEndpointSerializer
endpointElement.addAttribute("key", ref, null);
}
+ // serialize the parameters
+ serializeProperties(indirectEndpoint, endpointElement);
+
return endpointElement;
}
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointFactory.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointFactory.java Fri May 7 08:33:56 2010
@@ -34,7 +34,6 @@ import javax.xml.namespace.QName;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
-import java.util.List;
/**
* Creates {@link LoadbalanceEndpoint} using an XML configuration.
@@ -132,6 +131,9 @@ public final class LoadbalanceEndpointFa
loadbalanceEndpoint.setFailover(false);
}
+ // process the parameters
+ processProperties(loadbalanceEndpoint, epConfig);
+
return loadbalanceEndpoint;
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointSerializer.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/LoadbalanceEndpointSerializer.java Fri May 7 08:33:56 2010
@@ -26,8 +26,6 @@ import org.apache.synapse.SynapseConstan
import org.apache.synapse.config.xml.XMLConfigConstants;
import org.apache.synapse.endpoints.Endpoint;
import org.apache.synapse.endpoints.LoadbalanceEndpoint;
-import org.apache.synapse.endpoints.algorithms.LoadbalanceAlgorithm;
-import org.apache.synapse.endpoints.algorithms.RoundRobin;
/**
* Serializes {@link LoadbalanceEndpoint} to an XML configuration.
@@ -45,9 +43,12 @@ public class LoadbalanceEndpointSerializ
fac = OMAbstractFactory.getOMFactory();
OMElement endpointElement
= fac.createOMElement("endpoint", SynapseConstants.SYNAPSE_OMNAMESPACE);
-
+
LoadbalanceEndpoint loadbalanceEndpoint = (LoadbalanceEndpoint) endpoint;
+ // serialize the parameters
+ serializeProperties(loadbalanceEndpoint, endpointElement);
+
String name = loadbalanceEndpoint.getName();
boolean anon = loadbalanceEndpoint.isAnonymous();
if (name != null && !anon) {
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/ResolvingEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/ResolvingEndpointFactory.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/ResolvingEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/ResolvingEndpointFactory.java Fri May 7 08:33:56 2010
@@ -20,7 +20,6 @@
package org.apache.synapse.config.xml.endpoints;
import org.apache.synapse.endpoints.Endpoint;
-import org.apache.synapse.endpoints.IndirectEndpoint;
import org.apache.synapse.endpoints.ResolvingEndpoint;
import org.apache.synapse.config.xml.SynapseXPathFactory;
import org.apache.axiom.om.OMElement;
@@ -45,8 +44,7 @@ public class ResolvingEndpointFactory ex
protected Endpoint createEndpoint(OMElement epConfig, boolean anonymousEndpoint) {
- ResolvingEndpoint resolvingEndpoint = new ResolvingEndpoint();
- String ref = epConfig.getAttributeValue(ATTR_KEY_EXPRESSION);
+ ResolvingEndpoint resolvingEndpoint = new ResolvingEndpoint();
String name = epConfig.getAttributeValue(new QName("name"));
if (name != null) {
resolvingEndpoint.setName(name);
@@ -58,6 +56,10 @@ public class ResolvingEndpointFactory ex
handleException("Couldn't build the ResolvingEndpoint, unable to set " +
"the key-expression XPath", e);
}
+
+ // process the parameters
+ processProperties(resolvingEndpoint, epConfig);
+
return resolvingEndpoint;
}
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/ResolvingEndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/ResolvingEndpointSerializer.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/ResolvingEndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/ResolvingEndpointSerializer.java Fri May 7 08:33:56 2010
@@ -22,7 +22,6 @@ package org.apache.synapse.config.xml.en
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.synapse.endpoints.Endpoint;
-import org.apache.synapse.endpoints.IndirectEndpoint;
import org.apache.synapse.endpoints.ResolvingEndpoint;
import org.apache.synapse.SynapseConstants;
import org.apache.synapse.config.xml.SynapseXPathSerializer;
@@ -48,6 +47,9 @@ public class ResolvingEndpointSerializer
endpointElement.addAttribute("name", resolvingEndpoint.getName(), null);
}
+ // serialize the parameters
+ serializeProperties(resolvingEndpoint, endpointElement);
+
return endpointElement;
}
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointFactory.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointFactory.java Fri May 7 08:33:56 2010
@@ -118,6 +118,9 @@ public class SALoadbalanceEndpointFactor
createLoadbalanceAlgorithm(loadbalanceElement, endpoints);
loadbalanceEndpoint.setAlgorithm(algorithm);
+ // process the parameters
+ processProperties(loadbalanceEndpoint, epConfig);
+
return loadbalanceEndpoint;
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointSerializer.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/SALoadbalanceEndpointSerializer.java Fri May 7 08:33:56 2010
@@ -25,8 +25,6 @@ import org.apache.synapse.SynapseConstan
import org.apache.synapse.config.xml.XMLConfigConstants;
import org.apache.synapse.endpoints.Endpoint;
import org.apache.synapse.endpoints.SALoadbalanceEndpoint;
-import org.apache.synapse.endpoints.algorithms.LoadbalanceAlgorithm;
-import org.apache.synapse.endpoints.algorithms.RoundRobin;
import org.apache.synapse.endpoints.dispatch.Dispatcher;
import org.apache.synapse.endpoints.dispatch.HttpSessionDispatcher;
import org.apache.synapse.endpoints.dispatch.SimpleClientSessionDispatcher;
@@ -51,7 +49,9 @@ public class SALoadbalanceEndpointSerial
fac = OMAbstractFactory.getOMFactory();
OMElement endpointElement
= fac.createOMElement("endpoint", SynapseConstants.SYNAPSE_OMNAMESPACE);
-
+ // serialize the parameters
+ serializeProperties(loadbalanceEndpoint, endpointElement);
+
String name = loadbalanceEndpoint.getName();
boolean anon = loadbalanceEndpoint.isAnonymous();
if (name != null && !anon) {
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java Fri May 7 08:33:56 2010
@@ -86,6 +86,8 @@ public class WSDLEndpointFactory extends
wsdlEndpoint.setName(name.getAttributeValue());
}
+ processProperties(wsdlEndpoint, epConfig);
+
OMElement wsdlElement = epConfig.getFirstChildWithName
(new QName(SynapseConstants.SYNAPSE_NAMESPACE, "wsdl"));
if (wsdlElement != null) {
@@ -170,6 +172,9 @@ public class WSDLEndpointFactory extends
}
}
+ // process the parameters
+ processProperties(wsdlEndpoint, epConfig);
+
return wsdlEndpoint;
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java Fri May 7 08:33:56 2010
@@ -42,8 +42,12 @@ public class WSDLEndpointSerializer exte
fac = OMAbstractFactory.getOMFactory();
OMElement endpointElement
= fac.createOMElement("endpoint", SynapseConstants.SYNAPSE_OMNAMESPACE);
-
+
WSDLEndpoint wsdlEndpoint = (WSDLEndpoint) endpoint;
+
+ // serialize the parameters
+ serializeProperties(wsdlEndpoint, endpointElement);
+
String name = wsdlEndpoint.getName();
boolean anon = wsdlEndpoint.isAnonymous();
if (name != null && !anon) {
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java?rev=942029&r1=942028&r2=942029&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java Fri May 7 08:33:56 2010
@@ -26,6 +26,7 @@ import org.apache.axis2.description.Axis
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.*;
+import org.apache.synapse.mediators.MediatorProperty;
import org.apache.synapse.aspects.ComponentType;
import org.apache.synapse.aspects.AspectConfiguration;
import org.apache.synapse.aspects.statistics.StatisticsReporter;
@@ -34,13 +35,12 @@ import org.apache.synapse.core.SynapseEn
import org.apache.synapse.core.axis2.Axis2MessageContext;
import org.apache.synapse.core.axis2.Axis2SynapseEnvironment;
-import java.util.List;
-import java.util.Stack;
+import java.util.*;
/**
* An abstract base class for all Endpoint implementations
*/
-public abstract class AbstractEndpoint extends FaultHandler implements Endpoint {
+public abstract class AbstractEndpoint extends FaultHandler implements Endpoint, PropertyInclude {
protected Log log;
protected static final Log trace = LogFactory.getLog(SynapseConstants.TRACE_LOGGER);
@@ -72,6 +72,9 @@ public abstract class AbstractEndpoint e
/** The name of the file where this endpoint is defined */
protected String fileName;
+ /** Map for storing configuration parameters */
+ private Map<String, MediatorProperty> properties = new HashMap<String, MediatorProperty>();
+
protected boolean anonymous = false;
protected AbstractEndpoint() {
@@ -470,4 +473,57 @@ public abstract class AbstractEndpoint e
MBeanRegistrar.getInstance().unRegisterMBean("Endpoint", endpointName);
this.initialized = false;
}
+
+ /**
+ * Add a property to the endpoint.
+ * @param property property to be added
+ */
+ public void addProperty(MediatorProperty property) {
+ properties.put(property.getName(), property);
+ }
+
+ /**
+ * Get a property with the given name
+ * @param name name of the property
+ *
+ * @return a property with the given name
+ */
+ public MediatorProperty getProperty(String name) {
+ MediatorProperty value = properties.get(name);
+ if (value == null) {
+ if (getParentEndpoint() instanceof PropertyInclude) {
+ value = ((PropertyInclude)getParentEndpoint()).getProperty(name);
+ }
+ }
+ return value;
+ }
+
+ /**
+ * Return the <code>Collection</code> of properties specified
+ *
+ * @return <code>Collection</code> of properties
+ */
+ public Collection<MediatorProperty> getProperties() {
+ return properties.values();
+ }
+
+ /**
+ * Remove a property with the given name
+ * @param name name of the property to be removed
+ *
+ * @return the remove property or <code>null</code> if a property doesn't exists
+ */
+ public MediatorProperty removeProperty(String name) {
+ return properties.remove(name);
+ }
+
+ /**
+ * Add all the properties to the endpoint
+ * @param mediatorProperties <code>Collection</code> of properties to be added
+ */
+ public void addProperties(Collection<MediatorProperty> mediatorProperties) {
+ for (MediatorProperty property : mediatorProperties) {
+ properties.put(property.getName(), property);
+ }
+ }
}