You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2008/11/21 05:52:09 UTC

svn commit: r719474 [3/3] - in /maven/components/trunk/maven-project-builder: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/maven/ src/main/java/org/apache/maven/project/ src/main/java/org/apache...

Added: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/listeners/BuildExtensionListener.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/listeners/BuildExtensionListener.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/listeners/BuildExtensionListener.java (added)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/listeners/BuildExtensionListener.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,95 @@
+package org.apache.maven.project.builder.listeners;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.maven.project.builder.ArtifactModelContainerFactory;
+import org.apache.maven.project.builder.ProjectUri;
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.ModelContainerFactory;
+import org.apache.maven.shared.model.ModelEventListener;
+import org.apache.maven.shared.model.ModelProperty;
+
+public class BuildExtensionListener
+    implements ModelEventListener
+{
+    private boolean inBuild;
+
+    public BuildExtensionListener(boolean inBuild)
+    {
+        this.inBuild = inBuild;
+    }
+
+    public void fire( List<ModelContainer> modelContainers )
+    {
+        if(!inBuild) {
+            return;
+        }
+        
+        List<BuildExtension> buildExtensions = new ArrayList<BuildExtension>();
+        for ( ModelContainer mc : modelContainers )
+        {
+            if ( hasExtension( mc ) )
+            {
+                buildExtensions.add( new BuildExtension( mc.getProperties() ) );
+            }
+        }
+
+        for( BuildExtension be : buildExtensions )
+        {
+            System.out.println( "Extension ---> " + be.groupId + " : " + be.artifactId + " : " + be.version );
+        }        
+    }
+
+    public List<String> getUris()
+    {
+        return Arrays.asList( ProjectUri.Build.Extensions.Extension.xUri );
+    }
+
+    public Collection<ModelContainerFactory> getModelContainerFactories()
+    {
+        return Arrays.asList( (ModelContainerFactory) new ArtifactModelContainerFactory() );
+    }
+
+    private static boolean hasExtension( ModelContainer container )
+    {
+        for ( ModelProperty mp : container.getProperties() )
+        {
+            if ( mp.getUri().equals( ProjectUri.Build.Extensions.Extension.xUri ) )
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private static class BuildExtension
+    {
+        private String groupId;
+
+        private String artifactId;
+
+        private String version;
+
+        BuildExtension( List<ModelProperty> modelProperties )
+        {
+            for ( ModelProperty mp : modelProperties )
+            {
+                if ( mp.getUri().equals( ProjectUri.Build.Extensions.Extension.groupId ) )
+                {
+                    groupId = mp.getValue();
+                }
+                else if ( mp.getUri().equals( ProjectUri.Build.Extensions.Extension.artifactId ) )
+                {
+                    artifactId = mp.getValue();
+                }
+                else if ( mp.getUri().equals( ProjectUri.Build.Extensions.Extension.version ) )
+                {
+                    version = mp.getValue();
+                }
+            }
+        }        
+    }
+}

Added: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ActiveProfileMatcher.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ActiveProfileMatcher.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ActiveProfileMatcher.java (added)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ActiveProfileMatcher.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,18 @@
+package org.apache.maven.project.builder.profile;
+
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.InterpolatorProperty;
+
+import java.util.List;
+
+public interface ActiveProfileMatcher {
+
+    /**
+     * If model container does not contain the activator property, must return false.
+     *
+     * @param modelContainer
+     * @param properties
+     * @return
+     */
+    boolean isMatch(ModelContainer modelContainer, List<InterpolatorProperty> properties);
+}

Added: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ByDefaultMatcher.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ByDefaultMatcher.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ByDefaultMatcher.java (added)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ByDefaultMatcher.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,24 @@
+package org.apache.maven.project.builder.profile;
+
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.shared.model.ModelProperty;
+import org.apache.maven.project.builder.ProjectUri;
+
+import java.util.List;
+
+public class ByDefaultMatcher implements ActiveProfileMatcher {
+
+    public boolean isMatch(ModelContainer modelContainer, List<InterpolatorProperty> properties) {
+        if(modelContainer == null ) {
+            throw new IllegalArgumentException("modelContainer: null");
+        }
+
+        for(ModelProperty mp : modelContainer.getProperties()) {
+            if(mp.getUri().equals(ProjectUri.Profiles.Profile.Activation.activeByDefault)) {
+               return true;
+            }
+        }
+        return false;
+    }
+}

Added: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/FileMatcher.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/FileMatcher.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/FileMatcher.java (added)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/FileMatcher.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,47 @@
+package org.apache.maven.project.builder.profile;
+
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.shared.model.ModelProperty;
+import org.apache.maven.project.builder.ProjectUri;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.io.File;
+
+public class FileMatcher implements ActiveProfileMatcher {
+
+    public boolean isMatch(ModelContainer modelContainer, List<InterpolatorProperty> properties) {
+        if(modelContainer == null ) {
+            throw new IllegalArgumentException("modelContainer: null");
+        }
+
+        List<String> exists = new ArrayList<String>(), missings = new ArrayList<String>();
+
+        for(ModelProperty mp : modelContainer.getProperties()) {
+            if(mp.getUri().equals(ProjectUri.Profiles.Profile.Activation.File.exists)) {
+                exists.add(mp.getValue());
+            } else if(mp.getUri().equals(ProjectUri.Profiles.Profile.Activation.File.missing)) {
+                missings.add(mp.getValue());
+            }
+        }
+
+        if(exists.isEmpty() && missings.isEmpty()) {
+            return false;
+        }
+
+        for(String exist : exists) {
+            if(!new File(exist).exists()) {
+                return false;
+            }
+        }
+
+         for(String missing : missings) {
+            if(new File(missing).exists()) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+}

Added: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/JdkMatcher.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/JdkMatcher.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/JdkMatcher.java (added)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/JdkMatcher.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,35 @@
+package org.apache.maven.project.builder.profile;
+
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.shared.model.ModelProperty;
+import org.apache.maven.project.builder.ProjectUri;
+
+import java.util.List;
+
+public class JdkMatcher implements ActiveProfileMatcher {
+    //TODO: Ranges
+    public boolean isMatch(ModelContainer modelContainer, List<InterpolatorProperty> properties) {
+        if(modelContainer == null ) {
+            throw new IllegalArgumentException("modelContainer: null");
+        }
+
+        if(properties == null) {
+            return false;
+        }
+
+        for(InterpolatorProperty property : properties) {
+            if(property.getKey().equals("${java.specification.version}")) {
+                String version = property.getValue();
+                for(ModelProperty modelProperty : modelContainer.getProperties()) {
+                    if(modelProperty.getUri().equals(ProjectUri.Profiles.Profile.Activation.jdk)) {
+                        return version.equals(modelProperty.getValue());
+                    }
+                }
+                return false;   
+            }
+        }
+        return false;
+    }
+}
+

Added: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/OperatingSystemMatcher.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/OperatingSystemMatcher.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/OperatingSystemMatcher.java (added)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/OperatingSystemMatcher.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,53 @@
+package org.apache.maven.project.builder.profile;
+
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.shared.model.ModelProperty;
+import org.apache.maven.project.builder.ProjectUri;
+
+import java.util.List;
+
+public class OperatingSystemMatcher implements ActiveProfileMatcher {
+
+    public boolean isMatch(ModelContainer modelContainer, List<InterpolatorProperty> properties) {
+        if(modelContainer == null ) {
+            throw new IllegalArgumentException("modelContainer: null");
+        }
+
+        if(!doTest(modelContainer)) {
+            return false;
+        }
+
+        for(InterpolatorProperty property : properties) {
+            if(!matches(modelContainer, property)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    private static boolean doTest(ModelContainer modelContainer) {
+        for(ModelProperty mp : modelContainer.getProperties()) {
+            if(mp.getUri().startsWith(ProjectUri.Profiles.Profile.Activation.Os.xUri)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private static boolean matches(ModelContainer modelContainer, InterpolatorProperty interpolatorProperty) {
+        String key = interpolatorProperty.getKey();
+
+        for(ModelProperty property : modelContainer.getProperties()) {
+            if((key.equals("${os.arch}") && property.getUri().equals(ProjectUri.Profiles.Profile.Activation.Os.arch))
+                    || (key.equals("${os.version}") && property.getUri().equals(ProjectUri.Profiles.Profile.Activation.Os.version))
+                    || (key.equals("${os.family}") && property.getUri().equals(ProjectUri.Profiles.Profile.Activation.Os.family))
+                    || (key.equals("${os.name}") && property.getUri().equals(ProjectUri.Profiles.Profile.Activation.Os.name)) )
+            {
+               return interpolatorProperty.getValue().equals(property.getResolvedValue());
+            }
+        }
+        return true;
+    }
+}

Added: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java (added)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,41 @@
+package org.apache.maven.project.builder.profile;
+
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.ModelDataSource;
+import org.apache.maven.shared.model.DataSourceException;
+import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.project.builder.ProjectUri;
+
+import java.util.*;
+
+
+public class ProfileContext {
+
+    private ModelDataSource modelDataSource;
+
+    private List<InterpolatorProperty> properties;
+
+    List<ActiveProfileMatcher> matchers  = Collections.unmodifiableList( Arrays.asList(new ByDefaultMatcher(),
+            new FileMatcher(), new JdkMatcher(), new OperatingSystemMatcher(), new PropertyMatcher()
+         ) );
+
+    public ProfileContext(ModelDataSource modelDataSource, List<InterpolatorProperty> properties) {
+        this.modelDataSource = modelDataSource;
+        this.properties = new ArrayList<InterpolatorProperty>(properties);
+    }
+
+    public Collection<ModelContainer> getActiveProfiles() throws DataSourceException {
+        List<ModelContainer> matchedContainers = new ArrayList<ModelContainer>();
+
+        List<ModelContainer> modelContainers  = modelDataSource.queryFor(ProjectUri.Profiles.Profile.xUri);
+        for(ModelContainer mc : modelContainers) {
+            for(ActiveProfileMatcher matcher : matchers) {
+                if(matcher.isMatch(mc, properties)) {
+                    matchedContainers.add(mc);
+                }
+            }
+        }
+
+        return matchedContainers;       
+    }
+}

Added: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileUri.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileUri.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileUri.java (added)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileUri.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,178 @@
+package org.apache.maven.project.builder.profile;
+
+
+public class ProfileUri {
+
+    public static class Profiles
+    {
+        public static String xUri = "http://apache.org/maven/project/profiles#collection";
+
+        public static class Profile
+        {
+            public static String xUri = "http://apache.org/maven/project/profiles#collection/profile";
+
+            public static String id = "http://apache.org/maven/project/profiles#collection/profile/id";
+
+            public static class Activation
+            {
+                public static String xUri = "http://apache.org/maven/profiles#collection/profile/activation";
+
+                public static String activeByDefault =
+                    "http://apache.org/maven/profiles#collection/profile/activation/activeByDefault";
+
+                public static String jdk = "http://apache.org/maven/profiles#collection/profile/activation/jdk";
+
+                public static class Os
+                {
+                    public static String xUri =
+                        "http://apache.org/maven/profiles#collection/profile/activation/os";
+
+                    public static String name =
+                        "http://apache.org/maven/profiles#collection/profile/activation/os/name";
+
+                    public static String family =
+                        "http://apache.org/maven/profiles#collection/profile/activation/os/family";
+
+                    public static String arch =
+                        "http://apache.org/maven/profiles#collection/profile/activation/os/arch";
+
+                    public static String version =
+                        "http://apache.org/maven/profiles#collection/profile/activation/os/version";
+                }
+
+                public static class Property
+                {
+                    public static String xUri =
+                        "http://apache.org/maven/profiles#collection/profile/activation/property";
+
+                    public static String name =
+                        "http://apache.org/maven/profiles#collection/profile/activation/property/name";
+
+                    public static String value =
+                        "http://apache.org/maven/profiles#collection/profile/activation/property/value";
+                }
+
+                public static class File
+                {
+                    public static String xUri =
+                        "http://apache.org/maven/profiles#collection/profile/activation/file";
+
+                    public static String missing =
+                        "http://apache.org/maven/profiles#collection/profile/activation/file/missing";
+
+                    public static String exists =
+                        "http://apache.org/maven/profiles#collection/profile/activation/file/exists";
+                }
+            }
+
+            public static class Repositories
+            {
+                public static String xUri = "http://apache.org/maven/profiles#collection/profile/repositories";
+
+                public static class Repository
+                {
+                    public static String xUri =
+                        "http://apache.org/maven/profiles#collection/profile/repositories/repository";
+
+                    public static class Releases
+                    {
+                        public static String xUri =
+                            "http://apache.org/maven/profiles#collection/profile/repositories/repository/releases";
+
+                        public static String enabled =
+                            "http://apache.org/maven/profiles#collection/profile/repositories/repository/releases/enabled";
+
+                        public static String updatePolicy =
+                            "http://apache.org/maven/profiles#collection/profile/repositories/repository/releases/updatePolicy";
+
+                        public static String checksumPolicy =
+                            "http://apache.org/maven/profiles#collection/profile/repositories/repository/releases/checksumPolicy";
+                    }
+
+                    public static class Snapshots
+                    {
+                        public static String xUri =
+                            "http://apache.org/maven/profiles#collection/profile/repositories/repository/snapshots";
+
+                        public static String enabled =
+                            "http://apache.org/maven/profiles#collection/profile/repositories/repository/snapshots/enabled";
+
+                        public static String updatePolicy =
+                            "http://apache.org/maven/profiles#collection/profile/repositories/repository/snapshots/updatePolicy";
+
+                        public static String checksumPolicy =
+                            "http://apache.org/maven/profiles#collection/profile/repositories/repository/snapshots/checksumPolicy";
+                    }
+
+                    public static String id =
+                        "http://apache.org/maven/profiles#collection/profile/repositories/repository/id";
+
+                    public static String name =
+                        "http://apache.org/maven/profiles#collection/profile/repositories/repository/name";
+
+                    public static String url =
+                        "http://apache.org/maven/profiles#collection/profile/repositories/repository/url";
+
+                    public static String layout =
+                        "http://apache.org/maven/profiles#collection/profile/repositories/repository/layout";
+                }
+            }
+
+            public static class PluginRepositories
+            {
+                public static String xUri =
+                    "http://apache.org/maven/profiles#collection/profile/pluginRepositories";
+
+                public static class PluginRepository
+                {
+                    public static String xUri =
+                        "http://apache.org/maven/profiles#collection/profile/pluginRepositories/pluginRepository";
+
+                    public static class Releases
+                    {
+                        public static String xUri =
+                            "http://apache.org/maven/profiles#collection/profile/pluginRepositories/pluginRepository/releases";
+
+                        public static String enabled =
+                            "http://apache.org/maven/profiles#collection/profile/pluginRepositories/pluginRepository/releases/enabled";
+
+                        public static String updatePolicy =
+                            "http://apache.org/maven/profiles#collection/profile/pluginRepositories/pluginRepository/releases/updatePolicy";
+
+                        public static String checksumPolicy =
+                            "http://apache.org/maven/profiles#collection/profile/pluginRepositories/pluginRepository/releases/checksumPolicy";
+                    }
+
+                    public static class Snapshots
+                    {
+                        public static String xUri =
+                            "http://apache.org/maven/profiles#collection/profile/pluginRepositories/pluginRepository/snapshots";
+
+                        public static String enabled =
+                            "http://apache.org/maven/profiles#collection/profile/pluginRepositories/pluginRepository/snapshots/enabled";
+
+                        public static String updatePolicy =
+                            "http://apache.org/maven/profiles#collection/profile/pluginRepositories/pluginRepository/snapshots/updatePolicy";
+
+                        public static String checksumPolicy =
+                            "http://apache.org/maven/profiles#collection/profile/pluginRepositories/pluginRepository/snapshots/checksumPolicy";
+                    }
+
+                    public static String id =
+                        "http://apache.org/maven/profiles#collection/profile/pluginRepositories/pluginRepository/id";
+
+                    public static String name =
+                        "http://apache.org/maven/profiles#collection/profile/pluginRepositories/pluginRepository/name";
+
+                    public static String url =
+                        "http://apache.org/maven/profiles#collection/profile/pluginRepositories/pluginRepository/url";
+
+                    public static String layout =
+                        "http://apache.org/maven/profiles#collection/profile/pluginRepositories/pluginRepository/layout";
+                }
+            }
+
+            public static String properties = "http://apache.org/maven/profiles#collection/profile/properties";
+        }
+    }
+}

Added: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/PropertyMatcher.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/PropertyMatcher.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/PropertyMatcher.java (added)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/PropertyMatcher.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,40 @@
+package org.apache.maven.project.builder.profile;
+
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.shared.model.ModelProperty;
+import org.apache.maven.project.builder.ProjectUri;
+
+import java.util.List;
+
+public class PropertyMatcher implements ActiveProfileMatcher {
+
+    public boolean isMatch(ModelContainer modelContainer, List<InterpolatorProperty> properties) {
+
+        if (modelContainer == null) {
+            throw new IllegalArgumentException("modelContainer: null");
+        }
+
+        String name = null, value = null;
+
+        for(ModelProperty mp : modelContainer.getProperties()) {
+            if(mp.getUri().equals(ProjectUri.Profiles.Profile.Activation.Property.name)) {
+                name = mp.getValue();
+            } else if(mp.getUri().equals(ProjectUri.Profiles.Profile.Activation.Property.value)) {
+                value = mp.getValue();
+            }
+        }
+
+        if(name == null || value == null) {
+            return false;
+        }
+
+        for(InterpolatorProperty ip : properties) {
+            if(ip.getKey().equals("${" + name + "}")) {
+                return ip.getValue().equals(value);
+            }
+        }
+
+        return false;
+    }
+}

Added: maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/DefaultModelContainer.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/DefaultModelContainer.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/DefaultModelContainer.java (added)
+++ maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/DefaultModelContainer.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,31 @@
+package org.apache.maven.project.builder;
+
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.ModelContainerAction;
+import org.apache.maven.shared.model.ModelProperty;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class DefaultModelContainer implements ModelContainer
+{
+
+    List<ModelProperty> modelProperties;
+    
+    public DefaultModelContainer(List<ModelProperty> properties) {
+        this.modelProperties = properties;
+    }
+
+    public List<ModelProperty> getProperties() {
+        return new ArrayList<ModelProperty>(modelProperties);
+    }
+
+    public ModelContainerAction containerAction(ModelContainer modelContainer) {
+        return null;
+    }
+
+    public ModelContainer createNewInstance(List<ModelProperty> modelProperties) {
+        return null;
+    }
+}

Added: maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/FileMatcherTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/FileMatcherTest.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/FileMatcherTest.java (added)
+++ maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/FileMatcherTest.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,80 @@
+package org.apache.maven.project.builder;
+
+import org.apache.maven.project.builder.profile.FileMatcher;
+import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.ModelProperty;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+public class FileMatcherTest {
+
+    private static String basedir = System.getProperty("basedir");
+
+    @org.junit.Test(expected=IllegalArgumentException.class)
+    public void modelContainerIsNull()  {
+        FileMatcher matcher = new FileMatcher();
+        matcher.isMatch(null, new ArrayList<InterpolatorProperty>());
+    }
+
+    @org.junit.Test
+    public void fileExistActivationAndExists()  {
+        List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.File.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.File.exists ,
+                new File(basedir, "src/test/resources/test.txt").getAbsolutePath()));
+        ModelContainer modelContainer = new DefaultModelContainer(modelProperties);
+
+        FileMatcher matcher = new FileMatcher();
+        assertTrue(matcher.isMatch(modelContainer, new ArrayList<InterpolatorProperty>()));
+    }
+
+    @org.junit.Test
+    public void fileExistActivationButDoesNotExist()  {
+        List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.File.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.File.exists ,
+                new File(basedir, "src/test/resources/bogus.txt").getAbsolutePath()));
+        ModelContainer modelContainer = new DefaultModelContainer(modelProperties);
+
+        FileMatcher matcher = new FileMatcher();
+        assertFalse(matcher.isMatch(modelContainer, new ArrayList<InterpolatorProperty>()));
+    }
+
+    @org.junit.Test
+    public void fileMissingActivationButExists()  {
+        List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.File.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.File.missing ,
+                new File(basedir, "src/test/resources/test.txt").getAbsolutePath()));
+        ModelContainer modelContainer = new DefaultModelContainer(modelProperties);
+
+        FileMatcher matcher = new FileMatcher();
+        assertFalse(matcher.isMatch(modelContainer, new ArrayList<InterpolatorProperty>()));
+    }
+
+    @org.junit.Test
+    public void fileMissingActivationAndDoesNotExist()  {
+        List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.File.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.File.missing ,
+                new File(basedir, "src/test/resources/bogus.txt").getAbsolutePath()));
+        ModelContainer modelContainer = new DefaultModelContainer(modelProperties);
+
+        FileMatcher matcher = new FileMatcher();
+        assertTrue(matcher.isMatch(modelContainer, new ArrayList<InterpolatorProperty>()));
+    }
+
+}

Added: maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/JdkMatcherTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/JdkMatcherTest.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/JdkMatcherTest.java (added)
+++ maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/JdkMatcherTest.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,65 @@
+package org.apache.maven.project.builder;
+
+import org.apache.maven.project.builder.profile.JdkMatcher;
+import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.ModelProperty;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class JdkMatcherTest {
+
+    @org.junit.Test(expected=IllegalArgumentException.class)
+    public void modelContainerIsNull()  {
+        JdkMatcher matcher = new JdkMatcher();
+        matcher.isMatch(null, new ArrayList<InterpolatorProperty>());
+    }
+
+    @org.junit.Test
+    public void jdkVersionMatches()  {
+        List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.jdk , "1.5"));
+
+        ModelContainer modelContainer = new DefaultModelContainer(modelProperties);
+
+        List<InterpolatorProperty> props = new ArrayList<InterpolatorProperty>();
+        props.add(new InterpolatorProperty("${java.specification.version}" , "1.5"));
+
+        JdkMatcher matcher = new JdkMatcher();
+        assertTrue(matcher.isMatch(modelContainer, props));
+    }
+
+    @org.junit.Test
+    public void jdkVersionNotMatches()  {
+        List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.jdk , "1.5"));
+
+        ModelContainer modelContainer = new DefaultModelContainer(modelProperties);
+
+        List<InterpolatorProperty> props = new ArrayList<InterpolatorProperty>();
+        props.add(new InterpolatorProperty("${java.specification.version}" , "1.4"));
+
+        JdkMatcher matcher = new JdkMatcher();
+        assertFalse(matcher.isMatch(modelContainer, props));
+    }
+
+    @org.junit.Test
+    public void jdkVersionNotFound()  {
+        List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.jdk , "1.5"));
+
+        ModelContainer modelContainer = new DefaultModelContainer(modelProperties);
+
+        JdkMatcher matcher = new JdkMatcher();
+        assertFalse(matcher.isMatch(modelContainer, new ArrayList<InterpolatorProperty>()));
+    }
+}

