Index: E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvydeContainerPage.java =================================================================== --- E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvydeContainerPage.java (revision 705444) +++ E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvydeContainerPage.java (working copy) @@ -138,6 +138,10 @@ private TabItem advancedTab; + private Button retrieveNonDeclaredSourcesCheck; + + private Button retrieveNonDeclaredJavadocsCheck; + /** * Constructor */ @@ -170,6 +174,8 @@ conf.retrieveSync = retrieveSyncButton.getSelection(); conf.alphaOrder = alphaOrderCheck.getSelectionIndex() == 1; conf.resolveInWorkspace = resolveInWorkspaceCheck.getSelection(); + conf.retrieveNonDeclaredJavadocs = this.retrieveNonDeclaredJavadocsCheck.getSelection(); + conf.retrieveNonDeclaredSources = this.retrieveNonDeclaredSourcesCheck.getSelection(); } else { conf.ivySettingsPath = null; } @@ -592,7 +598,7 @@ alphaOrderCheck .setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 2, 1)); alphaOrderCheck - .setToolTipText("Order of the artifacts in the classpath container"); + .setToolTipText("Order of the artifacts in the classpath container1"); alphaOrderCheck.add("From the ivy.xml"); alphaOrderCheck.add("Lexical"); @@ -603,9 +609,25 @@ resolveInWorkspaceCheck .setToolTipText("Will replace jars on the classpath with workspace projects"); + retrieveNonDeclaredSourcesCheck = new Button(this.configComposite, SWT.CHECK); + retrieveNonDeclaredSourcesCheck.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, + false, 2, 1)); + retrieveNonDeclaredSourcesCheck.setText("Resolve none declared sources"); + retrieveNonDeclaredSourcesCheck + .setToolTipText("Will Resolve none declared sources"); + + retrieveNonDeclaredJavadocsCheck = new Button(this.configComposite, SWT.CHECK); + retrieveNonDeclaredJavadocsCheck.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, + false, 2, 1)); + retrieveNonDeclaredJavadocsCheck.setText(" Resolve none declared javadocs"); + retrieveNonDeclaredJavadocsCheck + .setToolTipText("Will resolve none declared javadocs"); + + return composite; } + void settingsUpdated() { try { conf.ivySettingsLastModified = -1; @@ -651,6 +673,8 @@ retrieveSyncButton.setSelection(conf.retrieveSync); alphaOrderCheck.select(conf.alphaOrder ? 1 : 0); resolveInWorkspaceCheck.setSelection(this.conf.resolveInWorkspace); + retrieveNonDeclaredSourcesCheck.setSelection(this.conf.retrieveNonDeclaredSources); + retrieveNonDeclaredJavadocsCheck.setSelection(this.conf.retrieveNonDeclaredJavadocs); } else { projectSpecificButton.setSelection(false); IvyDEPreferenceStoreHelper helper = IvyPlugin.getPreferenceStoreHelper(); @@ -665,6 +689,8 @@ retrieveSyncButton.setSelection(helper.getRetrieveSync()); alphaOrderCheck.select(helper.isAlphOrder() ? 1 : 0); resolveInWorkspaceCheck.setSelection(helper.isResolveInWorkspace()); + retrieveNonDeclaredSourcesCheck.setSelection(helper.isRetrieveNonDeclaredSources()); + retrieveNonDeclaredJavadocsCheck.setSelection(helper.isRetrieveNonDeclaredJavadocs()); } updateFieldsStatus(); @@ -685,6 +711,8 @@ retrieveSyncButton.setEnabled(doRetrieveButton.getSelection() && projectSpecific); alphaOrderCheck.setEnabled(projectSpecific); resolveInWorkspaceCheck.setEnabled(projectSpecific); + this.retrieveNonDeclaredJavadocsCheck.setEnabled(projectSpecific); + this.retrieveNonDeclaredSourcesCheck.setEnabled(projectSpecific); } File getFile(File startingDirectory) { Index: E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyResolveJob.java =================================================================== --- E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyResolveJob.java (revision 705444) +++ E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyResolveJob.java (working copy) @@ -62,6 +62,7 @@ import org.apache.ivy.util.Message; import org.apache.ivyde.eclipse.IvyDEException; import org.apache.ivyde.eclipse.IvyPlugin; +import org.apache.ivyde.eclipse.ui.preferences.IvyDEPreferenceStoreHelper; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; @@ -407,7 +408,7 @@ * Trigger a warn if there are duplicates entries due to configuration conflict. *

* TODO: the algorithm can be more clever and find which configuration are conflicting. - * + * * @param all * the resolved artifacts */ @@ -548,8 +549,56 @@ return new Path(otherAdr.getLocalFile().getAbsolutePath()); } } - if (shouldTestNonDeclaredSources()) { - return getMetaArtifactPath(adr, "source", "sources"); + return getNoDeclaredPath(adr,"source"); + } + + private Path getNoDeclaredPath(ArtifactDownloadReport adr,String type) { + String defaultSourceType =null; + String defaultSourceSuffix = null; + boolean shouldRetrieve = false; + Collection types = null; + Collection suffixes = null; + if( type .equals("source")){ + defaultSourceType ="source"; + defaultSourceSuffix = "sources"; + shouldRetrieve=shouldTestNonDeclaredSources(); + if(shouldRetrieve){ + types = this.conf.getInheritedSourceTypes(); + suffixes = this.conf.getInheritedSourceSuffixes(); + } + + + }else if( type .equals("javadoc")){ + defaultSourceType ="javadoc"; + defaultSourceSuffix = "javadoc"; + shouldRetrieve= this.shouldTestNonDeclaredJavadocs(); + if(shouldRetrieve){ + types = this.conf.getInheritedJavadocTypes(); + suffixes = this.conf.getInheritedSourceSuffixes(); + } + + }else { + throw new IllegalArgumentException(" not support type:"+type); + } + + + if (shouldRetrieve) { + Message.info("retrieve no declared for type:"+type+" artifact:"+adr.getArtifact().getName()); + Collection typeList = new ArrayList(); + if(types != null){ + typeList.addAll(types); + } + if(typeList.size() <1){ + typeList.add(defaultSourceType); + } + Collection suffixList = new ArrayList(); + if( suffixList != null){ + suffixList.addAll(suffixes); + } + if(suffixList.size() < 1){ + suffixList.add(defaultSourceSuffix); + } + return getMetaArtifactPath(adr,typeList,suffixList); } else { return null; } @@ -568,13 +617,25 @@ return new Path(otherAdr.getLocalFile().getAbsolutePath()); } } - if (shouldTestNonDeclaredJavadocs()) { - return getMetaArtifactPath(adr, "javadoc", "javadoc"); - } else { - return null; - } + return getNoDeclaredPath(adr,"javadoc"); } + private Path getMetaArtifactPath(ArtifactDownloadReport adr, Collection types, + Collection suffixList) { + Path path = null; + for (Iterator iterator = types.iterator(); iterator.hasNext(); ) { + String type = (String) iterator.next(); + for (Iterator iter2 = suffixList.iterator(); iter2.hasNext(); ) { + String suffix = (String) iter2.next(); + path = getMetaArtifactPath(adr,type,suffix); + if(path != null){ + return path; + } + } + } + return path; + + } /** * meta artifact (source or javadoc) not found in resolved artifacts, try to see if a non * declared one is available @@ -703,13 +764,14 @@ } public boolean shouldTestNonDeclaredSources() { - return true; // TODO: add settings for that + return this.conf.isRetrieveNonDeclaredSources(); } public boolean shouldTestNonDeclaredJavadocs() { - return true; // TODO: add settings for that + return this.conf.isRetrieveNonDeclaredJavadocs(); } + public boolean isJavadocArtifactName(String jar, String javadoc) { return isArtifactName(jar, javadoc, conf.getInheritedJavadocSuffixes()); } @@ -733,7 +795,7 @@ /** * Check if the artifact is an artifact which can be added to the classpath container - * + * * @param artifact * the artifact to check * @return true if the artifact can be added Index: E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java =================================================================== --- E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java (revision 705444) +++ E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java (working copy) @@ -34,8 +34,11 @@ import org.apache.ivy.core.settings.IvySettings; import org.apache.ivy.plugins.parser.ModuleDescriptorParserRegistry; import org.apache.ivy.util.Message; +import org.apache.ivy.util.StringUtils; import org.apache.ivyde.eclipse.IvyDEException; import org.apache.ivyde.eclipse.IvyPlugin; +import org.apache.ivyde.eclipse.ui.preferences.IvyDEPreferenceStoreHelper; +import org.apache.ivyde.eclipse.ui.preferences.PreferenceConstants; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; @@ -99,9 +102,14 @@ boolean confOk; + + boolean retrieveNonDeclaredSources=false; + + boolean retrieveNonDeclaredJavadocs=false; + /** * Constructor - * + * * @param javaProject * the classpath container's Java project, null is not bind to a project * @param ivyXmlPath @@ -114,7 +122,7 @@ /** * Constructor - * + * * @param javaProject * the classpath container's Java project, null is not bind to a project * @param path @@ -137,7 +145,7 @@ /** * Load the pre-IVYDE-70 configuration - * + * * @param path * the path of the container */ @@ -151,7 +159,7 @@ /** * Load the post-IVYDE-70 configuration - * + * * @param path * the path of the container */ @@ -213,7 +221,14 @@ } else if (parameter[0].equals("resolveInWorkspace")) { resolveInWorkspace = Boolean.valueOf(value).booleanValue(); isProjectSpecific = true; + }else if (parameter[0].equals(PreferenceConstants.RETRIEVE_NON_DECLARED_SOURCES )&&!"".endsWith(value)){ + this.retrieveNonDeclaredSources = Boolean.valueOf(value).booleanValue(); + isProjectSpecific = true; + } else if (parameter[0].equals(PreferenceConstants.RETRIEVE_NON_DECLARED_JAVADOCS)&&!"".endsWith(value)) { + this.retrieveNonDeclaredJavadocs = Boolean.valueOf(value).booleanValue(); + isProjectSpecific = true; } + } if (isProjectSpecific) { // in this V1 version, it is just some paranoid check @@ -224,7 +239,7 @@ /** * Read old configuration that were based on relative urls, like: "file://./ivysettings.xml". * This kind of URL "project:///ivysettings.xml" should be used now. - * + * * @param value * the value to read * @return @@ -249,26 +264,27 @@ } private void checkNonNullConf() { + final IvyDEPreferenceStoreHelper preferenceStoreHelper = IvyPlugin.getPreferenceStoreHelper(); if (ivySettingsPath == null) { - ivySettingsPath = IvyPlugin.getPreferenceStoreHelper().getIvySettingsPath(); + ivySettingsPath = preferenceStoreHelper.getIvySettingsPath(); } if (acceptedTypes == null) { - acceptedTypes = IvyPlugin.getPreferenceStoreHelper().getAcceptedTypes(); + acceptedTypes = preferenceStoreHelper.getAcceptedTypes(); } if (sourceTypes == null) { - sourceTypes = IvyPlugin.getPreferenceStoreHelper().getSourceTypes(); + sourceTypes = preferenceStoreHelper.getSourceTypes(); } if (javadocTypes == null) { - javadocTypes = IvyPlugin.getPreferenceStoreHelper().getJavadocTypes(); + javadocTypes = preferenceStoreHelper.getJavadocTypes(); } if (sourceSuffixes == null) { - sourceSuffixes = IvyPlugin.getPreferenceStoreHelper().getSourceSuffixes(); + sourceSuffixes = preferenceStoreHelper.getSourceSuffixes(); } if (javadocSuffixes == null) { - javadocSuffixes = IvyPlugin.getPreferenceStoreHelper().getJavadocSuffixes(); + javadocSuffixes = preferenceStoreHelper.getJavadocSuffixes(); } if (retrievePattern == null) { - retrievePattern = IvyPlugin.getPreferenceStoreHelper().getRetrievePattern(); + retrievePattern = preferenceStoreHelper.getRetrievePattern(); } } @@ -301,8 +317,13 @@ path.append(URLEncoder.encode(Boolean.toString(retrieveSync), "UTF-8")); path.append("&alphaOrder="); path.append(URLEncoder.encode(Boolean.toString(alphaOrder), "UTF-8")); - path.append("&resolveInWorkspace="); - path.append(URLEncoder.encode(Boolean.toString(this.resolveInWorkspace), "UTF-8")); + path.append("&"); + path.append(encodParam("resolveInWorkspace",""+this.resolveInWorkspace)); + path.append("&"); + path.append(encodParam("retrievenondeclaredjavadocs",""+this.retrieveNonDeclaredJavadocs)); + path.append("&"); + path.append(encodParam("retrievenondeclaredsources",""+this.retrieveNonDeclaredSources)) + ; } } catch (UnsupportedEncodingException e) { IvyPlugin.log(IStatus.ERROR, UTF8_ERROR, e); @@ -311,6 +332,10 @@ return new Path(IvyClasspathContainer.CONTAINER_ID).append(path.toString()); } + private static String encodParam(String name,String val) throws UnsupportedEncodingException{ + return name+"="+URLEncoder.encode(val, "UTF-8"); + } + public String getIvyXmlPath() { return ivyXmlPath; } @@ -653,4 +678,19 @@ } } + public boolean isRetrieveNonDeclaredJavadocs() { + if (ivySettingsPath == null) { + return IvyPlugin.getPreferenceStoreHelper().isRetrieveNonDeclaredJavadocs(); + } + return retrieveNonDeclaredJavadocs; + } + + + public boolean isRetrieveNonDeclaredSources() { + if (ivySettingsPath == null) { + return IvyPlugin.getPreferenceStoreHelper().isRetrieveNonDeclaredSources(); + } + return retrieveNonDeclaredSources; + } + } Index: E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyPreferencePage.java =================================================================== --- E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyPreferencePage.java (revision 705444) +++ E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyPreferencePage.java (working copy) @@ -226,6 +226,19 @@ "Resolve dependencies to workspace projects", fieldParent); addField(resolveInWorkspace); + BooleanFieldEditor resolveNonDeclaredSources= new BooleanFieldEditor( + PreferenceConstants.RETRIEVE_NON_DECLARED_SOURCES, + "Resolve none declared sources", fieldParent); + addField(resolveNonDeclaredSources); + + + BooleanFieldEditor resolveNonDeclaredJavadoc= new BooleanFieldEditor( + PreferenceConstants.RETRIEVE_NON_DECLARED_JAVADOCS, + "Resolve none declared javadocs", fieldParent); + addField(resolveNonDeclaredJavadoc); + + + spacer = new Label(fieldParent, SWT.NONE); spacerData = new GridData(); spacerData.horizontalSpan = 3; Index: E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java =================================================================== --- E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java (revision 705444) +++ E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java (working copy) @@ -62,4 +62,9 @@ public static final String RESOLVE_IN_WORKSPACE = "resolveInWorkspace"; + public static final String RETRIEVE_NON_DECLARED_SOURCES = "retrievenondeclaredsources"; + + public static final String RETRIEVE_NON_DECLARED_JAVADOCS = "retrievenondeclaredjavadoc"; + + } Index: E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java =================================================================== --- E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java (revision 705444) +++ E:/ZmccDevWorkspaceNew/ivyde/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java (working copy) @@ -62,6 +62,8 @@ prefStore.setDefault(PreferenceConstants.RETRIEVE_SYNC, false); prefStore.setDefault(PreferenceConstants.ALPHABETICAL_ORDER, false); prefStore.setDefault(PreferenceConstants.RESOLVE_IN_WORKSPACE, false); + prefStore.setDefault(PreferenceConstants.RETRIEVE_NON_DECLARED_SOURCES, false); + prefStore.setDefault(PreferenceConstants.RETRIEVE_NON_DECLARED_JAVADOCS, false); } public String getIvyOrg() { @@ -116,4 +118,13 @@ return prefStore.getBoolean(PreferenceConstants.RESOLVE_IN_WORKSPACE); } + public boolean isRetrieveNonDeclaredSources() { + return prefStore.getBoolean(PreferenceConstants.RETRIEVE_NON_DECLARED_SOURCES); + } + + public boolean isRetrieveNonDeclaredJavadocs() { + return prefStore.getBoolean(PreferenceConstants.RETRIEVE_NON_DECLARED_JAVADOCS); + } + + }