Package org.jacoco.ant

Source Code of org.jacoco.ant.AntResourcesLocator

/*******************************************************************************
* Copyright (c) 2009, 2014 Mountainminds GmbH & Co. KG and Contributors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*    Marc R. Hoffmann - initial API and implementation
*    Dominik Stadler - source folder support
*   
*******************************************************************************/
package org.jacoco.ant;

import java.util.Iterator;

import org.apache.tools.ant.types.Resource;
import org.apache.tools.ant.types.resources.FileResource;
import org.jacoco.report.DirectorySourceFileLocator;
import org.jacoco.report.MultiSourceFileLocator;

/**
* Source file locator based on Ant resources. The locator supports files as
* well as directories. The lookup is first performed on files (matching the
* local file name) and afterwards on directories, by the order the directory
* resources have been added. The directories are considered as source folders
* that are searched for source files with the fully qualified name (package and
* local name).
*/
class AntResourcesLocator extends MultiSourceFileLocator {

  private final String encoding;
  private final AntFilesLocator filesLocator;

  private boolean empty;

  AntResourcesLocator(final String encoding, final int tabWidth) {
    super(tabWidth);
    this.encoding = encoding;
    this.filesLocator = new AntFilesLocator(encoding, tabWidth);
    this.empty = true;
    super.add(filesLocator);
  }

  /**
   * Adds the given file or directory resource to the locator.
   *
   * @param resource
   *            resource to add
   */
  void add(final Resource resource) {
    empty = false;
    if (resource.isDirectory()) {
      final FileResource dir = (FileResource) resource;
      super.add(new DirectorySourceFileLocator(dir.getFile(), encoding,
          getTabWidth()));
    } else {
      filesLocator.add(resource);
    }
  }

  void addAll(final Iterator<?> iterator) {
    while (iterator.hasNext()) {
      add((Resource) iterator.next());
    }
  }

  /**
   * Checks, whether resources have been added.
   *
   * @return <code>true</code>, if no resources have been added
   */
  boolean isEmpty() {
    return empty;
  }

}
TOP

Related Classes of org.jacoco.ant.AntResourcesLocator

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.