Added: maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/ProfileContextTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/ProfileContextTest.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/ProfileContextTest.java (added)
+++ maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/ProfileContextTest.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,42 @@
+package org.apache.maven.project.builder;
+
+import org.apache.maven.project.builder.profile.ProfileContext;
+import org.apache.maven.shared.model.DataSourceException;
+import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.ModelProperty;
+import org.apache.maven.shared.model.impl.DefaultModelDataSource;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+public class ProfileContextTest {
+
+    @org.junit.Test
+    public void getActiveProfiles() throws DataSourceException {
+        List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
+        modelProperties.add(new ModelProperty(ProjectUri.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.Property.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.Property.name , "foo"));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.Property.value , "bar"));
+
+        DefaultModelDataSource dataSource = new DefaultModelDataSource();
+        dataSource.init(modelProperties, Arrays.asList(new ArtifactModelContainerFactory(), new IdModelContainerFactory()));
+
+        List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
+        interpolatorProperties.add(new InterpolatorProperty( "${foo}", "bar"));
+
+        ProfileContext ctx = new ProfileContext(dataSource, interpolatorProperties);
+
+        Collection<ModelContainer> profiles = ctx.getActiveProfiles();
+
+        assertTrue(profiles.size() == 1);
+
+    }
+}

Added: maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/PropertyMatcherTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/PropertyMatcherTest.java?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/PropertyMatcherTest.java (added)
+++ maven/components/trunk/maven-project-builder/src/test/java/org/apache/maven/project/builder/PropertyMatcherTest.java Thu Nov 20 20:52:08 2008
@@ -0,0 +1,52 @@
+package org.apache.maven.project.builder;
+
+import org.apache.maven.project.builder.profile.PropertyMatcher;
+import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.shared.model.ModelContainer;
+import org.apache.maven.shared.model.ModelProperty;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class PropertyMatcherTest {
+
+    @org.junit.Test
+    public void propertyMatches()  {
+        List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.Property.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.Property.name , "foo"));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.Property.value , "bar"));
+
+        ModelContainer modelContainer = new DefaultModelContainer(modelProperties);
+
+        List<InterpolatorProperty> props = new ArrayList<InterpolatorProperty>();
+        props.add(new InterpolatorProperty("${foo}" , "bar"));
+
+        PropertyMatcher matcher = new PropertyMatcher();
+        assertTrue(matcher.isMatch(modelContainer, props));
+    }
+
+    @org.junit.Test
+    public void propertyDoesNotMatch()  {
+        List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.xUri, null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.Property.xUri , null));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.Property.name , "foo"));
+        modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.Property.value , "bars"));
+
+        ModelContainer modelContainer = new DefaultModelContainer(modelProperties);
+
+        List<InterpolatorProperty> props = new ArrayList<InterpolatorProperty>();
+        props.add(new InterpolatorProperty("${foo}" , "bar"));
+
+        PropertyMatcher matcher = new PropertyMatcher();
+        assertFalse(matcher.isMatch(modelContainer, props));
+    }
+
+}

Added: maven/components/trunk/maven-project-builder/src/test/resources/test.txt
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/test/resources/test.txt?rev=719474&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/test/resources/test.txt (added)
+++ maven/components/trunk/maven-project-builder/src/test/resources/test.txt Thu Nov 20 20:52:08 2008
@@ -0,0 +1 @@
+test
\ No newline at end of file