Package org.wso2.carbon.mediator.service

Source Code of org.wso2.carbon.mediator.service.MediatorStore

/**
*  Copyright (c) 2009, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
*  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.wso2.carbon.mediator.service;

import org.apache.axiom.om.OMElement;
import org.wso2.carbon.mediator.service.builtin.SequenceMediatorService;
import org.wso2.carbon.mediator.service.builtin.UILessMediatorService;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
* Keeps track of the mediators that are registered for the sequence editor UI
*/
public class MediatorStore {

    /** Singleton instance */
    private static MediatorStore instance = null;
    /** MediatorService instances registered for the given mediator name */
    private Map<String, MediatorService> store = new HashMap<String, MediatorService>();

    // make sure the singleton behavior
    private MediatorStore() {}

    /**
     * Singleton access to the MediatorStore
     * @return the singleton instance
     */
    public synchronized static MediatorStore getInstance() {
        if (instance == null) {
            MediatorService service = new SequenceMediatorService();
            instance = new MediatorStore();
            instance.registerMediator(service.getTagLocalName(), service);
        }
        return instance;
    }

    /**
     * Registers a {@link org.wso2.carbon.mediator.service.MediatorService} with the store
     *
     * @param mediatorName name of the mediator being registered
     * @param mediatorService implementation of the mediator service for
     * the mediator with name <code>mediatorName</code>
     */
    public void registerMediator(String mediatorName, MediatorService mediatorService) {
        store.put(mediatorName, mediatorService);
    }

    /**
     * Un registers a {@link org.wso2.carbon.mediator.service.MediatorService} from the store
     *
     * @param mediatorName name of the mediator of the service to be un registered
     */
    public void unRegisterMediator(String mediatorName) {
        store.remove(mediatorName);
    }

    /**
     * Retrieves the {@link org.wso2.carbon.mediator.service.MediatorService} with
     * the given <code>mediatorName</code>
     *
     * @param mediatorName name of the mediator to retrieve the mediator service
     * @return the mediator service mapped to the given mediator name
     */
    public MediatorService getMediatorService(String mediatorName) {
        MediatorService service = store.get(mediatorName);
        if (service == null) {
            UILessMediatorService defService = new UILessMediatorService();
            defService.setLocalName(mediatorName);
            return defService;
        }

        return service;

    }

    /**
     * Retrieves the registered {@link org.wso2.carbon.mediator.service.MediatorService} collection
     *
     * @return all the registered mediator services in the store
     */
    @SuppressWarnings({"UnusedDeclaration"})
    public Collection<MediatorService> getRegisteredMediators() {
        return store.values();
    }

    /**
     * Retrieves the menu item of mediators, which is being used by the UI
     *
     * @return the mapped data model for the mediator menu items
     */
    public HashMap<String, HashMap<String, String>> getMediatorMenuItems() {
        HashMap<String, HashMap<String, String>> parentMap
                = new HashMap<String, HashMap<String, String>>();
        for (MediatorService mediatorService : store.values()) {
            String group = mediatorService.getGroupName();
            if (group != null && !"uiless".equals(group.toLowerCase())) {
                HashMap<String, String> menuMap;
                if (parentMap.containsKey(group)) {
                    menuMap = parentMap.get(group);
                } else {
                    menuMap = new HashMap<String, String>();
                    parentMap.put(group, menuMap);
                }
                menuMap.put(mediatorService.getTagLocalName(), mediatorService.getDisplayName());
            }
        }
        return parentMap;
    }

    /**
     * Helper method for retrieving the {@link org.wso2.carbon.mediator.service.MediatorService}
     * by looking at the given serialized mediator element
     *
     * @param element serialized representation of a mediator of which
     * the mediator service is looked up
     * @return the looked up mediator service from the mediator serialization format
     */
    public MediatorService getMediatorService(OMElement element) {                    
        return getMediatorService(element.getLocalName());
  }
}
TOP

Related Classes of org.wso2.carbon.mediator.service.MediatorStore

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.