public void execute()

in src/main/java/org/apache/easyant/tasks/BindTarget.java [32:97]


    public void execute() throws BuildException {
        String message = "extension-point mapping for target " + getTarget();
        if (!BuildConfigurationHelper.isBuildConfigurationActive(getBuildConfigurations(), getProject(),
                message)) {
            log("no matching build configuration for this extension-point mapping, this mapping will be ignored",
                    Project.MSG_DEBUG);
            return;
        }
        Target t = getProject().getTargets().get(getTarget());
        if (t == null) {
            throw new BuildException("unable to find target " + getTarget());
        }

        // unbind current mapping
        for (Target current : getProject().getTargets().values()) {
            if (current instanceof ExtensionPoint) {
                Enumeration<?> dependencies = current.getDependencies();
                StringBuilder dependsOn = new StringBuilder();
                boolean requiresUpdates = false;
                while (dependencies.hasMoreElements()) {
                    String dep = (String) dependencies.nextElement();
                    if (dep.equals(getTarget())) {
                        log("target" + getTarget() + " is registred in extensionPoint" + current.getName(),
                                Project.MSG_VERBOSE);
                        requiresUpdates = true;
                    } else {
                        dependsOn.append(dep);
                        dependsOn.append(",");
                    }
                }
                if (requiresUpdates) {
                    log("removing target" + getTarget() + " from extension-point" + current.getName(),
                            Project.MSG_VERBOSE);

                    ExtensionPoint ep = new ExtensionPoint();
                    ep.setDescription(current.getDescription());
                    ep.setIf(current.getIf());
                    ep.setLocation(current.getLocation());
                    ep.setName(current.getName());
                    ep.setProject(current.getProject());
                    ep.setUnless(current.getUnless());
                    String depends = dependsOn.toString();
                    if (depends.endsWith(",")) {
                        depends = depends.substring(0, depends.length() - 1);
                    }
                    ep.setDepends(depends);
                    getProject().addOrReplaceTarget(ep);
                }

            }
        }

        if (getExtensionOf() != null && !getExtensionOf().equals("")) {
            if (!getProject().getTargets().containsKey(getExtensionOf())) {
                throw new BuildException("can't add target " + getTarget() + " to extension-point " + getExtensionOf()
                        + " because the extension-point" + " is unknown.");
            }
            Target p = getProject().getTargets().get(getExtensionOf());

            if (!(p instanceof ExtensionPoint)) {
                throw new BuildException("referenced target " + getExtensionOf() + " is not a extension-point");
            }
            p.addDependency(getTarget());
        }

    }