You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by hi...@apache.org on 2010/08/25 12:21:00 UTC

svn commit: r988979 - in /ant/ivy/ivyde/trunk: ./ org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/ org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspac...

Author: hibou
Date: Wed Aug 25 10:20:59 2010
New Revision: 988979

URL: http://svn.apache.org/viewvc?rev=988979&view=rev
Log:
IVYDE-234 : Add branch comparison to workspace resolver (thanks to Jeffrey M. Metcalf)

Modified:
    ant/ivy/ivyde/trunk/CHANGES.txt
    ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/IvyPlugin.java
    ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java
    ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java
    ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceInitializer.java
    ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/WorkspaceResolverPreferencePage.java
    ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResolver.java

Modified: ant/ivy/ivyde/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/CHANGES.txt?rev=988979&r1=988978&r2=988979&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/CHANGES.txt (original)
+++ ant/ivy/ivyde/trunk/CHANGES.txt Wed Aug 25 10:20:59 2010
@@ -7,6 +7,7 @@
 - NEW: Custom color in XML editors (IVYDE-73)
 - NEW: support for retrieve configuration in non Java project
 - NEW: an IvyDE classpath can now be retrieved (IVYDE-56)
+- NEW: Add branch comparison to workspace resolver (IVYDE-234) (thanks to Jeffrey M. Metcalf)
 
 - IMPROVE: let IvyDE refresh workspace after a resolve (IVYDE-27) (thanks to Clint Burghduff)
 - IMPROVE: IvyDE now resolve by batch, then preventing too many workspace build (IVYDE-177)

Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/IvyPlugin.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/IvyPlugin.java?rev=988979&r1=988978&r2=988979&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/IvyPlugin.java (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/IvyPlugin.java Wed Aug 25 10:20:59 2010
@@ -138,7 +138,9 @@ public class IvyPlugin extends AbstractU
                             || event.getProperty() == PreferenceConstants.RETRIEVE_PATTERN
                             || event.getProperty() == PreferenceConstants.RETRIEVE_SYNC
                             || event.getProperty() == PreferenceConstants.ALPHABETICAL_ORDER
-                            || event.getProperty() == PreferenceConstants.RESOLVE_IN_WORKSPACE) {
+                            || event.getProperty() == PreferenceConstants.RESOLVE_IN_WORKSPACE
+                            || event.getProperty() == PreferenceConstants.IGNORE_BRANCH_ON_WORKSPACE_PROJECTS
+                            || event.getProperty() == PreferenceConstants.IGNORE_VERSION_ON_WORKSPACE_PROJECTS) {
                         prefStoreChanged();
                     }
                 } catch (JavaModelException e) {

Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java?rev=988979&r1=988978&r2=988979&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java Wed Aug 25 10:20:59 2010
@@ -179,6 +179,15 @@ public class IvyDEPreferenceStoreHelper 
         prefStore.setValue(PreferenceConstants.IVY_CONSOLE_LOG_LEVEL, logLevel);
     }
 
