| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| package org.apache.ivy.ant; |
| |
| import java.io.File; |
| import java.net.MalformedURLException; |
| import java.net.URL; |
| import java.util.Arrays; |
| import java.util.Collection; |
| |
| import org.apache.tools.ant.BuildException; |
| import org.apache.tools.ant.Project; |
| import org.apache.tools.ant.Task; |
| |
| /** |
| * Configure Ivy with an ivysettings.xml file |
| */ |
| public class IvyConfigure extends Task { |
| |
| /** |
| * Use to override a previous definition of settings with the same id |
| */ |
| public static final String OVERRIDE_TRUE = "true"; |
| /** |
| * Use to avoid overriding a previous definition of settings with the same id |
| */ |
| public static final String OVERRIDE_FALSE = "false"; |
| /** |
| * Use to raise an error if attempting to override a previous definition of settings with the |
| * same id |
| */ |
| public static final String OVERRIDE_NOT_ALLOWED = "notallowed"; |
| |
| private static final Collection OVERRIDE_VALUES = Arrays.asList(new String[] { |
| OVERRIDE_TRUE, OVERRIDE_FALSE, OVERRIDE_NOT_ALLOWED |
| }); |
| |
| private String override = OVERRIDE_NOT_ALLOWED; |
| |
| private IvyAntSettings settings = new IvyAntSettings(); |
| |
| public void setSettingsId(String settingsId) { |
| settings.setId(settingsId); |
| } |
| |
| public String getSettingsId() { |
| return settings.getId(); |
| } |
| |
| public void setOverride(String override) { |
| if (!OVERRIDE_VALUES.contains(override)) { |
| throw new IllegalArgumentException("invalid override value '" + override + "'. " |
| + "Valid values are " + OVERRIDE_VALUES); |
| } |
| this.override = override; |
| } |
| |
| public String getOverride() { |
| return override; |
| } |
| |
| public File getFile() { |
| return settings.getFile(); |
| } |
| |
| public void setFile(File file) { |
| settings.setFile(file); |
| } |
| |
| public URL getUrl() { |
| return settings.getUrl(); |
| } |
| |
| public void setUrl(String url) throws MalformedURLException { |
| settings.setUrl(url); |
| } |
| |
| public void setUrl(URL url) { |
| if (url == null) { |
| throw new NullPointerException("Cannot set a null URL"); |
| } |
| settings.setUrl(url); |
| } |
| |
| public String getRealm() { |
| return settings.getRealm(); |
| } |
| |
| public void setRealm(String realm) { |
| settings.setRealm(realm); |
| } |
| |
| public String getHost() { |
| return settings.getHost(); |
| } |
| |
| public void setHost(String host) { |
| settings.setHost(host); |
| } |
| |
| public String getUserName() { |
| return settings.getUsername(); |
| } |
| |
| public void setUserName(String userName) { |
| settings.setUsername(userName); |
| } |
| |
| public String getPasswd() { |
| return settings.getPasswd(); |
| } |
| |
| public void setPasswd(String passwd) { |
| settings.setPasswd(passwd); |
| } |
| |
| public void execute() throws BuildException { |
| String settingsId = settings.getId(); |
| Object otherRef = getProject().getReference(settingsId); |
| |
| if ((otherRef != null) && OVERRIDE_NOT_ALLOWED.equals(override)) { |
| throw new BuildException( |
| "Overriding a previous definition of ivy:settings with the id '" |
| + settingsId + "' is not allowed when using override='" |
| + OVERRIDE_NOT_ALLOWED + "'."); |
| } |
| |
| if ((otherRef != null) && OVERRIDE_FALSE.equals(override)) { |
| verbose("A settings definition is already available for " + settingsId + ": skipping"); |
| return; |
| } |
| |
| settings.setProject(getProject()); |
| getProject().addReference(settingsId, settings); |
| settings.createIvyEngine(this); |
| } |
| |
| private void verbose(String msg) { |
| log(msg, Project.MSG_VERBOSE); |
| } |
| } |