synapse-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andreas Veithen <andreas.veit...@gmail.com>
Subject Re: svn commit: r797333 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config: SynapseConfiguration.java SynapseObserver.java
Date Fri, 24 Jul 2009 07:07:51 GMT
Sounds like a very useful feature. Can you also add an
AbstractSynapseObserver that implements SynapseObserver with default
(empty) implementations for all the methods? By recommending to extend
this class instead of implementing SynapseObserver directly, we can
easily add new methods later without breaking existing observer
implementations.

Thanks,

Andreas

On Fri, Jul 24, 2009 at 08:24, <hiranya@apache.org> wrote:
> Author: hiranya
> Date: Fri Jul 24 06:24:06 2009
> New Revision: 797333
>
> URL: http://svn.apache.org/viewvc?rev=797333&view=rev
> Log:
> Adding the SynapseObserver interface. Implementations of this interface can be used to
monitor a SynapseConfiguration instance at runtime. A SynapseObserver instance registered
with a SynapseConfiguration receives events regarding configuration updates (add/remove items).
Useful when writing custom configuration monitors, dependency trackers etc.
>
> Added:
>    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/SynapseConfiguration.java
>
> 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=797333&r1=797332&r2=797333&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
Fri Jul 24 06:24:06 2009
> @@ -118,6 +118,10 @@
>      */
>     private Map<String, SynapseEventSource> eventSources = new HashMap<String,
SynapseEventSource>();
>
> +    /**
> +     * The list of registered configuration observers
> +     */
> +    private List<SynapseObserver> observers = new ArrayList<SynapseObserver>();
>
>     /**
>      * Add a named sequence into the local registry. If a sequence already exists
by the specified
> @@ -131,6 +135,10 @@
>     public void addSequence(String key, Mediator mediator) {
>         assertAlreadyExists(key,SEQUENCE);
>         localRegistry.put(key, mediator);
> +
> +        for (SynapseObserver o : observers) {
> +            o.sequenceAdded(mediator);
> +        }
>     }
>
>     /**
> @@ -254,6 +262,9 @@
>         Object sequence = localRegistry.get(key);
>         if (sequence instanceof Mediator) {
>             localRegistry.remove(key);
> +            for (SynapseObserver o : observers) {
> +                o.sequenceRemoved((Mediator) sequence);
> +            }
>         } else {
>             handleException("No sequence exists by the key/name : " + key);
>         }
> @@ -302,12 +313,18 @@
>                 entry.setValue(SynapseConfigUtils.getOMElementFromURL(entry.getSrc()
>                         .toString()));
>                 localRegistry.put(key, entry);
> +                for (SynapseObserver o : observers) {
> +                    o.entryAdded(entry);
> +                }
>             } catch (IOException e) {
>                 handleException("Can not read from source URL : "
>                         + entry.getSrc());
>             }
>         } else {
>             localRegistry.put(key, entry);
> +            for (SynapseObserver o : observers) {
> +                o.entryAdded(entry);
> +            }
>         }
>     }
>
> @@ -421,6 +438,9 @@
>         Object entry = localRegistry.get(key);
>         if (entry instanceof Entry) {
>             localRegistry.remove(key);
> +            for (SynapseObserver o : observers) {
> +                o.entryRemoved((Entry) entry);
> +            }
>         } else {
>             handleException("No entry exists by the key : " + key);
>         }
> @@ -467,6 +487,9 @@
>     public void addEndpoint(String key, Endpoint endpoint) {
>         assertAlreadyExists(key, ENDPOINT);
>         localRegistry.put(key, endpoint);
> +        for (SynapseObserver o : observers) {
> +            o.endpointAdded(endpoint);
> +        }
>     }
>
>     /**
> @@ -568,6 +591,9 @@
>         Object endpoint = localRegistry.get(key);
>         if (endpoint instanceof Endpoint) {
>             localRegistry.remove(key);
> +            for (SynapseObserver o : observers) {
> +                o.endpointRemoved((Endpoint) endpoint);
> +            }
>         } else {
>             handleException("No endpoint exists by the key/name : " + key);
>         }
> @@ -585,6 +611,9 @@
>     public void addProxyService(String name, ProxyService proxy) {
>         if (!proxyServices.containsKey(name)) {
>             proxyServices.put(name, proxy);
> +            for (SynapseObserver o : observers) {
> +                o.proxyServiceAdded(proxy);
> +            }
>         } else {
>             handleException("Duplicate proxy service by the name : " + name);
>         }
> @@ -609,8 +638,8 @@
>      *            of the Proxy Service to be deleted
>      */
>     public void removeProxyService(String name) {
> -        Object o = proxyServices.get(name);
> -        if (o == null) {
> +        ProxyService proxy = proxyServices.get(name);
> +        if (proxy == null) {
>             handleException("Unknown proxy service for name : " + name);
>         } else {
>             try {
> @@ -623,6 +652,9 @@
>                     getAxisConfiguration().removeService(name);
>                 }
>                 proxyServices.remove(name);
> +                for (SynapseObserver o : observers) {
> +                    o.proxyServiceRemoved(proxy);
> +                }
>             } catch (AxisFault axisFault) {
>                 handleException(axisFault.getMessage());
>             }
> @@ -759,6 +791,9 @@
>     public void addStartup(Startup startup) {
>         if (!startups.containsKey(startup.getName())) {
>             startups.put(startup.getName(), startup);
> +            for (SynapseObserver o : observers) {
> +                o.startupAdded(startup);
> +            }
>         } else {
>             handleException("Duplicate startup by the name : " + startup.getName());
>         }
> @@ -771,8 +806,12 @@
>      * @param name - name of the startup that needs to be removed
>      */
>     public void removeStartup(String name) {
> -        if (startups.containsKey(name)) {
> +        Startup startup = startups.get(name);
> +        if (startup != null) {
>             startups.remove(name);
> +            for (SynapseObserver o : observers) {
> +                o.startupRemoved(startup);
> +            }
>         } else {
>             handleException("No startup exists by the name : " + name);
>         }
> @@ -1000,6 +1039,9 @@
>     public void addEventSource(String name, SynapseEventSource eventSource) {
>         if (!eventSources.containsKey(name)) {
>             eventSources.put(name, eventSource);
> +            for (SynapseObserver o : observers) {
> +                o.eventSourceAdded(eventSource);
> +            }
>         } else {
>             handleException("Duplicate event source by the name : " + name);
>         }
> @@ -1016,8 +1058,12 @@
>      * @param name name of the event source to be removed
>      */
>     public void removeEventSource(String name) {
> -        if (eventSources.containsKey(name)) {
> +        SynapseEventSource eventSource = eventSources.get(name);
> +        if (eventSource != null) {
>             eventSources.remove(name);
> +            for (SynapseObserver o : observers) {
> +                o.eventSourceRemoved(eventSource);
> +            }
>         } else {
>             handleException("No event source exists by the name : " + name);
>         }
> @@ -1031,6 +1077,12 @@
>         this.eventSources = eventSources;
>     }
>
> +    public void registerObserver(SynapseObserver o) {
> +        if (!observers.contains(o)) {
> +            observers.add(o);
> +        }
> +    }
> +
>     private void assertAlreadyExists(String key, String type) {
>
>         if (key == null || "".equals(key)) {
>
> Added: 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=797333&view=auto
> ==============================================================================
> --- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseObserver.java
(added)
> +++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseObserver.java
Fri Jul 24 06:24:06 2009
> @@ -0,0 +1,107 @@
> +/*
> + *  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 org.apache.synapse.Mediator;
> +import org.apache.synapse.Startup;
> +import org.apache.synapse.eventing.SynapseEventSource;
> +import org.apache.synapse.core.axis2.ProxyService;
> +import org.apache.synapse.endpoints.Endpoint;
> +
> +/**
> + * An implementation of this interface can be registered with the SynapseConfiguration
to receive
> + * configuration update events. Whenever a new item is added to the configuration or
an existing
> + * item is removed the events defined in this interface will be fired.
> + */
> +public interface SynapseObserver {
> +
> +    /** Event fired when a new sequence is added to the configuration
> +     *
> +     * @param sequence the Sequence mediator added to the configuration
> +     */
> +    public void sequenceAdded(Mediator sequence);
> +
> +    /** Event fired when an existing sequence is removed from the configuration
> +     *
> +     * @param sequence the Sequence removed from the configuration
> +     */
> +    public void sequenceRemoved(Mediator sequence);
> +
> +    /** Event fired when an entry is added to the configuration
> +     *
> +     * @param entry the Entry added to the configuration
> +     */
> +    public void entryAdded(Entry entry);
> +
> +    /** Event fired when an entry is removed from the configuration
> +     *
> +     * @param entry the Entry removed from the configuration
> +     */
> +    public void entryRemoved(Entry entry);
> +
> +    /** Event fired when an endpoint is added to the configuration
> +     *
> +     * @param endpoint the Endpoint added to the configuration
> +     */
> +    public void endpointAdded(Endpoint endpoint);
> +
> +    /** Event fired when an endpoint is removed from the configuration
> +     *
> +     * @param endpoint the Endpoint removed from the configuration
> +     */
> +    public void endpointRemoved(Endpoint endpoint);
> +
> +    /** Event fired when a proxy service is added to the configuration
> +     *
> +     * @param proxy the ProxyService added to the configuration
> +     */
> +    public void proxyServiceAdded(ProxyService proxy);
> +
> +     /** Event fired when a proxy service is removed from the configuration
> +     *
> +     * @param proxy the ProxyService removed from the configuration
> +     */
> +    public void proxyServiceRemoved(ProxyService proxy);
> +
> +    /** Event fired when a startup is added to the configuration
> +     *
> +     * @param startup the Startup added to the configuration
> +     */
> +    public void startupAdded(Startup startup);
> +
> +     /** Event fired when a startup is removed from the configuration
> +     *
> +     * @param startup the Startup removed from the configuration
> +     */
> +    public void startupRemoved(Startup startup);
> +
> +    /** Event fired when an event source is added to the configuration
> +     *
> +     * @param eventSource the SynapseEventSource added to the configuration
> +     */
> +    public void eventSourceAdded(SynapseEventSource eventSource);
> +
> +     /** Event fired when an event source is removed from the configuration
> +     *
> +     * @param eventSource the SynapseEventSource removed from the configuration
> +     */
> +    public void eventSourceRemoved(SynapseEventSource eventSource);
> +
> +}
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@synapse.apache.org
For additional commands, e-mail: dev-help@synapse.apache.org


Mime
View raw message