You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ru...@apache.org on 2009/08/27 10:16:16 UTC

svn commit: r808318 - /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointSerializer.java

Author: ruwan
Date: Thu Aug 27 08:16:15 2009
New Revision: 808318

URL: http://svn.apache.org/viewvc?rev=808318&view=rev
Log:
Adding the file that is being missed by the previous commit

Added:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointSerializer.java

Added: 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=808318&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointSerializer.java (added)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointSerializer.java Thu Aug 27 08:16:15 2009
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed 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.config.xml.endpoints;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.synapse.SynapseConstants;
+import org.apache.synapse.config.xml.XMLConfigConstants;
+import org.apache.synapse.core.LoadBalanceMembershipHandler;
+import org.apache.synapse.endpoints.DynamicLoadbalanceEndpoint;
+import org.apache.synapse.endpoints.Endpoint;
+
+import java.util.Properties;
+
+/**
+ * Creates {@link org.apache.synapse.endpoints.DynamicLoadbalanceEndpoint} using an XML configuration.
+ *
+ * <pre>
+ * &lt;endpoint>
+ *       &lt;dynamicLoadbalance [failover="true|false"] [policy="load balance algorithm"]&gt;
+ *           &lt;membershipHandler
+ *                   class="HandlerClass"&gt;
+ *              &lt;property name="some name" value="some domain"/&gt;+
+ *           &lt;/membershipHandler&gt;
+ *       &lt;/dynamicLoadbalance&gt;
+ * &lt;/endpoint&gt;
+ * </pre>
+ */
+
+public class DynamicLoadbalanceEndpointSerializer extends EndpointSerializer {
+    
+    protected OMElement serializeEndpoint(Endpoint endpoint) {
+
+        if (!(endpoint instanceof DynamicLoadbalanceEndpoint)) {
+            handleException("Invalid endpoint type.");
+        }
+
+        fac = OMAbstractFactory.getOMFactory();
+        OMElement endpointElement
+                = fac.createOMElement("endpoint", SynapseConstants.SYNAPSE_OMNAMESPACE);
+
+        DynamicLoadbalanceEndpoint dynamicLoadbalanceEndpoint = (DynamicLoadbalanceEndpoint) endpoint;
+
+
+        String name = dynamicLoadbalanceEndpoint.getName();
+        if (name != null) {
+            endpointElement.addAttribute("name", name, null);
+        }
+
+        OMElement dynamicLoadbalanceElement
+                = fac.createOMElement("dynamicLoadbalance", SynapseConstants.SYNAPSE_OMNAMESPACE);
+        endpointElement.addChild(dynamicLoadbalanceElement);
+
+        // set if failover is turned off in the endpoint
+        if (!dynamicLoadbalanceEndpoint.isFailover()) {
+            dynamicLoadbalanceElement.addAttribute("failover", "false", null);
+        }
+
+        LoadBalanceMembershipHandler loadBalanceMembershipHandler = dynamicLoadbalanceEndpoint.getLbMembershipHandler();
+
+        dynamicLoadbalanceElement.addAttribute(XMLConfigConstants.LOADBALANCE_ALGORITHM,
+                loadBalanceMembershipHandler.getLoadbalanceAlgorithm().getClass().getName(),
+                null);
+
+        OMElement membershipHandlerElement =
+                fac.createOMElement("membershipHandler", SynapseConstants.SYNAPSE_OMNAMESPACE);
+        dynamicLoadbalanceElement.addChild(membershipHandlerElement);
+
+        membershipHandlerElement.addAttribute("class",loadBalanceMembershipHandler.getClass().getName(),null);
+
+        Properties membershipHandlerProperties = loadBalanceMembershipHandler.getProperties();
+        OMElement propertyElement = null;
+        for (Object property : membershipHandlerProperties.keySet()){
+            propertyElement = fac.createOMElement("property", SynapseConstants.SYNAPSE_OMNAMESPACE);
+            membershipHandlerElement.addChild(propertyElement);
+            propertyElement.addAttribute("name", property.toString(), null);
+            propertyElement.addAttribute("value", membershipHandlerProperties.getProperty((String)property), null);
+        }
+
+        return endpointElement;
+    }
+}