All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ow2.bonita.util.EnvTool Maven / Gradle / Ivy

/**
 * Copyright (C) 2006  Bull S. A. S.
 * Bull, Rue Jean Jaures, B.P.68, 78340, Les Clayes-sous-Bois
 * This library is free software; you can redistribute it and/or modify it under the terms
 * of the GNU Lesser General Public License as published by the Free Software Foundation
 * version 2.1 of the License.
 * This library 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 Lesser General Public License for more details.
 * You should have received a copy of the GNU Lesser General Public License along with this
 * program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
 * Floor, Boston, MA  02110-1301, USA.
 **/
package org.ow2.bonita.util;

import org.ow2.bonita.definition.activity.ConnectorExecutor;
import org.ow2.bonita.env.Environment;
import org.ow2.bonita.env.EnvironmentFactory;
import org.ow2.bonita.facade.BonitaSecurityContext;
import org.ow2.bonita.persistence.QuerierDbSession;
import org.ow2.bonita.persistence.RuntimeDbSession;
import org.ow2.bonita.pvm.internal.type.VariableTypeResolver;
import org.ow2.bonita.pvm.session.TimerSession;
import org.ow2.bonita.services.Archiver;
import org.ow2.bonita.services.LargeDataRepository;
import org.ow2.bonita.services.Querier;
import org.ow2.bonita.services.Recorder;
import org.ow2.bonita.services.Repository;
import org.ow2.bonita.services.handlers.FinishedInstanceHandler;
import org.ow2.bonita.services.handlers.UndeployedProcessHandler;
import org.ow2.bonita.services.impl.QuerierListAccessor;

/**
 * This class holds the {@link EnvironmentFactory} singleton.
 *
 * The {@link EnvironmentFactory} returned by {@link #getEnvironmentFactory()} comes from the
 * parsing of the resource defined by the property
 * {@link #ENVIRONMENT_PROPERTY}. If this property has not been set, the
 * {@link #DEFAULT_ENVIRONMENT} resource is used and parsed.
 *
 * @author Marc Blachon, Guillaume Porcher, Charles Souillard, Miguel Valdes, Pierre Vigneras
 */
public final class EnvTool {

  private EnvTool() { }

  public static RuntimeDbSession getRuntimeDbSession(final String id) {
    return getEnvObject(RuntimeDbSession.class, id);
  }
  public static QuerierDbSession getQuerierDbSession(final String id) {
    return getEnvObject(QuerierDbSession.class, id);
  }

  @SuppressWarnings("unchecked")
  public static  T get(final Class class1, final String key) {
    Misc.checkArgsNotNull(class1, key);
    final Object o = getEnv().get(key);
    String message = ExceptionManager.getInstance().getFullMessage(
  			"bis_ET_1", key);
    Misc.badStateIfNull(o, message);
    message = ExceptionManager.getInstance().getFullMessage(
  			"bis_ET_2", class1, o.getClass());
    Misc.badStateIfFalse(class1.isAssignableFrom(o.getClass()), message);
    return (T) o;
  }
  

  
    protected static Environment getEnv() {
      final Environment environment = Environment.getCurrent();
      Misc.badStateIfNull(environment, "Environment is null!");
      return environment;
    }
    @SuppressWarnings("unchecked")
    protected static  T getEnvObject(final Class clazz, final String name) {
      final Environment environment = getEnv();

      Misc.badStateIfNull(environment, "Environment is null!");
      final Object object = environment.get(name);
      if (object == null) {
        String message = ExceptionManager.getInstance().getMessage("bs_SET_1", name);
        throw new BonitaRuntimeException(message);
      } else if (!clazz.isInstance(object)) {
        String message = ExceptionManager.getInstance().getMessage(
            "bs_SET_2", object, name, clazz.getName());
        throw new BonitaRuntimeException(message);
      }
      return (T) object;
    }
    
    protected static  T getEnvClass(final Class clazz) {
      final Environment environment = getEnv();
      final T object = environment.get(clazz);
      if (object == null) {
        String message = ExceptionManager.getInstance().getFullMessage("be_EET_1", clazz.getName());
        throw new BonitaRuntimeException(message);
      }
      return object;
    }

    public static BonitaSecurityContext getBonitaSecurityContext() {
      return getEnvClass(BonitaSecurityContext.class);
    }
    
    public static Repository getRepository() {
      return getEnvClass(Repository.class);
    }
    
    public static LargeDataRepository getLargeDataRepository() {
      return getEnvClass(LargeDataRepository.class);
    }

    public static ConnectorExecutor getHookExecutor() {
      return getEnvClass(ConnectorExecutor.class);
    }

    public static TimerSession getTimerSession() {
      return getEnvClass(TimerSession.class);
    }

    public static Recorder getRecorder() {
      return getEnvObject(Recorder.class, Recorder.DEFAULT_KEY);
    }
    public static Archiver getArchiver() {
      return getEnvObject(Archiver.class, Archiver.DEFAULT_KEY);
    }

    //// TODO: remove the 3 methods
    public static Querier getAllQueriers() {
      return getQuerierListAccessor(Querier.DEFAULT_KEY).getAllQueriers();
    }
    public static Querier getJournalQueriers() {
      return getQuerierListAccessor(Querier.DEFAULT_KEY).getJournals();
    }
    public static Querier getHistoryQueriers() {
      return getQuerierListAccessor(Querier.DEFAULT_KEY).getHistories();
    }
    //// End of remove

    private static QuerierListAccessor getQuerierListAccessor(final String queryList) {
      return getEnvObject(QuerierListAccessor.class, queryList);
    }
    public static Querier getAllQueriers(final String queryList) {
      return getQuerierListAccessor(queryList).getAllQueriers();
    }
    public static Querier getJournalQueriers(final String queryList) {
      return getQuerierListAccessor(queryList).getJournals();
    }
    public static Querier getHistoryQueriers(final String queryList) {
      return getQuerierListAccessor(queryList).getHistories();
    }
    public static FinishedInstanceHandler getFinishedInstanceHandler() {
      return getEnvObject(FinishedInstanceHandler.class, FinishedInstanceHandler.DEFAULT_KEY);
    }
    public static UndeployedProcessHandler getUndeployedProcessHandler() {
      return getEnvObject(UndeployedProcessHandler.class, UndeployedProcessHandler.DEFAULT_KEY);
    }

    public static String getUserId() {
      final String userId = getEnv().getUserId();
      if (userId == null) {
        String message = ExceptionManager.getInstance().getMessage("bs_SET_3");
        throw new BonitaRuntimeException(message);
      }
      return userId;
    }
    
    public static VariableTypeResolver getVariableTypeResolver() {
    	return getEnvClass(VariableTypeResolver.class);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy