You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2009/04/09 00:18:52 UTC
svn commit: r763431 - in /maven/mercury/trunk:
mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ mercury-it/
mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/
mercury-md/mercury-md-sat/src/main/java/org/apache/m...
Author: ogusakov
Date: Wed Apr 8 22:18:51 2009
New Revision: 763431
URL: http://svn.apache.org/viewvc?rev=763431&view=rev
Log:
[MERCURY-114] - added support for managed versions
Added:
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DependencyConflictException.java (with props)
Modified:
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Artifact.java
maven/mercury/trunk/mercury-it/pom.xml
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/Messages.properties
maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/DefaultPlexusMercury.java
maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/PlexusMercury.java
Modified: maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Artifact.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Artifact.java?rev=763431&r1=763430&r2=763431&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Artifact.java (original)
+++ maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/Artifact.java Wed Apr 8 22:18:51 2009
@@ -19,7 +19,15 @@
import java.io.InputStream;
import java.util.regex.Pattern;
-
+/**
+ * TODO: Oleg: don't know if this should be interface or class, so there is a little disparate:
+ * ArtifactMetadata is a class, Artifact is an interface. Will clear out
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
public interface Artifact
extends Comparable<Artifact>
{
Modified: maven/mercury/trunk/mercury-it/pom.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/pom.xml?rev=763431&r1=763430&r2=763431&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-it/pom.xml (original)
+++ maven/mercury/trunk/mercury-it/pom.xml Wed Apr 8 22:18:51 2009
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.maven.mercury</groupId>
<artifactId>mercury</artifactId>
- <version>1.0-alpha-6-SNAPSHOT</version>
+ <version>1.0-alpha-7-SNAPSHOT</version>
</parent>
<artifactId>mercury-it</artifactId>
Modified: maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java?rev=763431&r1=763430&r2=763431&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java Wed Apr 8 22:18:51 2009
@@ -41,6 +41,7 @@
{
public static final String TREE_BUILD_EVENT = "tree.build";
public static final String TREE_NODE_BUILD_EVENT = "tree.node.build";
+ public static final String TREE_NODE_VERSION_REPLACE_EVENT = "tree.node.build.version.replace";
public static final String SYSTEM_PROPERTY_ALLOW_CIRCULAR_DEPENDENCIES = "mercury.circular.allow";
Modified: maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java?rev=763431&r1=763430&r2=763431&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java Wed Apr 8 22:18:51 2009
@@ -91,7 +91,7 @@
private boolean _allowCircularDependencies = Boolean.parseBoolean( System.getProperty( SYSTEM_PROPERTY_ALLOW_CIRCULAR_DEPENDENCIES, "false" ) );
/** mandated versions in the format G:A -> V */
- private Map<String, String> _versionMap;
+ private Map<String, ArtifactMetadata> _versionMap;
class TruckLoad
{
@@ -401,6 +401,29 @@
if ( allDependencies == null || allDependencies.size() < 1 )
return node;
+
+ if( !Util.isEmpty( _versionMap ) )
+ for( ArtifactMetadata am : allDependencies )
+ {
+ String key = am.toManagementString();
+ ArtifactMetadata ver = _versionMap.get( key );
+ if( ver != null )
+ {
+ if( LOG.isDebugEnabled() )
+ LOG.debug( "managed replacement: "+am+" -> "+ver );
+
+ if ( _eventManager != null )
+ {
+ GenericEvent replaceEvent = new GenericEvent( EventTypeEnum.dependencyBuilder, TREE_NODE_VERSION_REPLACE_EVENT, "managed replacement: "+am+" -> "+ver );
+ replaceEvent.stop();
+ _eventManager.fireEvent( replaceEvent );
+ }
+
+ am.setVersion( ver.getVersion() );
+ am.setInclusions( ver.getInclusions() );
+ am.setExclusions( ver.getExclusions() );
+ }
+ }
List<ArtifactMetadata> dependencies = new ArrayList<ArtifactMetadata>( allDependencies.size() );
if ( globalScope != null )
@@ -687,6 +710,6 @@
if( SYSTEM_PROPERTY_ALLOW_CIRCULAR_DEPENDENCIES.equals( name ) )
_allowCircularDependencies = Boolean.parseBoolean( (String)val );
else if( CONFIGURATION_PROPERTY_VERSION_MAP.equals( name ) )
- _versionMap = (Map<String, String>) val;
+ _versionMap = (Map<String, ArtifactMetadata>) val;
}
}
Modified: maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java?rev=763431&r1=763430&r2=763431&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java Wed Apr 8 22:18:51 2009
@@ -587,6 +587,10 @@
if( i > 0 )
res.add( _context.getMd( i ) );
}
+ else // not satisfied
+ {
+ throw new SatException( LANG.getMessage( "no.solution", _root.toString() ));
+ }
}
catch (TimeoutException e)
{
Added: maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DependencyConflictException.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DependencyConflictException.java?rev=763431&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DependencyConflictException.java (added)
+++ maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DependencyConflictException.java Wed Apr 8 22:18:51 2009
@@ -0,0 +1,69 @@
+/*
+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.maven.mercury.metadata.sat;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class DependencyConflictException
+ extends SatException
+{
+
+ /**
+ *
+ */
+ public DependencyConflictException()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @param message
+ */
+ public DependencyConflictException( String message )
+ {
+ super( message );
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @param cause
+ */
+ public DependencyConflictException( Throwable cause )
+ {
+ super( cause );
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public DependencyConflictException( String message, Throwable cause )
+ {
+ super( message, cause );
+ // TODO Auto-generated constructor stub
+ }
+
+}
Propchange: maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DependencyConflictException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DependencyConflictException.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/Messages.properties
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/Messages.properties?rev=763431&r1=763430&r2=763431&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/Messages.properties (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/Messages.properties Wed Apr 8 22:18:51 2009
@@ -21,4 +21,6 @@
null.model=model is null
empty.model=model is null
-null.tree.arg=cannot create a solver for an empty [null] tree
\ No newline at end of file
+null.tree.arg=cannot create a solver for an empty [null] tree
+
+no.solution=no solution for the supplied tree, starting at {0}
\ No newline at end of file
Modified: maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/DefaultPlexusMercury.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/DefaultPlexusMercury.java?rev=763431&r1=763430&r2=763431&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/DefaultPlexusMercury.java (original)
+++ maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/DefaultPlexusMercury.java Wed Apr 8 22:18:51 2009
@@ -276,6 +276,14 @@
)
throws RepositoryException
{
+ return resolve( repos, scope, artifacts, inclusions, exclusions, null );
+ }
+
+ public List<ArtifactMetadata> resolve( List<Repository> repos, ArtifactScopeEnum scope,
+ ArtifactQueryList artifacts, ArtifactInclusionList inclusions,
+ ArtifactExclusionList exclusions, Map<String, ?> config )
+ throws RepositoryException
+ {
if ( Util.isEmpty( artifacts ) || artifacts.isEmpty() )
throw new IllegalArgumentException( LANG.getMessage( "no.artifacts" ) );
@@ -283,7 +291,11 @@
{
DependencyBuilder depBuilder =
DependencyBuilderFactory.create( DependencyBuilderFactory.JAVA_DEPENDENCY_MODEL, repos, null, null, null
- , Util.mapOf( new Object [][] { {DependencyBuilder.SYSTEM_PROPERTY_ALLOW_CIRCULAR_DEPENDENCIES, ""+_allowCircularDependencies} } )
+ , Util.mapOf( new Object [][] {
+ {DependencyBuilder.SYSTEM_PROPERTY_ALLOW_CIRCULAR_DEPENDENCIES, ""+_allowCircularDependencies}
+ , {DependencyBuilder.CONFIGURATION_PROPERTY_VERSION_MAP, config}
+ }
+ )
);
List<ArtifactMetadata> res = depBuilder.resolveConflicts( scope, artifacts, inclusions, exclusions );
@@ -298,13 +310,9 @@
}
}
- // ---------------------------------------------------------------
- public MetadataTreeNode resolveAsTree( List<Repository> repos
- , ArtifactScopeEnum scope
- , ArtifactQueryList artifacts
- , ArtifactInclusionList inclusions
- , ArtifactExclusionList exclusions
- )
+ public MetadataTreeNode resolveAsTree( List<Repository> repos, ArtifactScopeEnum scope,
+ ArtifactQueryList artifacts, ArtifactInclusionList inclusions,
+ ArtifactExclusionList exclusions, Map<String, ?> config )
throws RepositoryException
{
if ( Util.isEmpty( artifacts ) || artifacts.isEmpty() )
@@ -314,7 +322,11 @@
{
DependencyBuilder depBuilder =
DependencyBuilderFactory.create( DependencyBuilderFactory.JAVA_DEPENDENCY_MODEL, repos, null, null, null
- , Util.mapOf( new String [][] { {DependencyBuilder.SYSTEM_PROPERTY_ALLOW_CIRCULAR_DEPENDENCIES, ""+_allowCircularDependencies} } )
+ , Util.mapOf( new Object [][] {
+ {DependencyBuilder.SYSTEM_PROPERTY_ALLOW_CIRCULAR_DEPENDENCIES, ""+_allowCircularDependencies}
+ , {DependencyBuilder.CONFIGURATION_PROPERTY_VERSION_MAP, config}
+ }
+ )
);
MetadataTreeNode res = depBuilder.resolveConflictsAsTree( scope, artifacts, inclusions, exclusions );
@@ -330,6 +342,18 @@
}
// ---------------------------------------------------------------
+ public MetadataTreeNode resolveAsTree( List<Repository> repos
+ , ArtifactScopeEnum scope
+ , ArtifactQueryList artifacts
+ , ArtifactInclusionList inclusions
+ , ArtifactExclusionList exclusions
+ )
+ throws RepositoryException
+ {
+ return resolveAsTree( repos, scope, artifacts, inclusions, exclusions, null );
+ }
+
+ // ---------------------------------------------------------------
/**
* get all available versions of for the artifact query.
*
Modified: maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/PlexusMercury.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/PlexusMercury.java?rev=763431&r1=763430&r2=763431&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/PlexusMercury.java (original)
+++ maven/mercury/trunk/mercury-plexus/src/main/java/org/apache/maven/mercury/plexus/PlexusMercury.java Wed Apr 8 22:18:51 2009
@@ -23,6 +23,7 @@
import java.net.URL;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.apache.maven.mercury.artifact.Artifact;
@@ -194,11 +195,25 @@
ArtifactExclusionList exclusions )
throws RepositoryException;
+ public List<ArtifactMetadata> resolve( List<Repository> repos, ArtifactScopeEnum scope,
+ ArtifactQueryList artifacts, ArtifactInclusionList inclusions,
+ ArtifactExclusionList exclusions
+ , Map<String, ?> config
+ )
+ throws RepositoryException;
+
public MetadataTreeNode resolveAsTree( List<Repository> repos, ArtifactScopeEnum scope,
ArtifactQueryList artifacts, ArtifactInclusionList inclusions,
ArtifactExclusionList exclusions )
throws RepositoryException;
+ public MetadataTreeNode resolveAsTree( List<Repository> repos, ArtifactScopeEnum scope,
+ ArtifactQueryList artifacts, ArtifactInclusionList inclusions,
+ ArtifactExclusionList exclusions
+ , Map<String, ?> config
+ )
+ throws RepositoryException;
+
public List<ArtifactMetadata> resolve( List<Repository> repos, ArtifactScopeEnum scope, ArtifactMetadata metadata )
throws RepositoryException;