Package net.grinder.scriptengine.groovy

Source Code of net.grinder.scriptengine.groovy.GroovyScriptEngineService

/*
* Copyright (C) 2012 - 2012 NHN Corporation
* All rights reserved.
*
* This file is part of The nGrinder software distribution. Refer to
* the file LICENSE which is part of The nGrinder distribution for
* licensing details. The nGrinder distribution is available on the
* Internet at http://nhnopensource.org/ngrinder
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.grinder.scriptengine.groovy;

import net.grinder.common.GrinderProperties;
import net.grinder.engine.common.EngineException;
import net.grinder.engine.common.ScriptLocation;
import net.grinder.engine.process.JavaDCRInstrumenterEx;
import net.grinder.scriptengine.DCRContext;
import net.grinder.scriptengine.Instrumenter;
import net.grinder.scriptengine.ScriptEngineService;
import net.grinder.util.FileExtensionMatcher;

import java.util.ArrayList;
import java.util.List;

/**
* Class description.
*
* @author Mavlarn
* @since
*/
public class GroovyScriptEngineService implements ScriptEngineService {

  private final FileExtensionMatcher m_groovyFileMatcher = new FileExtensionMatcher(".groovy");

  @SuppressWarnings("unused")
  private final boolean m_forceDCRInstrumentation;
  private final DCRContext m_dcrContext;

  /**
   * Constructor.
   *
   * @param properties    Properties.
   * @param dcrContext    DCR context.
   * @param scriptLocation  Script location.
   */
  public GroovyScriptEngineService(GrinderProperties properties, //
          DCRContext dcrContext, ScriptLocation scriptLocation) {

    // This property name is poor, since it really means "If DCR
    // instrumentation is available, avoid the traditional Jython
    // instrumenter". I'm not renaming it, since I expect it only to last
    // a few releases, until DCR becomes the default.
    m_forceDCRInstrumentation = properties.getBoolean("grinder.dcrinstrumentation", false)
    // Hack: force DCR instrumentation for non-Jython scripts.
            || m_groovyFileMatcher.accept(scriptLocation.getFile());

    m_dcrContext = dcrContext;
  }

  /**
   * Constructor used when DCR is unavailable.
   */
  public GroovyScriptEngineService() {
    m_dcrContext = null;
    m_forceDCRInstrumentation = false;
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public List<Instrumenter> createInstrumenters() throws EngineException {

    final List<Instrumenter> instrumenters = new ArrayList<Instrumenter>();

    /*
     * if (!m_forceDCRInstrumentation) {
     * System.out.println("m_forceDCRInstrumentation is false."); // must using Instrumentation
     * }
     */
    if (m_dcrContext != null) {
      if (instrumenters.size() == 0) {
        instrumenters.add(new JavaDCRInstrumenterEx(m_dcrContext));
      }
    }

    return instrumenters;
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public ScriptEngine createScriptEngine(ScriptLocation script) throws EngineException {

    if (m_groovyFileMatcher.accept(script.getFile())) {
      return new GroovyScriptEngine(script);
    }

    return null;
  }

}
TOP

Related Classes of net.grinder.scriptengine.groovy.GroovyScriptEngineService

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.