Package com.dragome.commons

Source Code of com.dragome.commons.ChainedInstrumentationDragomeConfigurator

/*******************************************************************************
* Copyright (c) 2011-2014 Fernando Petrola
*
*  This file is part of Dragome SDK.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
******************************************************************************/
package com.dragome.commons;

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

import com.dragome.commons.compiler.BytecodeTransformer;

public class ChainedInstrumentationDragomeConfigurator extends InstrumentationDragomeConfigurator
{
  protected List<InstrumentationDragomeConfigurator> configurators= new ArrayList<InstrumentationDragomeConfigurator>();

  public ChainedInstrumentationDragomeConfigurator()
  {
  }

  public void init(InstrumentationDragomeConfigurator... configurators)
  {
    this.configurators= Arrays.asList(configurators);

    for (InstrumentationDragomeConfigurator configurator : this.configurators)
      if (configurator.isEnabled())
      {
        includedPaths.addAll(configurator.getIncludedPaths());
        loadedFromParent.addAll(configurator.getLoadedFromParent());
      }
  }

  public BytecodeTransformer getBytecodeTransformer()
  {
    return new BytecodeTransformer()
    {
      public byte[] transform(String className, byte[] bytecode)
      {
        byte[] transformedBytecode= bytecode;

        for (InstrumentationDragomeConfigurator configurator : configurators)
          if (configurator.isEnabled())
            transformedBytecode= configurator.getBytecodeTransformer().transform(className, transformedBytecode);

        return transformedBytecode;
      }

      public boolean requiresTransformation(String className)
      {
        boolean transform= false;
        for (InstrumentationDragomeConfigurator configurator : configurators)
          if (configurator.isEnabled())
            transform|= configurator.getBytecodeTransformer().requiresTransformation(className);

        return transform;
      }
    };
  }

  public boolean filterClassPath(String classpathEntry)
  {
    boolean result= false;
    for (InstrumentationDragomeConfigurator configurator : configurators)
      result|= configurator.filterClassPath(classpathEntry);

    return result;
  }
}
TOP

Related Classes of com.dragome.commons.ChainedInstrumentationDragomeConfigurator

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.