Package org.mokai.type.impl

Source Code of org.mokai.type.impl.PluginTypeLoader

package org.mokai.type.impl;

import java.util.HashSet;
import java.util.Set;

import org.mokai.Acceptor;
import org.mokai.Action;
import org.mokai.Connector;
import org.mokai.plugin.PluginMechanism;
import org.mokai.plugin.jpf.JpfPluginMechanism;
import org.mokai.type.AcceptorType;
import org.mokai.type.ActionType;
import org.mokai.type.ConnectorType;
import org.mokai.type.TypeLoader;

/**
*
* @author German Escobar
*/
public class PluginTypeLoader implements TypeLoader {

  private PluginMechanism pluginMechanism;

  public PluginTypeLoader() {
    this(new JpfPluginMechanism());
  }

  public PluginTypeLoader(PluginMechanism pluginMechanism) {
    this.pluginMechanism = pluginMechanism;
  }

  @Override
  public final Set<AcceptorType> loadAcceptorTypes() {
    Set<AcceptorType> acceptorTypes = new HashSet<AcceptorType>();

    Set<Class<? extends Acceptor>> acceptorClasses = pluginMechanism.loadTypes(Acceptor.class);
    for (Class<? extends Acceptor> acceptorClass : acceptorClasses) {
      AcceptorType acceptorType = TypeBuilder.buildAcceptorType(acceptorClass);
      acceptorTypes.add(acceptorType);
    }

    return acceptorTypes;
  }

  @Override
  public final Set<ActionType> loadActionTypes() {
    Set<ActionType> actionTypes = new HashSet<ActionType>();

    Set<Class<? extends Action>> actionClasses = pluginMechanism.loadTypes(Action.class);
    for (Class<? extends Action> actionClass : actionClasses) {
      ActionType actionType = TypeBuilder.buildActionType(actionClass);
      actionTypes.add(actionType);
    }

    return actionTypes;
  }

  @Override
  public final Set<ConnectorType> loadConnectorTypes() {
    Set<ConnectorType> processorTypes = new HashSet<ConnectorType>();

    Set<Class<? extends Connector>> connectorClasses = pluginMechanism.loadTypes(Connector.class);
    for (Class<? extends Connector> connectorClass : connectorClasses) {
      ConnectorType connectorType = TypeBuilder.buildConnectorType(connectorClass);
      processorTypes.add(connectorType);
    }

    return processorTypes;
  }

  public final PluginMechanism getPluginMechanism() {
    return pluginMechanism;
  }

  public final void setPluginMechanism(PluginMechanism pluginMechanism) {
    this.pluginMechanism = pluginMechanism;
  }
}
TOP

Related Classes of org.mokai.type.impl.PluginTypeLoader

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.