alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Axis 2 example source code file (DefaultContextManager.java)

This example Axis 2 source code file (DefaultContextManager.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Axis 2 tags/keywords

arraylist, axisfault, axisfault, clusteringfault, clusteringfault, configurationcontext, contextclusteringcommand, contextreplicationprocessor, contextreplicationprocessor, hashmap, map, parameter, string, string, util

The Axis 2 DefaultContextManager.java source code

/*
 * 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.axis2.clustering.context;

import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.clustering.ClusteringFault;
import org.apache.axis2.clustering.ClusteringConstants;
import org.apache.axis2.clustering.context.commands.ContextClusteringCommandCollection;
import org.apache.axis2.clustering.tribes.AckManager;
import org.apache.axis2.clustering.tribes.ChannelSender;
import org.apache.axis2.context.AbstractContext;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.ServiceContext;
import org.apache.axis2.context.ServiceGroupContext;
import org.apache.axis2.description.Parameter;

import java.util.*;

public class DefaultContextManager implements ContextManager {

    private ConfigurationContext configContext;

    private Map parameters = new HashMap();

    private ChannelSender sender;
    private ContextReplicationProcessor processor = new ContextReplicationProcessor();

    private Map excludedReplicationPatterns = new HashMap();

    //TODO: Try how to use an interface
    public void setSender(ChannelSender sender) {
        this.sender = sender;
    }

    public DefaultContextManager() {
    }
    
    public String updateContext(AbstractContext context) throws ClusteringFault {
        ContextClusteringCommand cmd =
                ContextClusteringCommandFactory.getUpdateCommand(context,
                                                                 excludedReplicationPatterns,
                                                                 false);
        if (cmd != null) {
            processor.process(cmd);
            return cmd.getUniqueId();
        }
        return null;
    }

    public String updateContexts(AbstractContext[] contexts) throws ClusteringFault {
        ContextClusteringCommandCollection cmd =
                ContextClusteringCommandFactory.getCommandCollection(contexts,
                                                                     excludedReplicationPatterns);
        processor.process(cmd);
        return cmd.getUniqueId();
    }

    public String removeContext(AbstractContext context) throws ClusteringFault {
        ContextClusteringCommand cmd = ContextClusteringCommandFactory.getRemoveCommand(context);
        processor.process(cmd);
        return cmd.getUniqueId();
    }

    public boolean isContextClusterable(AbstractContext context) {
        return (context instanceof ConfigurationContext) ||
               (context instanceof ServiceContext) ||
               (context instanceof ServiceGroupContext);
    }

    public boolean isMessageAcknowledged(String messageUniqueId) throws ClusteringFault {
        return AckManager.isMessageAcknowledged(messageUniqueId, sender);
    }

    public void process(ContextClusteringCommand command) throws ClusteringFault {
        command.execute(configContext);
    }

    public void setContextManagerListener(ContextManagerListener listener) {
        if (configContext != null) {
            listener.setConfigurationContext(configContext);
        }
    }

    public void setConfigurationContext(ConfigurationContext configurationContext) {
        this.configContext = configurationContext;
    }

    public void setReplicationExcludePatterns(String contextType, List patterns) {
        excludedReplicationPatterns.put(contextType, patterns);
    }

    public Map getReplicationExcludePatterns() {
        return excludedReplicationPatterns;
    }

    // ---------------------- Methods from ParameterInclude ----------------------------------------
    public void addParameter(Parameter param) throws AxisFault {
        parameters.put(param.getName(), param);
    }

    public void removeParameter(Parameter param) throws AxisFault {
        parameters.remove(param.getName());
    }

    public Parameter getParameter(String name) {
        return (Parameter) parameters.get(name);
    }

    public ArrayList getParameters() {
        ArrayList list = new ArrayList();
        for (Iterator iter = parameters.keySet().iterator(); iter.hasNext();) {
            list.add(parameters.get(iter.next()));
        }
        return list;
    }

    public boolean isParameterLocked(String parameterName) {
        return getParameter(parameterName).isLocked();
    }

    public void deserializeParameters(OMElement parameterElement) throws AxisFault {
        throw new UnsupportedOperationException();
    }
    // ---------------------------------------------------------------------------------------------

    private class ContextReplicationProcessor {
        public void process(final ContextClusteringCommand cmd) throws ClusteringFault {

            // If the sender is NULL, it means the TribesClusterManager is still being initialized
            // So we need to busy wait.
            if (sender == null) {
                Thread processorThread = new Thread("ProcessorThread") {
                    public void run() {
                        do {
                            try {
                                Thread.sleep(300);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        } while (sender == null);
                        try {
                            long tts = sender.sendToGroup(cmd);
                            configContext.setNonReplicableProperty(ClusteringConstants.TIME_TO_SEND,
                                                                   new Long(tts));
                        } catch (ClusteringFault clusteringFault) {
                            throw new RuntimeException(clusteringFault);
                        }
                    }
                };
                processorThread.start();
            } else {
                long tts = sender.sendToGroup(cmd);
                configContext.setNonReplicableProperty(ClusteringConstants.TIME_TO_SEND,
                                                       new Long(tts));
            }
        }
    }
}

Other Axis 2 examples (source code examples)

Here is a short list of links related to this Axis 2 DefaultContextManager.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.