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);
+ }
+
+
}