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/04/29 13:09:38 UTC

svn commit: r939261 - in /synapse/trunk/java/modules/core/src: main/java/org/apache/synapse/config/ test/java/org/apache/synapse/config/

Author: hiranya
Date: Thu Apr 29 11:09:38 2010
New Revision: 939261

URL: http://svn.apache.org/viewvc?rev=939261&view=rev
Log:
Fixing SYNAPSE-632

* Added two new event handler methods to the SynapseObserver interface (for priority executor addition and removal)
* Implemented the new methods in the AbstractSynapseObserver
* Update the SynapseConfiguration to fire the relevant event on adding and removing executors

* Added a new test case to cover the SynapseObserver interface and related functionality


Added:
    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
    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

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=939261&r1=939260&r2=939261&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 Thu Apr 29 11:09:38 2010
@@ -21,6 +21,7 @@ package org.apache.synapse.config;
 
 import org.apache.synapse.Mediator;
 import org.apache.synapse.Startup;
+import org.apache.synapse.commons.executors.PriorityExecutor;
 import org.apache.synapse.mediators.base.SequenceMediator;
 import org.apache.synapse.eventing.SynapseEventSource;
 import org.apache.synapse.core.axis2.ProxyService;
@@ -95,4 +96,14 @@ public abstract class AbstractSynapseObs
         log.info("Event source : " + eventSource.getName() + " was removed " +
                 "from the Synapse configuration successfully");
     }
