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

org.jerkar.tool.BuildDependency Maven / Gradle / Ivy

There is a newer version: 0.7.0.RELEASE
Show newest version
package org.jerkar.tool;

import java.io.File;
import java.io.Serializable;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.jerkar.api.depmanagement.JkComputedDependency;
import org.jerkar.api.utils.JkUtilsReflect;
import org.jerkar.api.utils.JkUtilsString;

/**
 * A dependency on files generated by a Jerkar build (mainly on external
 * project).
 * 
 * @author Jerome Angibaud
 */
final class BuildDependency extends JkComputedDependency {

    private static final long serialVersionUID = 1L;

    private final JkBuild projectBuild;

    private final List methods;

    private BuildDependency(JkBuild projectBuild, List methods, Set files) {
        super(new Invoker(projectBuild, methods), files);
        this.methods = methods;
        this.projectBuild = projectBuild;
    }

    private static class Invoker implements Runnable, Serializable {

        private static final long serialVersionUID = 1L;

        private final JkBuild build;

        private final List methods;

        Invoker(JkBuild build, List methods) {
            super();
            this.build = build;
            this.methods = methods;
        }

        @Override
        public void run() {
            for (final String method : methods) {
                JkUtilsReflect.invoke(build, method);
            }
        }

    }

    public static BuildDependency of(JkBuild projectBuild, Set files) {
        return of(projectBuild, JkConstants.DEFAULT_METHOD, files);
    }

    public static BuildDependency of(JkBuild projectBuild, String methods, Set files) {
        final List list = Arrays.asList(JkUtilsString.split(methods, " "));
        return new BuildDependency(projectBuild, list, new HashSet(files));
    }

    public static BuildDependency of(JkBuild projectBuild, File... files) {
        return of(projectBuild, new HashSet(Arrays.asList(files)));
    }

    public static BuildDependency of(JkBuild projectBuild, String methods, File... files) {
        return of(projectBuild, methods, new HashSet(Arrays.asList(files)));
    }

    public JkBuild projectBuild() {
        return projectBuild;
    }

    @Override
    public String toString() {
        return projectBuild.toString() + " (" + this.projectBuild.getClass().getName() + " "
                + methods + ")";
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy