Package org.pentaho.test.platform.engine.core

Source Code of org.pentaho.test.platform.engine.core.SimpleObjectFactory

/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License, version 3 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/gpl.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* Copyright 2005 - 2013 Pentaho Corporation.  All rights reserved.
*/

package org.pentaho.test.platform.engine.core;

import org.pentaho.platform.api.engine.IPentahoInitializer;
import org.pentaho.platform.api.engine.IPentahoObjectFactory;
import org.pentaho.platform.api.engine.IPentahoObjectReference;
import org.pentaho.platform.api.engine.IPentahoSession;
import org.pentaho.platform.api.engine.ObjectFactoryException;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@SuppressWarnings( "nls" )
/**
* A very simplistic implementation of IPentahoObjectFactory which allows
* the user to programmatically define platform objects for later instancing.
* @author aphillips
*/
public class SimpleObjectFactory implements IPentahoObjectFactory {

  private HashMap<String, String> classnamesMap = new HashMap<String, String>();

  public <T> T get( Class<T> interfaceClass, IPentahoSession session ) throws ObjectFactoryException {
    return get( interfaceClass, interfaceClass.getSimpleName(), session );
  }

  @SuppressWarnings( "unchecked" )
  public <T> T get( Class<T> interfaceClass, String key, IPentahoSession session ) throws ObjectFactoryException {
    String classname = classnamesMap.get( key );
    try {
      Class implClass = Class.forName( classname );
      T t = (T) implClass.newInstance();
      if ( t instanceof IPentahoInitializer ) {
        ( (IPentahoInitializer) t ).init( session );
      }
      return t;
    } catch ( Throwable th ) {
      throw new ObjectFactoryException( "Could not create instance for class " + classname, th );
    }
  }

  public Class<?> getImplementingClass( String key ) {
    try {
      return Class.forName( classnamesMap.get( key ) );
    } catch ( ClassNotFoundException e ) {
      e.printStackTrace();
      return null;
    }
  }

  public void init( String configFile, Object context ) {
  }

  public boolean objectDefined( String key ) {
    return classnamesMap.containsKey( key );
  }

  /**
   * Register an object for creation.
   *
   * @param key
   *          identifying string
   * @param classname
   *          must be a fully qualified class name for a top-level or nested top-level (static inner) class
   */
  public void defineObject( String key, String classname ) {
    classnamesMap.put( key, classname );
  }

  @Override
  public <T> List<T> getAll( Class<T> interfaceClass, IPentahoSession curSession ) throws ObjectFactoryException {
    return null; // To change body of implemented methods use File | Settings | File Templates.
  }

  @Override
  public <T> IPentahoObjectReference<T> getObjectReference( Class<T> clazz, IPentahoSession curSession ) {
    return null; // To change body of implemented methods use File | Settings | File Templates.
  }

  @Override
  public <T> T get( Class<T> interfaceClass, IPentahoSession session, Map<String, String> properties )
    throws ObjectFactoryException {
    return null; // To change body of implemented methods use File | Settings | File Templates.
  }

  @Override
  public boolean objectDefined( Class<?> clazz ) {
    return false; // To change body of implemented methods use File | Settings | File Templates.
  }

  @Override
  public <T> IPentahoObjectReference<T> getObjectReference( Class<T> interfaceClass, IPentahoSession curSession,
      Map<String, String> properties ) {
    return null; // To change body of implemented methods use File | Settings | File Templates.
  }

  @Override
  public <T> List<IPentahoObjectReference<T>> getObjectReferences( Class<T> interfaceClass,
                                                                   IPentahoSession curSession ) {
    return null; // To change body of implemented methods use File | Settings | File Templates.
  }

  @Override
  public <T> List<IPentahoObjectReference<T>> getObjectReferences( Class<T> interfaceClass, IPentahoSession curSession,
      Map<String, String> properties ) {
    return null; // To change body of implemented methods use File | Settings | File Templates.
  }

  @Override
  public <T> List<T> getAll( Class<T> interfaceClass, IPentahoSession curSession, Map<String, String> properties )
    throws ObjectFactoryException {
    return null; // To change body of implemented methods use File | Settings | File Templates.
  }

  @Override
  public String getName() {
    return "Simple Object Factory";
  }
}
TOP

Related Classes of org.pentaho.test.platform.engine.core.SimpleObjectFactory

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.