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