Package com.ibm.commons.platform

Source Code of com.ibm.commons.platform.GenericEclipsePlatform

/*
* © Copyright IBM Corp. 2012-2013
*
* 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.commons.platform;

import java.io.InputStream;
import java.io.PrintStream;

import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;

import com.ibm.commons.IPlatformService;
import com.ibm.commons.Platform;
import com.ibm.commons.log.LogMgrFactory;
import com.ibm.commons.log.eclipse.EclipseLogMgrFactory;


/**
* Base implementation for a Eclipse based platform.
* @ibm-not-published
*/
public class GenericEclipsePlatform extends Platform {

    public static final String ECLIPSE_PLATFORM = "Eclipse"; // $NON-NLS-1$
   
    public GenericEclipsePlatform() {
    }
    protected void initialize() {
    }

    public String getName() {
        return "Generic Eclipse"; // $NLS-GenericEclipsePlatform.GenericEclipse-1$
    }

    public boolean isPlatform(String name) {
        if(ECLIPSE_PLATFORM.equals(name)) {
            return true;
        }
        return super.isPlatform(name);
    }
   
    public PrintStream getOutputStream() {
        return java.lang.System.out;
    }
   
    public PrintStream getErrorStream() {
        return java.lang.System.err;
    }
   
    protected LogMgrFactory createLogMgrFactory() {
        return new EclipseLogMgrFactory();
    }
   
    public final boolean isEclipseBased() {
        return true;
    }

    public InputStream getGlobalResource(String resourceName) {
        InputStream is = findGlobalResource(resourceName);
        if(is!=null) {
            return is;
        }
        return super.getGlobalResource(resourceName);
    }
   
    private InputStream findGlobalResource(String resourceName) {
        try {
            // Look if someone implemented an extension point to retrive the platform
            IExtensionRegistry reg = org.eclipse.core.runtime.Platform.getExtensionRegistry();
            if (reg != null) {
                IConfigurationElement[] elt = reg.getConfigurationElementsFor("com.ibm.commons.GlobalResourceFactory"); // $NON-NLS-1$
                for( int i=0; i<elt.length; i++ ) {
                    if( "globalResourceFactory".equalsIgnoreCase(elt[i].getName()) ) { // $NON-NLS-1$
                        try {
                            Object o = elt[i].createExecutableExtension("class"); // $NON-NLS-1$
                            IGlobalResourceProvider factory = (IGlobalResourceProvider)o;
                            InputStream is = factory.getGlobalResource(resourceName);
                            if ( is != null ){
                              return is;
                            }
                        } catch(Throwable ex) {
                            ex.printStackTrace();
                        }
                    }
                }
            }
        } catch( Throwable t ) {
            t.printStackTrace();
        }
       
        // Not found
        return null;
    }

   
    public IPlatformService getPlatformService( String serviceId ){
        IPlatformService srv = super.getPlatformService(serviceId);
        if(srv==null) {
          // Look for a provider
          srv = findService(serviceId);
        }
        return srv;
    }

    private IPlatformService findService(String serviceId) {
        try {
            // Look if someone implemented an extension point to retrive the platform
            IExtensionRegistry reg = org.eclipse.core.runtime.Platform.getExtensionRegistry();
            if (reg != null) {
                IConfigurationElement[] elt = reg.getConfigurationElementsFor("com.ibm.commons.ServiceFactory"); // $NON-NLS-1$
                for( int i=0; i<elt.length; i++ ) {
                    if( "serviceFactory".equalsIgnoreCase(elt[i].getName()) ) { // $NON-NLS-1$
                        try {
                            Object o = elt[i].createExecutableExtension("class"); // $NON-NLS-1$
                            IServiceFactory factory = (IServiceFactory)o;
                            IPlatformService srv = factory.getPlatformService(serviceId);
                            if ( srv != null ){
                              return srv;
                            }
                        } catch(Throwable ex) {
                            ex.printStackTrace();
                        }
                    }
                }
            }
        } catch( Throwable t ) {
            t.printStackTrace();
        }
       
        // Not found
        return null;
    }
   
    public boolean isFeatureEnabled (String featureId){
        return false;
    }
}
TOP

Related Classes of com.ibm.commons.platform.GenericEclipsePlatform

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.