synapse-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ruwan Linton <ruwan.lin...@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 08:13:17 GMT
+1

Ruwan

On Fri, Jul 24, 2009 at 12:37 PM, Andreas Veithen <andreas.veithen@gmail.com
> wrote:

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


-- 
Ruwan Linton
Technical Lead & Product Manager; WSO2 ESB; http://wso2.org/esb
WSO2 Inc.; http://wso2.org
email: ruwan@wso2.com; cell: +94 77 341 3097
blog: http://ruwansblog.blogspot.com

Mime
View raw message