Package com.ibm.sbt.services.endpoints

Source Code of com.ibm.sbt.services.endpoints.EndpointFactory

/*
* © Copyright IBM Corp. 2012
*
* 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 com.ibm.sbt.services.endpoints;

import com.ibm.commons.runtime.Context;
import com.ibm.commons.util.StringUtil;
import com.ibm.sbt.jslibrary.SBTEnvironment;
import com.ibm.sbt.util.SBTException;


/**
* Factory for acessing an endpoint bean.
* <p>
* </p>
* @author Philippe Riand
*/
public class EndpointFactory {

    // Prefix for the property
    public static final String SERVERPROP_PREFIX        = "sbt.endpoint.";
    public static final String SERVERBEAN_PREFIX        = "";
   
    // Some generic server predefined names
    public static final String SERVER_CONNECTIONS       = "connections";
    public static final String SERVER_SMARTCLOUD       = "smartcloud";
    public static final String SERVER_SAMETIME          = "sametime";
    public static final String SERVER_LOTUSLIVE         = "lotuslive";
    public static final String SERVER_DOMINO            = "domino";
    public static final String SERVER_FACEBOOK          = "facebook";
    public static final String SERVER_TWITTER           = "twitter";
    public static final String SERVER_DROPBOX           = "dropbox";
    public static final String SERVER_GOOGLE            = "google";

    /**
     * Get an endpoint based on its name and throw a FacesException if it is not available.
     */   
    public static Endpoint getEndpoint(String name) {
        return getEndpoint(name,null);
    }
    public static Endpoint getEndpoint(String name, String defaultName) {
        Endpoint e = getEndpointUnchecked(name,defaultName);
        if(e==null) {
            if(StringUtil.isEmpty(name)) {
                name = defaultName;
            }
            throw new SBTException(null,"Cannot find Endpoint {0}",name);
        }
        return e;
    }

    /**
     * Get an endpoint based on its name and return null if it is not available.
     */   
    public static Endpoint getEndpointUnchecked(String name) {
        return getEndpointUnchecked(name, null);
    }
    public static Endpoint getEndpointUnchecked(String name, String defaultName) {
        if(StringUtil.isEmpty(name)) {
            name = defaultName;
        }
        // Look for a global property setting the default server, if the parameter is empty
        if(StringUtil.isEmpty(name)) {
            throw new SBTException(null,"The name of the endpoint is empty");
        }
       
        // Look for a property defining the bean associated to this server
        Context context = Context.get();
        String beanName = context.getProperty(SERVERPROP_PREFIX+name, null);
        if(StringUtil.isEmpty(beanName)) {
            beanName = SERVERBEAN_PREFIX+name;
        }
           
        // Look for a bean and/or class
        Object o = context.getBean(beanName);
        if(o!=null) {
            if(!(o instanceof Endpoint)) {
                throw new SBTException(null,"Invalid ServerBean implementation for bean {0} is instance of {1}",beanName,o.getClass());
            }
            else{
              ((AbstractEndpoint)o).setName(beanName);
            }
            return (Endpoint)o;
        }
        return null;
    }
   
    public static String getEndpointName(String name) {
        Context context = Context.get();
        String beanName = context.getProperty(SERVERPROP_PREFIX+name, null);
        if(StringUtil.isEmpty(beanName)) {
            beanName = SERVERBEAN_PREFIX+name;
            return beanName;
        }
        return beanName;
    }
   
    public static String getEndpointLabel(String name) {
        Endpoint ep = getEndpoint(name);
        if(ep!=null) {
            return ep.getLabel();
        }
        return null;
    }
   
    public static Endpoint getEndpointFromEnvironment(String endpointName, String environment){
      Context context = Context.getUnchecked();
      if (context == null) {
        return null;
      }
        if (environment == null ){
          environment = context.getProperty("environment");
        }
        if(environment != null) {
            SBTEnvironment env = (SBTEnvironment) context.getBean(environment);
            SBTEnvironment.Endpoint[] endpointsArray = env.getEndpointsArray();
            for(SBTEnvironment.Endpoint endpoint : endpointsArray){
                if(StringUtil.equals(endpointName, endpoint.getAlias())){
                    endpointName = endpoint.getName();
                    break;
                } else if (StringUtil.equals(endpointName, endpoint.getName())){
                    break;
                }
            }
        }
        return EndpointFactory.getEndpoint(endpointName);
    }
}
TOP

Related Classes of com.ibm.sbt.services.endpoints.EndpointFactory

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.