+
+    public void priorityExecutorAdded(PriorityExecutor exec) {
+        log.info("Priority executor : " + exec.getName() + " was added " +
+                "to the Synapse configuration successfully");
+    }
+
+    public void priorityExecutorRemoved(PriorityExecutor exec) {
+        log.info("Priority executor : " + exec.getName() + " was removed " +
+                "from 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=939261&r1=939260&r2=939261&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 Thu Apr 29 11:09:38 2010
@@ -1137,6 +1137,9 @@ public class SynapseConfiguration implem
      */
     public synchronized void addPriorityExecutor(String name, PriorityExecutor executor) {
         executors.put(name, executor);
+        for (SynapseObserver o : observers) {
+            o.priorityExecutorAdded(executor);
+        }
     }
 
     /**
@@ -1154,7 +1157,13 @@ public class SynapseConfiguration implem
      * @return removed executor
      */
     public synchronized PriorityExecutor removeExecutor(String name) {
-        return executors.remove(name);        
+        PriorityExecutor executor = executors.remove(name);
+        if (executor != null) {
+            for (SynapseObserver o : observers) {
+                o.priorityExecutorRemoved(executor);
+            }
+        }
+        return executor;
     }
 
     private void assertAlreadyExists(String key, String type) {

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=939261&r1=939260&r2=939261&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 Thu Apr 29 11:09:38 2010
@@ -21,6 +21,7 @@ package org.apache.synapse.config;
 
 import org.apache.synapse.Mediator;
 import org.apache.synapse.Startup;
+import org.apache.synapse.commons.executors.PriorityExecutor;
 import org.apache.synapse.eventing.SynapseEventSource;
 import org.apache.synapse.core.axis2.ProxyService;
 import org.apache.synapse.endpoints.Endpoint;
@@ -102,6 +103,18 @@ public interface SynapseObserver {
      *
      * @param eventSource the SynapseEventSource removed from the configuration 
      */
-    public void eventSourceRemoved(SynapseEventSource eventSource);    
+    public void eventSourceRemoved(SynapseEventSource eventSource);
+
+    /** Event fired when a priority executor is added to the configuration
+     *
+     * @param exec the PriorityExecutor added to the configuration 
+     */
+    public void priorityExecutorAdded(PriorityExecutor exec);
+
+    /** Event fired when a priority executor is removed from the configuration
+     *
+     * @param exec the PriorityExecutor removed from the configuration
+     */
+    public void priorityExecutorRemoved(PriorityExecutor exec);
 
 }

Added: 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=939261&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/SynapseObserverTest.java (added)
+++ synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/SynapseObserverTest.java Thu Apr 29 11:09:38 2010
@@ -0,0 +1,179 @@
+/*
+ *  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.config;
+
+import junit.framework.TestCase;
+import org.apache.synapse.endpoints.Endpoint;
+import org.apache.synapse.endpoints.AddressEndpoint;
+import org.apache.synapse.eventing.SynapseEventSource;
+import org.apache.synapse.core.axis2.ProxyService;
+import org.apache.synapse.Mediator;
+import org.apache.synapse.Startup;
+import org.apache.synapse.startup.quartz.SimpleQuartz;
+import org.apache.synapse.commons.executors.PriorityExecutor;
+import org.apache.synapse.mediators.base.SequenceMediator;
+import org.apache.axis2.engine.AxisConfiguration;
+
+import java.util.*;
+
+public class SynapseObserverTest extends TestCase {
+
+    private static final int ENDPOINT   = 0;
+    private static final int SEQUENCE   = 1;
+    private static final int ENTRY      = 2;
+    private static final int PROXY      = 3;
+    private static final int STARTUP    = 4;
+    private static final int EVENT_SRC  = 5;
+    private static final int EXECUTOR   = 6;
+
+    SimpleSynapseObserver observer = new SimpleSynapseObserver();
+
+    public void testSimpleObserver() {
+        SynapseConfiguration synapseConfig = new SynapseConfiguration();
+        synapseConfig.setAxisConfiguration(new AxisConfiguration());
+        synapseConfig.registerObserver(observer);
+
+        Endpoint epr = new AddressEndpoint();
+        epr.setName("endpoint1");
+        synapseConfig.addEndpoint(epr.getName(), epr);
+        assertItemAdded(epr.getName(), ENDPOINT);
+        synapseConfig.removeEndpoint(epr.getName());
+        assertItemRemoved(epr.getName(), ENDPOINT);
+
+        SequenceMediator seq = new SequenceMediator();
+        seq.setName("sequence1");
+        synapseConfig.addSequence(seq.getName(), seq);
+        assertItemAdded(seq.getName(), SEQUENCE);
+        synapseConfig.removeSequence(seq.getName());
+        assertItemRemoved(seq.getName(), SEQUENCE);
+
+        Entry entry = new Entry();
+        entry.setKey("entry1");
+        synapseConfig.addEntry(entry.getKey(), entry);
+        assertItemAdded(entry.getKey(), ENTRY);
+        synapseConfig.removeEntry(entry.getKey());
+        assertItemRemoved(entry.getKey(), ENTRY);
+
+        ProxyService proxy = new ProxyService("proxy1");
+        synapseConfig.addProxyService(proxy.getName(), proxy);
+        assertItemAdded(proxy.getName(), PROXY);
+        synapseConfig.removeProxyService(proxy.getName());
+        assertItemRemoved(proxy.getName(), PROXY);
+
+        Startup startup = new SimpleQuartz();
+        startup.setName("startup1");
+        synapseConfig.addStartup(startup);
+        assertItemAdded(startup.getName(), STARTUP);
+        synapseConfig.removeStartup(startup.getName());
+        assertItemRemoved(startup.getName(), STARTUP);
+
+        SynapseEventSource eventSrc = new SynapseEventSource("eventSrc1");
+        synapseConfig.addEventSource(eventSrc.getName(), eventSrc);
+        assertItemAdded(eventSrc.getName(), EVENT_SRC);
+        synapseConfig.removeEventSource(eventSrc.getName());
+        assertItemRemoved(eventSrc.getName(), EVENT_SRC);
+
+        PriorityExecutor exec = new PriorityExecutor();
+        exec.setName("exec1");
+        synapseConfig.addPriorityExecutor(exec.getName(), exec);
+        assertItemAdded(exec.getName(), EXECUTOR);
+        synapseConfig.removeExecutor(exec.getName());
+        assertItemRemoved(exec.getName(), EXECUTOR);
+    }
+
+    private void assertItemAdded(String name, int type) {
+        assertTrue(observer.tracker.get(type).contains(name));
+    }
+
+    private void assertItemRemoved(String name, int type) {
+        assertTrue(!observer.tracker.get(type).contains(name));
+    }
+
+    private class SimpleSynapseObserver implements SynapseObserver {
+
+        private Map<Integer, Set<String>> tracker = new HashMap<Integer, Set<String>>();
+
+        public SimpleSynapseObserver() {
+            tracker.put(ENDPOINT, new HashSet<String>());
+            tracker.put(SEQUENCE, new HashSet<String>());
+            tracker.put(ENTRY, new HashSet<String>());
+            tracker.put(PROXY, new HashSet<String>());
+            tracker.put(STARTUP, new HashSet<String>());
+            tracker.put(EVENT_SRC, new HashSet<String>());
+            tracker.put(EXECUTOR, new HashSet<String>());
+        }
+
+        public void endpointAdded(Endpoint endpoint) {
+            tracker.get(ENDPOINT).add(endpoint.getName());
+        }
+
+        public void endpointRemoved(Endpoint endpoint) {
+            tracker.get(ENDPOINT).remove(endpoint.getName());
+        }
+
+        public void entryAdded(Entry entry) {
+            tracker.get(ENTRY).add(entry.getKey());
+        }
+
+        public void entryRemoved(Entry entry) {
+            tracker.get(ENTRY).remove(entry.getKey());
+        }
+
+        public void eventSourceAdded(SynapseEventSource eventSource) {
+            tracker.get(EVENT_SRC).add(eventSource.getName());
+        }
+
+        public void eventSourceRemoved(SynapseEventSource eventSource) {
+            tracker.get(EVENT_SRC).remove(eventSource.getName());
+        }
+
+        public void proxyServiceAdded(ProxyService proxy) {
+            tracker.get(PROXY).add(proxy.getName());
+        }
+
+        public void proxyServiceRemoved(ProxyService proxy) {
+            tracker.get(PROXY).remove(proxy.getName());
+        }
+
+        public void sequenceAdded(Mediator sequence) {
+            tracker.get(SEQUENCE).add(((SequenceMediator) sequence).getName());
+        }
+
+        public void sequenceRemoved(Mediator sequence) {
+            tracker.get(SEQUENCE).remove(((SequenceMediator) sequence).getName());
+        }
+
+        public void startupAdded(Startup startup) {
+            tracker.get(STARTUP).add(startup.getName());
+        }
+
+        public void startupRemoved(Startup startup) {
+            tracker.get(STARTUP).remove(startup.getName());
+        }
+
+        public void priorityExecutorAdded(PriorityExecutor exec) {
+            tracker.get(EXECUTOR).add(exec.getName());
+        }
+
+        public void priorityExecutorRemoved(PriorityExecutor exec) {
+            tracker.get(EXECUTOR).remove(exec.getName());
+        }
+    }
+}