Author: hibou
Date: Tue Sep 15 16:56:34 2009
New Revision: 815394

URL: http://svn.apache.org/viewvc?rev=815394&view=rev
Log:
- finally the launch configuration doesn't seem to like very well the 
attributes, let's go back to using paramteres
- and make the launch do a resolve before starting

Modified:
    
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java
    
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfAdapter.java
    
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java
    
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvydeContainerPage.java

Modified: 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java?rev=815394&r1=815393&r2=815394&view=diff
==============================================================================
--- 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java
 (original)
+++ 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/FixedRuntimeClasspathEntryResolver.java
 Tue Sep 15 16:56:34 2009
@@ -20,10 +20,12 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.ivyde.eclipse.cpcontainer.IvyClasspathContainer;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.jdt.core.IClasspathContainer;
@@ -61,6 +63,7 @@
                     IJavaLaunchConfigurationConstants.ERR_INTERNAL_ERROR, 
message, null));
             // execution will not reach here - exception will be thrown
         }
+        ((IvyClasspathContainer) container).launchResolve(false, false, new 
NullProgressMonitor());
         IClasspathEntry[] cpes = container.getClasspathEntries();
         int property = -1;
         switch (container.getKind()) {

Modified: 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfAdapter.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfAdapter.java?rev=815394&r1=815393&r2=815394&view=diff
==============================================================================
--- 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfAdapter.java
 (original)
+++ 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfAdapter.java
 Tue Sep 15 16:56:34 2009
@@ -23,7 +23,6 @@
 import java.net.URL;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -33,7 +32,6 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jdt.core.IClasspathAttribute;
-import org.eclipse.jdt.core.JavaCore;
 
 /**
  * This class maps the IvyDE classpath container configuration into Eclipse 
objects representing
@@ -57,7 +55,7 @@
         } else {
             loadV1(conf, path);
         }
-        loadAttributes(conf, attributes);
+        conf.setAttributes(attributes);
     }
 
     /**
@@ -178,90 +176,6 @@
         }
     }
 
-    private static void loadAttributes(IvyClasspathContainerConfiguration conf,
-            IClasspathAttribute[] attributes) {
-        ContainerMappingSetup mappingSetup = conf.getContainerMappingSetup();
-        RetrieveSetup retrieveSetup = conf.getRetrieveSetup();
-        IvySettingsSetup settingsSetup = conf.getIvySettingsSetup();
-
-        if (attributes != null) {
-            for (int i = 0; i < attributes.length; i++) {
-                String name = attributes[i].getName();
-                String value = attributes[i].getValue();
-                if (name.equals("ivyXmlPath")) {
-                    conf.setIvyXmlPath(value);
-                } else if (name.equals("confs")) {
-                    List confs = IvyClasspathUtil.split(value);
-                    if (confs.isEmpty()) {
-                        confs = Collections.singletonList("*");
-                    }
-                    conf.setConfs(confs);
-                } else if (name.equals("ivySettingsPath")) {
-                    settingsSetup.setIvySettingsPath(readOldSettings(conf, 
value));
-                    conf.setSettingsProjectSpecific(true);
-                } else if (name.equals("loadSettingsOnDemand")) {
-                    
settingsSetup.setLoadSettingsOnDemand(Boolean.valueOf(value).booleanValue());
-                    conf.setSettingsProjectSpecific(true);
-                } else if (name.equals("propertyFiles")) {
-                    
settingsSetup.setPropertyFiles(IvyClasspathUtil.split(value));
-                    conf.setSettingsProjectSpecific(true);
-                } else if (name.equals("doRetrieve")) {
-                    // if the value is not actually "true" or "false", the 
Boolean class ensure to
-                    // return false, so it is fine
-                    
retrieveSetup.setDoRetrieve(Boolean.valueOf(value).booleanValue());
-                    conf.setRetrieveProjectSpecific(true);
-                } else if (name.equals("retrievePattern")) {
-                    retrieveSetup.setRetrievePattern(value);
-                    conf.setRetrieveProjectSpecific(true);
-                } else if (name.equals("retrieveSync")) {
-                    
retrieveSetup.setRetrieveSync(Boolean.valueOf(value).booleanValue());
-                    conf.setRetrieveProjectSpecific(true);
-                } else if (name.equals("retrieveConfs")) {
-                    retrieveSetup.setRetrieveConfs(value);
-                    conf.setRetrieveProjectSpecific(true);
-                } else if (name.equals("retrieveTypes")) {
-                    retrieveSetup.setRetrieveTypes(value);
-                    conf.setRetrieveProjectSpecific(true);
-                } else if (name.equals("acceptedTypes")) {
-                    
mappingSetup.setAcceptedTypes(IvyClasspathUtil.split(value));
-                    conf.setAdvancedProjectSpecific(true);
-                } else if (name.equals("sourceTypes")) {
-                    mappingSetup.setSourceTypes(IvyClasspathUtil.split(value));
-                    conf.setAdvancedProjectSpecific(true);
-                } else if (name.equals("javadocTypes")) {
-                    
mappingSetup.setJavadocTypes(IvyClasspathUtil.split(value));
-                    conf.setAdvancedProjectSpecific(true);
-                } else if (name.equals("sourceSuffixes")) {
-                    
mappingSetup.setSourceSuffixes(IvyClasspathUtil.split(value));
-                    conf.setAdvancedProjectSpecific(true);
-                } else if (name.equals("javadocSuffixes")) {
-                    
mappingSetup.setJavadocSuffixes(IvyClasspathUtil.split(value));
-                    conf.setAdvancedProjectSpecific(true);
-                } else if (name.equals("alphaOrder")) {
-                    // if the value is not actually "true" or "false", the 
Boolean class ensure to
-                    // return false, so it is fine
-                    conf.setAlphaOrder(Boolean.valueOf(value).booleanValue());
-                    conf.setAdvancedProjectSpecific(true);
-                } else if (name.equals("resolveInWorkspace")) {
-                    
conf.setResolveInWorkspace(Boolean.valueOf(value).booleanValue());
-                    conf.setAdvancedProjectSpecific(true);
-                } else {
-                    conf.addExtraAttribute(attributes[i]);
-                }
-            }
-        }
-        if (conf.isAdvancedProjectSpecific()) {
-            // in this V1 version, it is just some paranoid check
-            checkNonNullConf(conf);
-        }
-        if (conf.isRetrieveProjectSpecific()) {
-            if (retrieveSetup.getRetrievePattern() == null) {
-                
retrieveSetup.setRetrievePattern(IvyPlugin.getPreferenceStoreHelper()
-                        .getRetrieveSetup().getRetrievePattern());
-            }
-        }
-    }
-
     /**
      * Read old configuration that were based on relative urls, like: 
"file://./ivysettings.xml" or
      * "file:./ivysettings.xml". This kind of URL "project:///ivysettings.xml" 
should be used now.
@@ -324,8 +238,31 @@
         path.append("ivyXmlPath=");
         try {
             path.append(URLEncoder.encode(conf.getIvyXmlPath(), "UTF-8"));
-            path.append("&confs=");
-            
path.append(URLEncoder.encode(IvyClasspathUtil.concat(conf.getConfs()), 
"UTF-8"));
+            append(path, "confs", conf.getConfs());
+            if (conf.isSettingsProjectSpecific()) {
+                IvySettingsSetup setup = conf.getIvySettingsSetup();
+                append(path, "ivySettingsPath", setup.getIvySettingsPath());
+                append(path, "loadSettingsOnDemand", 
setup.isLoadSettingsOnDemand());
+                append(path, "propertyFiles", setup.getPropertyFiles());
+            }
+            if (conf.isRetrieveProjectSpecific()) {
+                RetrieveSetup setup = conf.getRetrieveSetup();
+                append(path, "doRetrieve", setup.isDoRetrieve());
+                append(path, "retrievePattern", setup.getRetrievePattern());
+                append(path, "retrieveSync", setup.isRetrieveSync());
+                append(path, "retrieveConfs", setup.getRetrieveConfs());
+                append(path, "retrieveTypes", setup.getRetrieveTypes());
+            }
+            if (conf.isAdvancedProjectSpecific()) {
+                ContainerMappingSetup setup = conf.getContainerMappingSetup();
+                append(path, "acceptedTypes", setup.getAcceptedTypes());
+                append(path, "sourceTypes", setup.getSourceTypes());
+                append(path, "javadocTypes", setup.getJavadocTypes());
+                append(path, "sourceSuffixes", setup.getSourceSuffixes());
+                append(path, "javadocSuffixes", setup.getJavadocSuffixes());
+                append(path, "alphaOrder", conf.isAlphaOrder());
+                append(path, "resolveInWorkspace", 
conf.isResolveInWorkspace());
+            }
         } catch (UnsupportedEncodingException e) {
             IvyPlugin.log(IStatus.ERROR, UTF8_ERROR, e);
             throw new RuntimeException(UTF8_ERROR, e);
@@ -333,45 +270,21 @@
         return new 
Path(IvyClasspathContainer.CONTAINER_ID).append(path.toString());
     }
 
-    public static IClasspathAttribute[] 
getAttributes(IvyClasspathContainerConfiguration conf) {
-        List atts = new ArrayList(conf.getExtraAttributes());
-        if (conf.isSettingsProjectSpecific()) {
-            IvySettingsSetup settingsSetup = conf.getIvySettingsSetup();
-            addAttribute(atts, "ivySettingsPath", 
settingsSetup.getIvySettingsPath());
-            addAttribute(atts, "loadSettingsOnDemand", 
settingsSetup.isLoadSettingsOnDemand());
-            addAttribute(atts, "propertyFiles", 
settingsSetup.getPropertyFiles());
-        }
-        if (conf.isRetrieveProjectSpecific()) {
-            RetrieveSetup retrieveSetup = conf.getRetrieveSetup();
-            addAttribute(atts, "doRetrieve", retrieveSetup.isDoRetrieve());
-            addAttribute(atts, "retrievePattern", 
retrieveSetup.getRetrievePattern());
-            addAttribute(atts, "retrieveSync", retrieveSetup.isRetrieveSync());
-            addAttribute(atts, "retrieveConfs", 
retrieveSetup.getRetrieveConfs());
-            addAttribute(atts, "retrieveTypes", 
retrieveSetup.getRetrieveTypes());
-        }
-        if (conf.isAdvancedProjectSpecific()) {
-            ContainerMappingSetup mappingSetup = 
conf.getContainerMappingSetup();
-            addAttribute(atts, "acceptedTypes", 
mappingSetup.getAcceptedTypes());
-            addAttribute(atts, "sourceTypes", mappingSetup.getSourceTypes());
-            addAttribute(atts, "javadocTypes", mappingSetup.getJavadocTypes());
-            addAttribute(atts, "sourceSuffixes", 
mappingSetup.getSourceSuffixes());
-            addAttribute(atts, "javadocSuffixes", 
mappingSetup.getJavadocSuffixes());
-            addAttribute(atts, "alphaOrder", conf.isAlphaOrder());
-            addAttribute(atts, "resolveInWorkspace", 
conf.isResolveInWorkspace());
-        }
-        return (IClasspathAttribute[]) atts.toArray(new 
IClasspathAttribute[0]);
-    }
-
-    private static void addAttribute(List atts, String name, String value) {
-        atts.add(JavaCore.newClasspathAttribute(name, value));
-    }
-
-    private static void addAttribute(List atts, String name, List values) {
-        addAttribute(atts, name, IvyClasspathUtil.concat(values));
-    }
-
-    private static void addAttribute(List atts, String name, boolean bool) {
-        addAttribute(atts, name, Boolean.toString(bool));
+    private static void append(StringBuffer path, String name, String value)
+            throws UnsupportedEncodingException {
+        path.append('&');
+        path.append(name);
+        path.append('=');
+        path.append(URLEncoder.encode(value, "UTF-8"));
+    }
+
+    private static void append(StringBuffer path, String name, List values)
+            throws UnsupportedEncodingException {
+        append(path, name, IvyClasspathUtil.concat(values));
+    }
+
+    private static void append(StringBuffer path, String name, boolean value)
+            throws UnsupportedEncodingException {
+        append(path, name, Boolean.toString(value));
     }
-
 }

Modified: 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java?rev=815394&r1=815393&r2=815394&view=diff
==============================================================================
--- 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java
 (original)
+++ 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java
 Tue Sep 15 16:56:34 2009
@@ -17,7 +17,6 @@
  */
 package org.apache.ivyde.eclipse.cpcontainer;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
@@ -58,7 +57,7 @@
     /**
      * attributes attached to the container but not IvyDE related (Webtools or 
AspectJfor instance)
      */
-    private List/* <IClasspathAttribute> */extraAttributes = new ArrayList();
+    private IClasspathAttribute[] attributes;
 
     /**
      * Constructor
@@ -183,12 +182,12 @@
         return javaProject;
     }
 
-    public void addExtraAttribute(IClasspathAttribute attribute) {
-        extraAttributes.add(attribute);
+    public void setAttributes(IClasspathAttribute[] attributes) {
+        this.attributes = attributes;
     }
 
-    public List/* <IClasspathAttribute> */getExtraAttributes() {
-        return extraAttributes;
+    public IClasspathAttribute[] getAttributes() {
+        return attributes;
     }
 
     // ///////////////////////////

Modified: 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvydeContainerPage.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvydeContainerPage.java?rev=815394&r1=815393&r2=815394&view=diff
==============================================================================
--- 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvydeContainerPage.java
 (original)
+++ 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvydeContainerPage.java
 Tue Sep 15 16:56:34 2009
@@ -226,7 +226,7 @@
         }
 
         IPath path = IvyClasspathContainerConfAdapter.getPath(conf);
-        IClasspathAttribute[] atts = 
IvyClasspathContainerConfAdapter.getAttributes(conf);
+        IClasspathAttribute[] atts = conf.getAttributes();
 
         entry = JavaCore.newContainerEntry(path, null, atts, exported);
 


Reply via email to