You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2016/05/07 16:47:55 UTC
[5/7] maven-aether git commit: moved code from org.ecplise to
org.apache.maven
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/apache/maven/aether/internal/ant/types/Exclusion.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/maven/aether/internal/ant/types/Exclusion.java b/src/main/java/org/apache/maven/aether/internal/ant/types/Exclusion.java
new file mode 100644
index 0000000..9b99f80
--- /dev/null
+++ b/src/main/java/org/apache/maven/aether/internal/ant/types/Exclusion.java
@@ -0,0 +1,190 @@
+package org.apache.maven.aether.internal.ant.types;
+
+/*
+ * 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.
+ */
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.types.Reference;
+
+/**
+ */
+public class Exclusion
+ extends DataType
+{
+
+ private static final String WILDCARD = "*";
+
+ private String groupId;
+
+ private String artifactId;
+
+ private String classifier;
+
+ private String extension;
+
+ protected Exclusion getRef()
+ {
+ return (Exclusion) getCheckedRef();
+ }
+
+ public void validate( Task task )
+ {
+ if ( isReference() )
+ {
+ getRef().validate( task );
+ }
+ else
+ {
+ if ( groupId == null && artifactId == null && classifier == null && extension == null )
+ {
+ throw new BuildException( "You must specify at least one of "
+ + "'groupId', 'artifactId', 'classifier' or 'extension'" );
+ }
+ }
+ }
+
+ public void setRefid( Reference ref )
+ {
+ if ( groupId != null || artifactId != null || extension != null || classifier != null )
+ {
+ throw tooManyAttributes();
+ }
+ super.setRefid( ref );
+ }
+
+ public String getGroupId()
+ {
+ if ( isReference() )
+ {
+ return getRef().getGroupId();
+ }
+ return ( groupId != null ) ? groupId : WILDCARD;
+ }
+
+ public void setGroupId( String groupId )
+ {
+ checkAttributesAllowed();
+ if ( this.groupId != null )
+ {
+ throw ambiguousCoords();
+ }
+ this.groupId = groupId;
+ }
+
+ public String getArtifactId()
+ {
+ if ( isReference() )
+ {
+ return getRef().getArtifactId();
+ }
+ return ( artifactId != null ) ? artifactId : WILDCARD;
+ }
+
+ public void setArtifactId( String artifactId )
+ {
+ checkAttributesAllowed();
+ if ( this.artifactId != null )
+ {
+ throw ambiguousCoords();
+ }
+ this.artifactId = artifactId;
+ }
+
+ public String getClassifier()
+ {
+ if ( isReference() )
+ {
+ return getRef().getClassifier();
+ }
+ return ( classifier != null ) ? classifier : WILDCARD;
+ }
+
+ public void setClassifier( String classifier )
+ {
+ checkAttributesAllowed();
+ if ( this.classifier != null )
+ {
+ throw ambiguousCoords();
+ }
+ this.classifier = classifier;
+ }
+
+ public String getExtension()
+ {
+ if ( isReference() )
+ {
+ return getRef().getExtension();
+ }
+ return ( extension != null ) ? extension : WILDCARD;
+ }
+
+ public void setExtension( String extension )
+ {
+ checkAttributesAllowed();
+ if ( this.extension != null )
+ {
+ throw ambiguousCoords();
+ }
+ this.extension = extension;
+ }
+
+ public void setCoords( String coords )
+ {
+ checkAttributesAllowed();
+ if ( groupId != null || artifactId != null || extension != null || classifier != null )
+ {
+ throw ambiguousCoords();
+ }
+ Pattern p = Pattern.compile( "([^: ]+)(:([^: ]+)(:([^: ]+)(:([^: ]*))?)?)?" );
+ Matcher m = p.matcher( coords );
+ if ( !m.matches() )
+ {
+ throw new BuildException( "Bad exclusion coordinates '" + coords
+ + "', expected format is <groupId>[:<artifactId>[:<extension>[:<classifier>]]]" );
+ }
+ groupId = m.group( 1 );
+ artifactId = m.group( 3 );
+ if ( artifactId == null )
+ {
+ artifactId = "*";
+ }
+ extension = m.group( 5 );
+ if ( extension == null )
+ {
+ extension = "*";
+ }
+ classifier = m.group( 7 );
+ if ( classifier == null )
+ {
+ classifier = "*";
+ }
+ }
+
+ private BuildException ambiguousCoords()
+ {
+ return new BuildException( "You must not specify both 'coords' and "
+ + "('groupId', 'artifactId', 'extension', 'classifier')" );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/apache/maven/aether/internal/ant/types/LocalRepository.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/maven/aether/internal/ant/types/LocalRepository.java b/src/main/java/org/apache/maven/aether/internal/ant/types/LocalRepository.java
new file mode 100644
index 0000000..9371aab
--- /dev/null
+++ b/src/main/java/org/apache/maven/aether/internal/ant/types/LocalRepository.java
@@ -0,0 +1,90 @@
+package org.apache.maven.aether.internal.ant.types;
+
+/*
+ * 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.
+ */
+
+import java.io.File;
+
+import org.apache.maven.aether.internal.ant.AntRepoSys;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.types.Reference;
+
+/**
+ */
+public class LocalRepository
+ extends DataType
+{
+
+ private final Task task;
+
+ private File dir;
+
+ public LocalRepository()
+ {
+ this( null );
+ }
+
+ public LocalRepository( Task task )
+ {
+ this.task = task;
+ }
+
+ @Override
+ public void setProject( Project project )
+ {
+ super.setProject( project );
+
+ if ( task == null )
+ {
+ AntRepoSys.getInstance( project ).setLocalRepository( this );
+ }
+ }
+
+ protected LocalRepository getRef()
+ {
+ return (LocalRepository) getCheckedRef();
+ }
+
+ public void setRefid( Reference ref )
+ {
+ if ( dir != null )
+ {
+ throw tooManyAttributes();
+ }
+ super.setRefid( ref );
+ }
+
+ public File getDir()
+ {
+ if ( isReference() )
+ {
+ return getRef().getDir();
+ }
+ return dir;
+ }
+
+ public void setDir( File dir )
+ {
+ checkAttributesAllowed();
+ this.dir = dir;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/apache/maven/aether/internal/ant/types/Mirror.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/maven/aether/internal/ant/types/Mirror.java b/src/main/java/org/apache/maven/aether/internal/ant/types/Mirror.java
new file mode 100644
index 0000000..bbb19bb
--- /dev/null
+++ b/src/main/java/org/apache/maven/aether/internal/ant/types/Mirror.java
@@ -0,0 +1,155 @@
+package org.apache.maven.aether.internal.ant.types;
+
+/*
+ * 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.
+ */
+
+import org.apache.maven.aether.internal.ant.AntRepoSys;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.types.Reference;
+
+/**
+ */
+public class Mirror
+ extends DataType
+{
+
+ private String id;
+
+ private String url;
+
+ private String type;
+
+ private String mirrorOf;
+
+ private Authentication authentication;
+
+ @Override
+ public void setProject( Project project )
+ {
+ super.setProject( project );
+
+ AntRepoSys.getInstance( project ).addMirror( this );
+ }
+
+ protected Mirror getRef()
+ {
+ return (Mirror) getCheckedRef();
+ }
+
+ public void setRefid( Reference ref )
+ {
+ if ( id != null || url != null || mirrorOf != null || type != null )
+ {
+ throw tooManyAttributes();
+ }
+ super.setRefid( ref );
+ }
+
+ public String getId()
+ {
+ if ( isReference() )
+ {
+ return getRef().getId();
+ }
+ return id;
+ }
+
+ public void setId( String id )
+ {
+ this.id = id;
+ }
+
+ public String getUrl()
+ {
+ if ( isReference() )
+ {
+ return getRef().getUrl();
+ }
+ return url;
+ }
+
+ public void setUrl( String url )
+ {
+ checkAttributesAllowed();
+ this.url = url;
+ }
+
+ public String getType()
+ {
+ if ( isReference() )
+ {
+ return getRef().getType();
+ }
+ return ( type != null ) ? type : "default";
+ }
+
+ public void setType( String type )
+ {
+ checkAttributesAllowed();
+ this.type = type;
+ }
+
+ public String getMirrorOf()
+ {
+ if ( isReference() )
+ {
+ return getRef().getMirrorOf();
+ }
+ return mirrorOf;
+ }
+
+ public void setMirrorOf( String mirrorOf )
+ {
+ checkAttributesAllowed();
+ this.mirrorOf = mirrorOf;
+ }
+
+ public void addAuthentication( Authentication authentication )
+ {
+ checkChildrenAllowed();
+ if ( this.authentication != null )
+ {
+ throw new BuildException( "You must not specify multiple <authentication> elements" );
+ }
+ this.authentication = authentication;
+ }
+
+ public Authentication getAuthentication()
+ {
+ if ( isReference() )
+ {
+ getRef().getAuthentication();
+ }
+ return authentication;
+ }
+
+ public void setAuthRef( Reference ref )
+ {
+ if ( authentication == null )
+ {
+ authentication = new Authentication();
+ authentication.setProject( getProject() );
+ }
+ authentication.setRefid( ref );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/apache/maven/aether/internal/ant/types/ModelValueExtractor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/maven/aether/internal/ant/types/ModelValueExtractor.java b/src/main/java/org/apache/maven/aether/internal/ant/types/ModelValueExtractor.java
new file mode 100644
index 0000000..73fed22
--- /dev/null
+++ b/src/main/java/org/apache/maven/aether/internal/ant/types/ModelValueExtractor.java
@@ -0,0 +1,99 @@
+package org.apache.maven.aether.internal.ant.types;
+
+/*
+ * 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.
+ */
+
+import org.apache.maven.model.Model;
+import org.apache.tools.ant.Project;
+import org.codehaus.plexus.interpolation.reflection.ReflectionValueExtractor;
+
+/**
+ */
+class ModelValueExtractor
+{
+
+ private static final String PREFIX_PROPERTIES = "properties.";
+
+ private final String prefix;
+
+ private final Project project;
+
+ private final Model model;
+
+ public ModelValueExtractor( String prefix, Model model, Project project )
+ {
+ if ( model == null )
+ {
+ throw new IllegalArgumentException( "reference to Maven POM has not been specified" );
+ }
+ if ( project == null )
+ {
+ throw new IllegalArgumentException( "reference to Ant project has not been specified" );
+ }
+ if ( prefix == null || prefix.length() <= 0 )
+ {
+ prefix = "pom.";
+ }
+ else if ( !prefix.endsWith( "." ) )
+ {
+ prefix += '.';
+ }
+ this.prefix = prefix;
+ this.model = model;
+ this.project = project;
+ }
+
+ public Project getProject()
+ {
+ return project;
+ }
+
+ public boolean isApplicable( String expression )
+ {
+ return expression.startsWith( prefix );
+ }
+
+ public Object getValue( String expression )
+ {
+ if ( expression.startsWith( prefix ) )
+ {
+ String expr = expression.substring( prefix.length() );
+ try
+ {
+ if ( expr.startsWith( PREFIX_PROPERTIES ) )
+ {
+ String key = expr.substring( PREFIX_PROPERTIES.length() );
+ return model.getProperties().getProperty( key );
+ }
+
+ return ReflectionValueExtractor.evaluate( expr, model, false );
+ }
+ catch ( Exception e )
+ {
+ project.log( "Could not retrieve '" + expression + "' from POM: " + e.getMessage(), e, Project.MSG_WARN );
+ return null;
+ }
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/apache/maven/aether/internal/ant/types/Pom.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/maven/aether/internal/ant/types/Pom.java b/src/main/java/org/apache/maven/aether/internal/ant/types/Pom.java
new file mode 100644
index 0000000..eff8591
--- /dev/null
+++ b/src/main/java/org/apache/maven/aether/internal/ant/types/Pom.java
@@ -0,0 +1,352 @@
+package org.apache.maven.aether.internal.ant.types;
+
+/*
+ * 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.
+ */
+
+import java.io.File;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.maven.aether.internal.ant.AntRepoSys;
+import org.apache.maven.aether.internal.ant.ProjectWorkspaceReader;
+import org.apache.maven.aether.internal.ant.tasks.RefTask;
+import org.apache.maven.model.Model;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.PropertyHelper;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.Reference;
+
+/**
+ */
+public class Pom
+ extends RefTask
+{
+
+ private Model model;
+
+ private String id;
+
+ private File file;
+
+ private String groupId;
+
+ private String artifactId;
+
+ private String version;
+
+ private String packaging = "jar";
+
+ private RemoteRepositories remoteRepositories;
+
+ private String coords;
+
+ protected Pom getRef()
+ {
+ return (Pom) getCheckedRef();
+ }
+
+ public void validate()
+ {
+ if ( isReference() )
+ {
+ getRef().validate();
+ }
+ else
+ {
+ if ( file == null )
+ {
+ if ( groupId == null )
+ {
+ throw new BuildException( "You must specify the 'groupId' for the POM" );
+ }
+ if ( artifactId == null )
+ {
+ throw new BuildException( "You must specify the 'artifactId' for the POM" );
+ }
+ if ( version == null )
+ {
+ throw new BuildException( "You must specify the 'version' for the POM" );
+ }
+ }
+ }
+
+ }
+
+ public void setRefid( Reference ref )
+ {
+ if ( id != null || file != null || groupId != null || artifactId != null || version != null )
+ {
+ throw tooManyAttributes();
+ }
+ if ( remoteRepositories != null )
+ {
+ throw noChildrenAllowed();
+ }
+ super.setRefid( ref );
+ }
+
+ public void setId( String id )
+ {
+ checkAttributesAllowed();
+ this.id = id;
+ }
+
+ public File getFile()
+ {
+ if ( isReference() )
+ {
+ return getRef().getFile();
+ }
+ return file;
+ }
+
+ public void setFile( File file )
+ {
+ checkAttributesAllowed();
+ if ( groupId != null || artifactId != null || version != null )
+ {
+ throw ambiguousSource();
+ }
+
+ this.file = file;
+
+ }
+
+ public String getGroupId()
+ {
+ if ( isReference() )
+ {
+ return getRef().getGroupId();
+ }
+ return groupId;
+ }
+
+ public void setGroupId( String groupId )
+ {
+ checkAttributesAllowed();
+ if ( this.groupId != null )
+ {
+ throw ambiguousCoords();
+ }
+ if ( file != null )
+ {
+ throw ambiguousSource();
+ }
+ this.groupId = groupId;
+ }
+
+ public String getArtifactId()
+ {
+ if ( isReference() )
+ {
+ return getRef().getArtifactId();
+ }
+ return artifactId;
+ }
+
+ public void setArtifactId( String artifactId )
+ {
+ checkAttributesAllowed();
+ if ( this.artifactId != null )
+ {
+ throw ambiguousCoords();
+ }
+ if ( file != null )
+ {
+ throw ambiguousSource();
+ }
+ this.artifactId = artifactId;
+ }
+
+ public String getVersion()
+ {
+ if ( isReference() )
+ {
+ return getRef().getVersion();
+ }
+ return version;
+ }
+
+ public void setVersion( String version )
+ {
+ checkAttributesAllowed();
+ if ( this.version != null )
+ {
+ throw ambiguousCoords();
+ }
+ if ( file != null )
+ {
+ throw ambiguousSource();
+ }
+ this.version = version;
+ }
+
+ public String getCoords()
+ {
+ if ( isReference() )
+ {
+ return getRef().getCoords();
+ }
+ return coords;
+ }
+
+ public void setCoords( String coords )
+ {
+ checkAttributesAllowed();
+ if ( file != null )
+ {
+ throw ambiguousSource();
+ }
+ if ( groupId != null || artifactId != null || version != null )
+ {
+ throw ambiguousCoords();
+ }
+ Pattern p = Pattern.compile( "([^: ]+):([^: ]+):([^: ]+)" );
+ Matcher m = p.matcher( coords );
+ if ( !m.matches() )
+ {
+ throw new BuildException( "Bad POM coordinates, expected format is <groupId>:<artifactId>:<version>" );
+ }
+ groupId = m.group( 1 );
+ artifactId = m.group( 2 );
+ version = m.group( 3 );
+ }
+
+ private BuildException ambiguousCoords()
+ {
+ return new BuildException( "You must not specify both 'coords' and ('groupId', 'artifactId', 'version')" );
+ }
+
+ private BuildException ambiguousSource()
+ {
+ return new BuildException( "You must not specify both 'file' and "
+ + "('coords', 'groupId', 'artifactId', 'version')" );
+ }
+
+ public String getPackaging()
+ {
+ if ( isReference() )
+ {
+ return getRef().getPackaging();
+ }
+ return packaging;
+ }
+
+ public void setPackaging( String packaging )
+ {
+ checkAttributesAllowed();
+ if ( file != null )
+ {
+ throw ambiguousSource();
+ }
+ this.packaging = packaging;
+ }
+
+ private RemoteRepositories getRemoteRepos()
+ {
+ if ( remoteRepositories == null )
+ {
+ remoteRepositories = new RemoteRepositories();
+ remoteRepositories.setProject( getProject() );
+ }
+ return remoteRepositories;
+ }
+
+ public void addRemoteRepo( RemoteRepository repository )
+ {
+ getRemoteRepos().addRemoterepo( repository );
+ }
+
+ public void addRemoteRepos( RemoteRepositories repositories )
+ {
+ getRemoteRepos().addRemoterepos( repositories );
+ }
+
+ public void setRemoteReposRef( Reference ref )
+ {
+ RemoteRepositories repos = new RemoteRepositories();
+ repos.setProject( getProject() );
+ repos.setRefid( ref );
+ getRemoteRepos().addRemoterepos( repos );
+ }
+
+ public Model getModel( Task task )
+ {
+ if ( isReference() )
+ {
+ return getRef().getModel( task );
+ }
+ synchronized ( this )
+ {
+ if ( model == null )
+ {
+ if ( file != null )
+ {
+ model = AntRepoSys.getInstance( getProject() ).loadModel( task, file, true, remoteRepositories );
+ }
+ }
+ return model;
+ }
+ }
+
+ @Override
+ public void execute()
+ {
+ validate();
+
+ if ( file != null && ( id == null || AntRepoSys.getInstance( getProject() ).getDefaultPom() == null ) )
+ {
+ AntRepoSys.getInstance( getProject() ).setDefaultPom( this );
+ }
+
+ ProjectWorkspaceReader.getInstance().addPom( this );
+
+ Model model = getModel( this );
+
+ if ( model == null )
+ {
+ coords = getGroupId() + ":" + getArtifactId() + ":" + getVersion();
+ return;
+ }
+
+ coords = model.getGroupId() + ":" + model.getArtifactId() + ":" + model.getVersion();
+
+ ModelValueExtractor extractor = new ModelValueExtractor( id, model, getProject() );
+
+ PropertyHelper propHelper = PropertyHelper.getPropertyHelper( getProject() );
+
+ try
+ {
+ // Ant 1.8.0 delegate
+ PomPropertyEvaluator.register( extractor, propHelper );
+ }
+ catch ( LinkageError e )
+ {
+ // Ant 1.6 - 1.7.1 interceptor chaining
+ PomPropertyHelper.register( extractor, propHelper );
+ }
+
+ }
+
+ public String toString()
+ {
+ return coords + " (" + super.toString() + ")";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/apache/maven/aether/internal/ant/types/PomPropertyEvaluator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/maven/aether/internal/ant/types/PomPropertyEvaluator.java b/src/main/java/org/apache/maven/aether/internal/ant/types/PomPropertyEvaluator.java
new file mode 100644
index 0000000..1097e76
--- /dev/null
+++ b/src/main/java/org/apache/maven/aether/internal/ant/types/PomPropertyEvaluator.java
@@ -0,0 +1,62 @@
+package org.apache.maven.aether.internal.ant.types;
+
+/*
+ * 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.
+ */
+
+import org.apache.tools.ant.PropertyHelper;
+import org.apache.tools.ant.PropertyHelper.PropertyEvaluator;
+import org.apache.tools.ant.property.NullReturn;
+
+/**
+ */
+class PomPropertyEvaluator
+ implements PropertyEvaluator
+{
+
+ private final ModelValueExtractor extractor;
+
+ public static void register( ModelValueExtractor extractor, PropertyHelper propertyHelper )
+ {
+ propertyHelper.add( new PomPropertyEvaluator( extractor ) );
+ }
+
+ private PomPropertyEvaluator( ModelValueExtractor extractor )
+ {
+ if ( extractor == null )
+ {
+ throw new IllegalArgumentException( "no model value exractor specified" );
+ }
+ this.extractor = extractor;
+ }
+
+ public Object evaluate( String property, PropertyHelper propertyHelper )
+ {
+ Object value = extractor.getValue( property );
+ if ( value != null )
+ {
+ return value;
+ }
+ else if ( extractor.isApplicable( property ) )
+ {
+ return NullReturn.NULL;
+ }
+ return null;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/apache/maven/aether/internal/ant/types/PomPropertyHelper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/maven/aether/internal/ant/types/PomPropertyHelper.java b/src/main/java/org/apache/maven/aether/internal/ant/types/PomPropertyHelper.java
new file mode 100644
index 0000000..76af53b
--- /dev/null
+++ b/src/main/java/org/apache/maven/aether/internal/ant/types/PomPropertyHelper.java
@@ -0,0 +1,65 @@
+package org.apache.maven.aether.internal.ant.types;
+
+/*
+ * 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.
+ */
+
+import org.apache.tools.ant.PropertyHelper;
+
+/**
+ */
+@SuppressWarnings( "deprecation" )
+class PomPropertyHelper
+ extends PropertyHelper
+{
+
+ private final ModelValueExtractor extractor;
+
+ public static void register( ModelValueExtractor extractor, PropertyHelper propertyHelper )
+ {
+ PomPropertyHelper helper = new PomPropertyHelper( extractor );
+ helper.setNext( propertyHelper.getNext() );
+ propertyHelper.setNext( helper );
+ }
+
+ public PomPropertyHelper( ModelValueExtractor extractor )
+ {
+ if ( extractor == null )
+ {
+ throw new IllegalArgumentException( "no model value exractor specified" );
+ }
+ this.extractor = extractor;
+ setProject( extractor.getProject() );
+ }
+
+ @Override
+ public Object getPropertyHook( String ns, String name, boolean user )
+ {
+ Object value = extractor.getValue( name );
+ if ( value != null )
+ {
+ return value;
+ }
+ else if ( extractor.isApplicable( name ) )
+ {
+ return null;
+ }
+ return super.getPropertyHook( ns, name, user );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/apache/maven/aether/internal/ant/types/Proxy.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/maven/aether/internal/ant/types/Proxy.java b/src/main/java/org/apache/maven/aether/internal/ant/types/Proxy.java
new file mode 100644
index 0000000..0ff671a
--- /dev/null
+++ b/src/main/java/org/apache/maven/aether/internal/ant/types/Proxy.java
@@ -0,0 +1,164 @@
+package org.apache.maven.aether.internal.ant.types;
+
+/*
+ * 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.
+ */
+
+import org.apache.maven.aether.internal.ant.AntRepoSys;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.types.Reference;
+
+/**
+ */
+public class Proxy
+ extends DataType
+{
+
+ private String host;
+
+ private int port;
+
+ private String type;
+
+ private String nonProxyHosts;
+
+ private Authentication authentication;
+
+ @Override
+ public void setProject( Project project )
+ {
+ super.setProject( project );
+
+ AntRepoSys.getInstance( project ).addProxy( this );
+ }
+
+ protected Proxy getRef()
+ {
+ return (Proxy) getCheckedRef();
+ }
+
+ public void setRefid( Reference ref )
+ {
+ if ( host != null || port != 0 || type != null || nonProxyHosts != null )
+ {
+ throw tooManyAttributes();
+ }
+ if ( authentication != null )
+ {
+ throw noChildrenAllowed();
+ }
+ super.setRefid( ref );
+ }
+
+ public String getHost()
+ {
+ if ( isReference() )
+ {
+ return getRef().getHost();
+ }
+ return host;
+ }
+
+ public void setHost( String host )
+ {
+ checkAttributesAllowed();
+ this.host = host;
+ }
+
+ public int getPort()
+ {
+ if ( isReference() )
+ {
+ return getRef().getPort();
+ }
+ return port;
+ }
+
+ public void setPort( int port )
+ {
+ checkAttributesAllowed();
+ if ( port <= 0 || port > 0xFFFF )
+ {
+ throw new BuildException( "The port number must be within the range 1 - 65535" );
+ }
+ this.port = port;
+ }
+
+ public String getType()
+ {
+ if ( isReference() )
+ {
+ return getRef().getType();
+ }
+ return type;
+ }
+
+ public void setType( String type )
+ {
+ checkAttributesAllowed();
+ this.type = type;
+ }
+
+ public String getNonProxyHosts()
+ {
+ if ( isReference() )
+ {
+ return getRef().getNonProxyHosts();
+ }
+ return nonProxyHosts;
+ }
+
+ public void setNonProxyHosts( String nonProxyHosts )
+ {
+ checkAttributesAllowed();
+ this.nonProxyHosts = nonProxyHosts;
+ }
+
+ public Authentication getAuthentication()
+ {
+ if ( isReference() )
+ {
+ return getRef().getAuthentication();
+ }
+ return authentication;
+ }
+
+ public void addAuthentication( Authentication authentication )
+ {
+ checkChildrenAllowed();
+ if ( this.authentication != null )
+ {
+ throw new BuildException( "You must not specify multiple <authentication> elements" );
+ }
+ this.authentication = authentication;
+ }
+
+ public void setAuthRef( Reference ref )
+ {
+ if ( authentication == null )
+ {
+ authentication = new Authentication();
+ authentication.setProject( getProject() );
+ }
+ authentication.setRefid( ref );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/apache/maven/aether/internal/ant/types/RemoteRepositories.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/maven/aether/internal/ant/types/RemoteRepositories.java b/src/main/java/org/apache/maven/aether/internal/ant/types/RemoteRepositories.java
new file mode 100644
index 0000000..063a3b6
--- /dev/null
+++ b/src/main/java/org/apache/maven/aether/internal/ant/types/RemoteRepositories.java
@@ -0,0 +1,97 @@
+package org.apache.maven.aether.internal.ant.types;
+
+/*
+ * 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.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.types.Reference;
+
+/**
+ */
+public class RemoteRepositories
+ extends DataType
+ implements RemoteRepositoryContainer
+{
+
+ private List<RemoteRepositoryContainer> containers = new ArrayList<RemoteRepositoryContainer>();
+
+ protected RemoteRepositories getRef()
+ {
+ return (RemoteRepositories) getCheckedRef();
+ }
+
+ public void validate( Task task )
+ {
+ if ( isReference() )
+ {
+ getRef().validate( task );
+ }
+ else
+ {
+ for ( RemoteRepositoryContainer container : containers )
+ {
+ container.validate( task );
+ }
+ }
+ }
+
+ public void setRefid( Reference ref )
+ {
+ if ( !containers.isEmpty() )
+ {
+ throw noChildrenAllowed();
+ }
+ super.setRefid( ref );
+ }
+
+ public void addRemoterepo( RemoteRepository repository )
+ {
+ checkChildrenAllowed();
+ containers.add( repository );
+ }
+
+ public void addRemoterepos( RemoteRepositories repositories )
+ {
+ checkChildrenAllowed();
+ if ( repositories == this )
+ {
+ throw circularReference();
+ }
+ containers.add( repositories );
+ }
+
+ public List<RemoteRepository> getRepositories()
+ {
+ if ( isReference() )
+ {
+ return getRef().getRepositories();
+ }
+ List<RemoteRepository> repos = new ArrayList<RemoteRepository>();
+ for ( RemoteRepositoryContainer container : containers )
+ {
+ repos.addAll( container.getRepositories() );
+ }
+ return repos;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/apache/maven/aether/internal/ant/types/RemoteRepository.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/maven/aether/internal/ant/types/RemoteRepository.java b/src/main/java/org/apache/maven/aether/internal/ant/types/RemoteRepository.java
new file mode 100644
index 0000000..4720004
--- /dev/null
+++ b/src/main/java/org/apache/maven/aether/internal/ant/types/RemoteRepository.java
@@ -0,0 +1,351 @@
+package org.apache.maven.aether.internal.ant.types;
+
+/*
+ * 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.
+ */
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.maven.aether.internal.ant.AntRepoSys;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.types.Reference;
+import org.eclipse.aether.repository.RepositoryPolicy;
+
+/**
+ */
+public class RemoteRepository
+ extends DataType
+ implements RemoteRepositoryContainer
+{
+
+ private String id;
+
+ private String url;
+
+ private String type;
+
+ private Policy releasePolicy;
+
+ private Policy snapshotPolicy;
+
+ private boolean releases = true;
+
+ private boolean snapshots = false;
+
+ private String checksums;
+
+ private String updates;
+
+ private Authentication authentication;
+
+ @Override
+ public void setProject( Project project )
+ {
+ super.setProject( project );
+
+ // NOTE: Just trigger side-effect of default initialization before this type potentially overrides central
+ AntRepoSys.getInstance( project );
+ }
+
+ protected RemoteRepository getRef()
+ {
+ return (RemoteRepository) getCheckedRef();
+ }
+
+ public void validate( Task task )
+ {
+ if ( isReference() )
+ {
+ getRef().validate( task );
+ }
+ else
+ {
+ if ( url == null || url.length() <= 0 )
+ {
+ throw new BuildException( "You must specify the 'url' for a remote repository" );
+ }
+ if ( id == null || id.length() <= 0 )
+ {
+ throw new BuildException( "You must specify the 'id' for a remote repository" );
+ }
+ }
+ }
+
+ public void setRefid( Reference ref )
+ {
+ if ( id != null || url != null || type != null || checksums != null || updates != null )
+ {
+ throw tooManyAttributes();
+ }
+ if ( releasePolicy != null || snapshotPolicy != null || authentication != null )
+ {
+ throw noChildrenAllowed();
+ }
+ super.setRefid( ref );
+ }
+
+ public String getId()
+ {
+ if ( isReference() )
+ {
+ return getRef().getId();
+ }
+ return id;
+ }
+
+ public void setId( String id )
+ {
+ this.id = id;
+ }
+
+ public String getUrl()
+ {
+ if ( isReference() )
+ {
+ return getRef().getUrl();
+ }
+ return url;
+ }
+
+ public void setUrl( String url )
+ {
+ checkAttributesAllowed();
+ this.url = url;
+ }
+
+ public String getType()
+ {
+ if ( isReference() )
+ {
+ return getRef().getType();
+ }
+ return ( type != null ) ? type : "default";
+ }
+
+ public void setType( String type )
+ {
+ checkAttributesAllowed();
+ this.type = type;
+ }
+
+ public Policy getReleasePolicy()
+ {
+ if ( isReference() )
+ {
+ return getRef().getReleasePolicy();
+ }
+ return releasePolicy;
+ }
+
+ public void addReleases( Policy policy )
+ {
+ checkChildrenAllowed();
+ if ( this.releasePolicy != null )
+ {
+ throw new BuildException( "You must not specify multiple <releases> elements" );
+ }
+ this.releasePolicy = policy;
+ }
+
+ public Policy getSnapshotPolicy()
+ {
+ if ( isReference() )
+ {
+ return getRef().getSnapshotPolicy();
+ }
+ return snapshotPolicy;
+ }
+
+ public void addSnapshots( Policy policy )
+ {
+ checkChildrenAllowed();
+ if ( this.snapshotPolicy != null )
+ {
+ throw new BuildException( "You must not specify multiple <snapshots> elements" );
+ }
+ this.snapshotPolicy = policy;
+ }
+
+ public boolean isReleases()
+ {
+ if ( isReference() )
+ {
+ return getRef().isReleases();
+ }
+ return releases;
+ }
+
+ public void setReleases( boolean releases )
+ {
+ checkAttributesAllowed();
+ this.releases = releases;
+ }
+
+ public boolean isSnapshots()
+ {
+ if ( isReference() )
+ {
+ return getRef().isSnapshots();
+ }
+ return snapshots;
+ }
+
+ public void setSnapshots( boolean snapshots )
+ {
+ checkAttributesAllowed();
+ this.snapshots = snapshots;
+ }
+
+ public String getUpdates()
+ {
+ if ( isReference() )
+ {
+ return getRef().getUpdates();
+ }
+ return ( updates != null ) ? updates : RepositoryPolicy.UPDATE_POLICY_DAILY;
+ }
+
+ public void setUpdates( String updates )
+ {
+ checkAttributesAllowed();
+ checkUpdates( updates );
+ this.updates = updates;
+ }
+
+ protected static void checkUpdates( String updates )
+ {
+ if ( !RepositoryPolicy.UPDATE_POLICY_ALWAYS.equals( updates )
+ && !RepositoryPolicy.UPDATE_POLICY_DAILY.equals( updates )
+ && !RepositoryPolicy.UPDATE_POLICY_NEVER.equals( updates )
+ && !updates.startsWith( RepositoryPolicy.UPDATE_POLICY_INTERVAL ) )
+ {
+ throw new BuildException( "'" + updates + "' is not a permitted update policy" );
+ }
+ }
+
+ public String getChecksums()
+ {
+ if ( isReference() )
+ {
+ return getRef().getChecksums();
+ }
+ return ( checksums != null ) ? checksums : RepositoryPolicy.CHECKSUM_POLICY_WARN;
+ }
+
+ public void setChecksums( String checksums )
+ {
+ checkAttributesAllowed();
+ checkChecksums( checksums );
+ this.checksums = checksums;
+ }
+
+ protected static void checkChecksums( String checksums )
+ {
+ if ( !RepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( checksums )
+ && !RepositoryPolicy.CHECKSUM_POLICY_WARN.equals( checksums )
+ && !RepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( checksums ) )
+ {
+ throw new BuildException( "'" + checksums + "' is not a permitted checksum policy" );
+ }
+ }
+
+ public Authentication getAuthentication()
+ {
+ if ( isReference() )
+ {
+ return getRef().getAuthentication();
+ }
+ return authentication;
+ }
+
+ public void addAuthentication( Authentication authentication )
+ {
+ checkChildrenAllowed();
+ if ( this.authentication != null )
+ {
+ throw new BuildException( "You must not specify multiple <authentication> elements" );
+ }
+ this.authentication = authentication;
+ }
+
+ public void setAuthRef( Reference ref )
+ {
+ checkAttributesAllowed();
+ if ( authentication == null )
+ {
+ authentication = new Authentication();
+ authentication.setProject( getProject() );
+ }
+ authentication.setRefid( ref );
+ }
+
+ public List<RemoteRepository> getRepositories()
+ {
+ return Collections.singletonList( this );
+ }
+
+ /**
+ */
+ public static class Policy
+ {
+
+ private boolean enabled = true;
+
+ private String checksumPolicy;
+
+ private String updatePolicy;
+
+ public boolean isEnabled()
+ {
+ return enabled;
+ }
+
+ public void setEnabled( boolean enabled )
+ {
+ this.enabled = enabled;
+ }
+
+ public String getChecksums()
+ {
+ return checksumPolicy;
+ }
+
+ public void setChecksums( String checksumPolicy )
+ {
+ checkChecksums( checksumPolicy );
+ this.checksumPolicy = checksumPolicy;
+ }
+
+ public String getUpdates()
+ {
+ return updatePolicy;
+ }
+
+ public void setUpdates( String updatePolicy )
+ {
+ checkUpdates( updatePolicy );
+ this.updatePolicy = updatePolicy;
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/apache/maven/aether/internal/ant/types/RemoteRepositoryContainer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/maven/aether/internal/ant/types/RemoteRepositoryContainer.java b/src/main/java/org/apache/maven/aether/internal/ant/types/RemoteRepositoryContainer.java
new file mode 100644
index 0000000..488ffb6
--- /dev/null
+++ b/src/main/java/org/apache/maven/aether/internal/ant/types/RemoteRepositoryContainer.java
@@ -0,0 +1,35 @@
+package org.apache.maven.aether.internal.ant.types;
+
+/*
+ * 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.
+ */
+
+import java.util.List;
+
+import org.apache.tools.ant.Task;
+
+/**
+ */
+public interface RemoteRepositoryContainer
+{
+
+ void validate( Task task );
+
+ List<RemoteRepository> getRepositories();
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/apache/maven/aether/internal/ant/types/Settings.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/maven/aether/internal/ant/types/Settings.java b/src/main/java/org/apache/maven/aether/internal/ant/types/Settings.java
new file mode 100644
index 0000000..85190b1
--- /dev/null
+++ b/src/main/java/org/apache/maven/aether/internal/ant/types/Settings.java
@@ -0,0 +1,86 @@
+package org.apache.maven.aether.internal.ant.types;
+
+/*
+ * 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.
+ */
+
+import java.io.File;
+
+import org.apache.maven.aether.internal.ant.AntRepoSys;
+import org.apache.tools.ant.types.DataType;
+import org.apache.tools.ant.types.Reference;
+
+/**
+ */
+public class Settings
+ extends DataType
+{
+
+ private File file;
+
+ private File globalFile;
+
+ protected Settings getRef()
+ {
+ return (Settings) getCheckedRef();
+ }
+
+ public void setRefid( Reference ref )
+ {
+ if ( file != null || globalFile != null )
+ {
+ throw tooManyAttributes();
+ }
+ super.setRefid( ref );
+ }
+
+ public File getFile()
+ {
+ if ( isReference() )
+ {
+ return getRef().getFile();
+ }
+ return file;
+ }
+
+ public void setFile( File file )
+ {
+ checkAttributesAllowed();
+ this.file = file;
+
+ AntRepoSys.getInstance( getProject() ).setUserSettings( file );
+ }
+
+ public File getGlobalFile()
+ {
+ if ( isReference() )
+ {
+ return getRef().getFile();
+ }
+ return globalFile;
+ }
+
+ public void setGlobalFile( File globalFile )
+ {
+ checkAttributesAllowed();
+ this.globalFile = globalFile;
+
+ AntRepoSys.getInstance( getProject() ).setGlobalSettings( globalFile );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/eclipse/aether/internal/ant/AetherUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/eclipse/aether/internal/ant/AetherUtils.java b/src/main/java/org/eclipse/aether/internal/ant/AetherUtils.java
deleted file mode 100644
index 337c647..0000000
--- a/src/main/java/org/eclipse/aether/internal/ant/AetherUtils.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.eclipse.aether.internal.ant;
-
-/*
- * 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.
- */
-
-import java.io.File;
-
-import org.apache.tools.ant.Project;
-import org.eclipse.aether.internal.ant.types.RemoteRepositories;
-
-class AetherUtils
-{
-
- public static File findGlobalSettings( Project project )
- {
- File file = new File( new File( project.getProperty( "ant.home" ), "etc" ), Names.SETTINGS_XML );
- if ( file.isFile() )
- {
- return file;
- }
- else
- {
- String mavenHome = getMavenHome( project );
- if ( mavenHome != null )
- {
- return new File( new File( mavenHome, "conf" ), Names.SETTINGS_XML );
- }
- }
-
- return null;
- }
-
- public static String getMavenHome( Project project )
- {
- String mavenHome = project.getProperty( "maven.home" );
- if ( mavenHome != null )
- {
- return mavenHome;
- }
- return System.getenv( "M2_HOME" );
- }
-
- public static File findUserSettings( Project project )
- {
- File userHome = new File( project.getProperty( "user.home" ) );
- File file = new File( new File( userHome, ".ant" ), Names.SETTINGS_XML );
- if ( file.isFile() )
- {
- return file;
- }
- else
- {
- return new File( new File( userHome, ".m2" ), Names.SETTINGS_XML );
- }
- }
-
- public static RemoteRepositories getDefaultRepositories( Project project )
- {
- Object obj = project.getReference( Names.ID_DEFAULT_REPOS );
- if ( obj instanceof RemoteRepositories )
- {
- return (RemoteRepositories) obj;
- }
- return null;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/eclipse/aether/internal/ant/AntLogger.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/eclipse/aether/internal/ant/AntLogger.java b/src/main/java/org/eclipse/aether/internal/ant/AntLogger.java
deleted file mode 100644
index 0071142..0000000
--- a/src/main/java/org/eclipse/aether/internal/ant/AntLogger.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.eclipse.aether.internal.ant;
-
-/*
- * 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.
- */
-
-import org.apache.tools.ant.Project;
-import org.eclipse.aether.spi.log.Logger;
-
-/**
- */
-class AntLogger
- implements Logger
-{
-
- private Project project;
-
- public AntLogger( Project project )
- {
- this.project = project;
- }
-
- public void debug( String msg )
- {
- project.log( msg, Project.MSG_DEBUG );
- }
-
- public void debug( String msg, Throwable error )
- {
- project.log( msg, error, Project.MSG_DEBUG );
- }
-
- public boolean isDebugEnabled()
- {
- return true;
- }
-
- public boolean isWarnEnabled()
- {
- return true;
- }
-
- public void warn( String msg )
- {
- project.log( msg, Project.MSG_WARN );
- }
-
- public void warn( String msg, Throwable error )
- {
- project.log( msg, error, Project.MSG_WARN );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/eclipse/aether/internal/ant/AntModelResolver.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/eclipse/aether/internal/ant/AntModelResolver.java b/src/main/java/org/eclipse/aether/internal/ant/AntModelResolver.java
deleted file mode 100644
index 0ea3a40..0000000
--- a/src/main/java/org/eclipse/aether/internal/ant/AntModelResolver.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package org.eclipse.aether.internal.ant;
-
-/*
- * 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.
- */
-
-import java.io.File;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.maven.model.Repository;
-import org.apache.maven.model.building.FileModelSource;
-import org.apache.maven.model.building.ModelSource;
-import org.apache.maven.model.resolution.InvalidRepositoryException;
-import org.apache.maven.model.resolution.ModelResolver;
-import org.apache.maven.model.resolution.UnresolvableModelException;
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.impl.RemoteRepositoryManager;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.resolution.ArtifactRequest;
-import org.eclipse.aether.resolution.ArtifactResolutionException;
-
-/**
- * A model resolver to assist building of dependency POMs. This resolver gives priority to those repositories that have
- * been initially specified and repositories discovered in dependency POMs are recessively merged into the search chain.
- *
- */
-class AntModelResolver
- implements ModelResolver
-{
-
- private final RepositorySystemSession session;
-
- private final String context;
-
- private List<org.eclipse.aether.repository.RemoteRepository> repositories;
-
- private final RepositorySystem repoSys;
-
- private final RemoteRepositoryManager remoteRepositoryManager;
-
- private final Set<String> repositoryIds;
-
- public AntModelResolver( RepositorySystemSession session, String context, RepositorySystem repoSys,
- RemoteRepositoryManager remoteRepositoryManager, List<RemoteRepository> repositories )
- {
- this.session = session;
- this.context = context;
- this.repoSys = repoSys;
- this.remoteRepositoryManager = remoteRepositoryManager;
- this.repositories = repositories;
- this.repositoryIds = new HashSet<String>();
- }
-
- private AntModelResolver( AntModelResolver original )
- {
- this.session = original.session;
- this.context = original.context;
- this.repoSys = original.repoSys;
- this.remoteRepositoryManager = original.remoteRepositoryManager;
- this.repositories = original.repositories;
- this.repositoryIds = new HashSet<String>( original.repositoryIds );
- }
-
- public void addRepository( Repository repository )
- throws InvalidRepositoryException
- {
- if ( !repositoryIds.add( repository.getId() ) )
- {
- return;
- }
-
- List<RemoteRepository> newRepositories = Collections.singletonList( convert( repository ) );
-
- this.repositories =
- remoteRepositoryManager.aggregateRepositories( session, repositories, newRepositories, true );
- }
-
- static RemoteRepository convert( Repository repository )
- {
- RemoteRepository.Builder builder =
- new RemoteRepository.Builder( repository.getId(), repository.getLayout(), repository.getUrl() );
- builder.setSnapshotPolicy( convert( repository.getSnapshots() ) );
- builder.setReleasePolicy( convert( repository.getReleases() ) );
- return builder.build();
- }
-
- private static RepositoryPolicy convert( org.apache.maven.model.RepositoryPolicy policy )
- {
- boolean enabled = true;
- String checksums = RepositoryPolicy.CHECKSUM_POLICY_WARN;
- String updates = RepositoryPolicy.UPDATE_POLICY_DAILY;
-
- if ( policy != null )
- {
- enabled = policy.isEnabled();
- if ( policy.getUpdatePolicy() != null )
- {
- updates = policy.getUpdatePolicy();
- }
- if ( policy.getChecksumPolicy() != null )
- {
- checksums = policy.getChecksumPolicy();
- }
- }
-
- return new RepositoryPolicy( enabled, updates, checksums );
- }
-
- public ModelResolver newCopy()
- {
- return new AntModelResolver( this );
- }
-
- public ModelSource resolveModel( String groupId, String artifactId, String version )
- throws UnresolvableModelException
- {
- Artifact pomArtifact = new DefaultArtifact( groupId, artifactId, "", "pom", version );
-
- try
- {
- ArtifactRequest request = new ArtifactRequest( pomArtifact, repositories, context );
- pomArtifact = repoSys.resolveArtifact( session, request ).getArtifact();
- }
- catch ( ArtifactResolutionException e )
- {
- throw new UnresolvableModelException( "Failed to resolve POM for " + groupId + ":" + artifactId + ":"
- + version + " due to " + e.getMessage(), groupId, artifactId, version, e );
- }
-
- File pomFile = pomArtifact.getFile();
-
- return new FileModelSource( pomFile );
- }
-
-}