Package com.redhat.ceylon.ant

Source Code of com.redhat.ceylon.ant.CeylonConfigRepositoryAntTask

package com.redhat.ceylon.ant;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;

import com.redhat.ceylon.common.config.CeylonConfig;
import com.redhat.ceylon.common.config.Credentials;
import com.redhat.ceylon.common.config.Repositories;
import com.redhat.ceylon.common.config.Repositories.Repository;

public class CeylonConfigRepositoryAntTask extends CeylonConfigBaseTask {
   
    public enum Type { system, output, cache, lookup, global, remote, other }
    public enum Key { name, url, user, password, keystore, alias }
   
    private String name;
    private Type type;
    private Key key;
    private String property;
   
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Type getType() {
        return type;
    }

    public void setType(Type type) {
        this.type = type;
    }

    public Key getKey() {
        return key;
    }

    public void setKey(Key key) {
        this.key = key;
    }

    public String getProperty() {
        return property;
    }

    public void setProperty(String property) {
        this.property = property;
    }

    @Override
    public void execute() throws BuildException {
        Java7Checker.check();
        if (name == null && type == null) {
            throw new BuildException("Either the 'name' or 'type' attribute has to be specified for 'ceylon-config-repository'");
        }
        if (name != null && type != null) {
            throw new BuildException("The 'name' and 'type' attributes cannot both be specified for 'ceylon-config-repository'");
        }
        if (key == null) {
            throw new BuildException("'key' is a required attribute for 'ceylon-config-repository'");
        }
        if (property == null) {
            throw new BuildException("'property' is a required attribute for 'ceylon-config-value'");
        }
        CeylonConfig config = getConfig();
        Repositories reps = Repositories.withConfig(config);
        Repository rep;
        String repdesc;
        if (name != null) {
            rep = reps.getRepository(name);
            repdesc = "of name '" + name + "'";
        } else {
            rep = reps.getRepositoryByTypeWithDefaults(type.name());
            repdesc = "of type '" + type.name() + "'";
        }
        if (rep != null) {
            String value = null;
            switch (key) {
            case name:
                value = rep.getName(); break;
            case url:
                value = rep.getUrl(); break;
            default:
                Credentials cred = rep.getCredentials();
                if (cred != null) {
                    switch (key) {
                    case user:
                        value = cred.getUser(); break;
                    case password:
                        value = cred.getPassword(); break;
                    case keystore:
                        value = cred.getKeystore(); break;
                    case alias:
                        value = cred.getAlias(); break;
                    default:
                        // Won't happen
                    }
                } else {
                    log("No credentials found for repository " + repdesc, Project.MSG_WARN);
                }
            }
            if (value != null) {
                setProjectProperty(property, value);
            }
        } else {
            log("Repository " + repdesc + " not found", Project.MSG_WARN);
        }
    }

}
TOP

Related Classes of com.redhat.ceylon.ant.CeylonConfigRepositoryAntTask

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.