+    public boolean getIgnoreBranchOnWorkspaceProjects() {
+        return prefStore.getBoolean(PreferenceConstants.IGNORE_BRANCH_ON_WORKSPACE_PROJECTS);
+    }
+
+    public void setIgnoreBranchOnWorkspaceProjects(boolean ignoreBranchOnWorkspaceProjects) {
+        prefStore.setValue(PreferenceConstants.IGNORE_BRANCH_ON_WORKSPACE_PROJECTS,
+            ignoreBranchOnWorkspaceProjects);
+    }
+
     public boolean getIgnoreVersionOnWorkspaceProjects() {
         return prefStore.getBoolean(PreferenceConstants.IGNORE_VERSION_ON_WORKSPACE_PROJECTS);
     }

Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java?rev=988979&r1=988978&r2=988979&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java Wed Aug 25 10:20:59 2010
@@ -82,6 +82,9 @@ public final class PreferenceConstants {
 
     public static final String IVY_CONSOLE_LOG_LEVEL = "ivyConsole.logLevel";
 
+    public static final String IGNORE_BRANCH_ON_WORKSPACE_PROJECTS
+        = "workspaceResolver.ignoreBranch";
+
     public static final String IGNORE_VERSION_ON_WORKSPACE_PROJECTS
         = "workspaceResolver.ignoreVersion";
 

Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceInitializer.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceInitializer.java?rev=988979&r1=988978&r2=988979&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceInitializer.java (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceInitializer.java Wed Aug 25 10:20:59 2010
@@ -98,7 +98,9 @@ public class PreferenceInitializer exten
     public static final boolean DEFAULT_AUTO_RESOLVE_ON_OPEN = false;
 
     public static final boolean DEFAULT_AUTO_RESOLVE_ON_CHANGE = true;
-    
+
+    public static final boolean DEFAULT_IGNORE_BRANCH_ON_WORKSPACE_PROJECTS = false;
+
     public static final boolean DEFAULT_IGNORE_VERSION_ON_WORKSPACE_PROJECTS = false;
 
     public static final boolean DEFAULT_RETRIEVED_CLASSPATH = false;
@@ -151,6 +153,9 @@ public class PreferenceInitializer exten
         store.setDefault(PreferenceConstants.IVY_CONSOLE_LOG_LEVEL,
             DEFAULT_IVY_CONSOLE_LOG_MESSAGE);
 
+        store.setDefault(PreferenceConstants.IGNORE_BRANCH_ON_WORKSPACE_PROJECTS,
+            DEFAULT_IGNORE_BRANCH_ON_WORKSPACE_PROJECTS);
+
         store.setDefault(PreferenceConstants.IGNORE_VERSION_ON_WORKSPACE_PROJECTS,
             DEFAULT_IGNORE_VERSION_ON_WORKSPACE_PROJECTS);
 

Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/WorkspaceResolverPreferencePage.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/WorkspaceResolverPreferencePage.java?rev=988979&r1=988978&r2=988979&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/WorkspaceResolverPreferencePage.java (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/WorkspaceResolverPreferencePage.java Wed Aug 25 10:20:59 2010
@@ -69,6 +69,19 @@ public class WorkspaceResolverPreference
             }
         };
         addField(autoResolveOnOpen);
+        
+        BooleanFieldEditor ignoreBranchOnWorkspaceProjects = new BooleanFieldEditor(
+                PreferenceConstants.IGNORE_BRANCH_ON_WORKSPACE_PROJECTS,
+                "Ignore branch when resolving workspace projects", fieldParent) {
+            protected Label getLabelControl() {
+                Label label = super.getLabelControl();
+                label.setToolTipText("Will ignore the artifact branch when resolving "
+                        + "against workspace projects");
+                return label;
+            }
+        };
+
+        addField(ignoreBranchOnWorkspaceProjects);
 
         BooleanFieldEditor ignoreVersionOnWorkspaceProjects = new BooleanFieldEditor(
                 PreferenceConstants.IGNORE_VERSION_ON_WORKSPACE_PROJECTS,
@@ -84,9 +97,10 @@ public class WorkspaceResolverPreference
         addField(ignoreVersionOnWorkspaceProjects);
 
         Label warning = new Label(fieldParent, SWT.NONE);
-        warning.setText("WARNING: you should use this only if you are sure the projets opened\n"
-                + "in your workspace can actually work with each other, be carefull with\n"
-                + "branch management for instance)");
+        warning.setText("WARNING: you should ignore branch and/or revision only\n" +
+        		        "if you are sure that all the project revisions that are\n" +
+        		        "open in your workspace can actually work together\n" +
+                        "(be careful with branch management for instance)");
         GridData gridData = new GridData();
         gridData.horizontalIndent = HORIZ_INDENT;
         warning.setLayoutData(gridData);

Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResolver.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResolver.java?rev=988979&r1=988978&r2=988979&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResolver.java (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResolver.java Wed Aug 25 10:20:59 2010
@@ -34,6 +34,7 @@ import org.apache.ivy.core.module.descri
 import org.apache.ivy.core.module.descriptor.ExcludeRule;
 import org.apache.ivy.core.module.descriptor.License;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
+import org.apache.ivy.core.module.id.ModuleId;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
 import org.apache.ivy.core.report.ArtifactDownloadReport;
 import org.apache.ivy.core.report.DownloadReport;
@@ -106,6 +107,8 @@ public class WorkspaceResolver extends A
 
     private IJavaProject[] projects;
 
+    private boolean ignoreBranchOnWorkspaceProjects;
+
     private boolean ignoreVersionOnWorkspaceProjects;
 
     public WorkspaceResolver(IJavaProject javaProject, IvySettings ivySettings) {
@@ -121,6 +124,9 @@ public class WorkspaceResolver extends A
                     + resolvingJavaProject.getElementName(), e);
         }
 
+        ignoreBranchOnWorkspaceProjects = IvyPlugin.getPreferenceStoreHelper()
+                .getIgnoreBranchOnWorkspaceProjects();
+
         ignoreVersionOnWorkspaceProjects = IvyPlugin.getPreferenceStoreHelper()
                 .getIgnoreVersionOnWorkspaceProjects();
     }
@@ -175,10 +181,36 @@ public class WorkspaceResolver extends A
                     continue;
                 }
 
-                if (!md.getModuleRevisionId().getModuleId().equals(dependencyMrid.getModuleId())) {
+                ModuleRevisionId candidateMrid = md.getModuleRevisionId();
+
+                if (!candidateMrid.getModuleId().equals(dependencyMrid.getModuleId())) {
                     // it doesn't match org#module
                     continue;
                 }
+                
+                if (!ignoreBranchOnWorkspaceProjects) {
+                    ModuleId mid = dependencyMrid.getModuleId();
+                    String defaultBranch = getSettings().getDefaultBranch(mid);
+                    String dependencyBranch = dependencyMrid.getBranch();
+                    String candidateBranch = candidateMrid.getBranch();
+                    if (dependencyBranch == null) {
+                        dependencyBranch = defaultBranch;
+                    }
+                    if (candidateBranch == null) {
+                        candidateBranch = defaultBranch;
+                    }
+                    if (dependencyBranch != candidateBranch) {
+                        // Both cannot be null
+                        if (dependencyBranch == null || candidateBranch == null) {
+                            // One set, the other isn't, so no match
+                            continue;
+                        }
+                        if (!dependencyBranch.equals(candidateBranch)) {
+                            // Both set but to different branches, so no match
+                            continue;
+                        }
+                    }
+                }
 
                 // Found one; check if it is for the module we need
                 if (ignoreVersionOnWorkspaceProjects