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/10/27 09:39:28 UTC

svn commit: r708106 - in /maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile: ByDefaultMatcher.java ProfileContext.java

Author: sisbell
Date: Mon Oct 27 01:39:27 2008
New Revision: 708106

URL: http://svn.apache.org/viewvc?rev=708106&view=rev
Log:
Profile context. Manages the matching of active profiles.

Added:
    maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java
Modified:
    maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ByDefaultMatcher.java

Modified: maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ByDefaultMatcher.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ByDefaultMatcher.java?rev=708106&r1=708105&r2=708106&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ByDefaultMatcher.java (original)
+++ maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ByDefaultMatcher.java Mon Oct 27 01:39:27 2008
@@ -9,7 +9,6 @@
 
 public class ByDefaultMatcher implements ActiveProfileMatcher {
 
-
     public boolean isMatch(ModelContainer modelContainer, List<InterpolatorProperty> properties) {
         if(modelContainer == null ) {
             throw new IllegalArgumentException("modelContainer: null");

Added: maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java?rev=708106&view=auto
==============================================================================
--- maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java (added)
+++ maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/profile/ProfileContext.java Mon Oct 27 01:39:27 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);
+    }
+
+    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;       
+    }
+}