Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 40425 Details for
Bug 138802
Callisto update site doesn't select all required features
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
with exceptions being logged not printed
138802forCoreAndUIpatch.txt (text/plain), 11.11 KB, created by
Branko Tripkovic
on 2006-05-04 16:44:47 EDT
(
hide
)
Description:
with exceptions being logged not printed
Filename:
MIME Type:
Creator:
Branko Tripkovic
Created:
2006-05-04 16:44:47 EDT
Size:
11.11 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.update.ui >Index: src/org/eclipse/update/internal/ui/wizards/ReviewPage.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/ReviewPage.java,v >retrieving revision 1.79 >diff -u -r1.79 ReviewPage.java >--- src/org/eclipse/update/internal/ui/wizards/ReviewPage.java 27 Apr 2006 17:11:10 -0000 1.79 >+++ src/org/eclipse/update/internal/ui/wizards/ReviewPage.java 4 May 2006 20:41:38 -0000 >@@ -13,11 +13,11 @@ > import java.lang.reflect.InvocationTargetException; > import java.net.URL; > import java.util.ArrayList; >+import java.util.Arrays; > import java.util.Collection; >-import java.util.HashMap; > import java.util.HashSet; > import java.util.Iterator; >-import java.util.Map; >+import java.util.List; > import java.util.Set; > > import org.eclipse.core.runtime.CoreException; >@@ -64,6 +64,8 @@ > import org.eclipse.update.core.IFeature; > import org.eclipse.update.core.IFeatureReference; > import org.eclipse.update.core.IImport; >+import org.eclipse.update.core.IIncludedFeatureReference; >+import org.eclipse.update.core.IPluginEntry; > import org.eclipse.update.core.ISiteFeatureReference; > import org.eclipse.update.core.IURLEntry; > import org.eclipse.update.core.Utilities; >@@ -1113,7 +1115,7 @@ > setValidationStatus(requiredFeaturesResult.getStatus()); > Set requiredFeatures = requiredFeaturesResult.getRequiredFeatures(); > problematicFeatures.clear(); >- >+ > Iterator requiredFeaturesIterator = requiredFeatures.iterator(); > ArrayList toBeInstalled = new ArrayList(); > >@@ -1161,7 +1163,8 @@ > if (!toBeInstalled.isEmpty()) { > Iterator toBeInstalledIterator = toBeInstalled.iterator(); > while (toBeInstalledIterator.hasNext()) { >- treeViewer.setChecked(toBeInstalledIterator.next(), true); >+ IInstallFeatureOperation current = (IInstallFeatureOperation)toBeInstalledIterator.next(); >+ treeViewer.setChecked(current, true); > } > return selectRequiredFeatures(); > } else { >@@ -1274,7 +1277,7 @@ > * Update status in the wizard status area > */ > private void updateWizardMessage() { >- if (true) return; >+ > if (validationStatus == null) { > lastDisplayedStatus=null; > setErrorMessage(null); >@@ -1448,44 +1451,144 @@ > } > } > >- public boolean isFeatureGood(IImport requiredFeature, >- IInstallFeatureOperation feature) { >+ >+ public boolean isFeatureGood(IImport requiredFeature, IFeature feature) { >+ return isFeatureGood(requiredFeature, feature, new ArrayList()); >+ } >+ >+ public boolean isFeatureGood(IImport requiredFeature, IFeature feature, List visitedFeatures) { > >- if (!requiredFeature.getVersionedIdentifier().getIdentifier().equals( >- feature.getFeature().getVersionedIdentifier().getIdentifier())) { >+ if (requiredFeature.getKind() == IImport.KIND_FEATURE) { >+ if ((!requiredFeature.getVersionedIdentifier().getIdentifier().equals( >+ feature.getVersionedIdentifier().getIdentifier()))) { >+ IIncludedFeatureReference[] iifr = null; >+ try { >+ iifr = feature.getIncludedFeatureReferences(); >+ } catch (CoreException e) { >+ UpdateUI.logException(e); >+ // if we can not get included features then they can not satisfy requirement, so just ignore them >+ return false; >+ } >+ if (iifr == null) { >+ return false; >+ } >+ >+ for(int i = 0; i < iifr.length; i++) { >+ IFeature current; >+ try { >+ current = iifr[i].getFeature(new NullProgressMonitor()); >+ } catch (CoreException e) { >+ // if we can not get feature then it can not satisfy requirement, so just ignore it >+ UpdateUI.logException(e); >+ continue; >+ } >+ if (!visitedFeatures.contains(current)) { >+ visitedFeatures.add(current); >+ if (isFeatureGood(requiredFeature, current, visitedFeatures)) { >+ return true; >+ } >+ } >+ } >+ >+ return false; >+ } >+ >+ int rule = (requiredFeature.getRule() != IImport.RULE_NONE) ? requiredFeature.getRule() : IImport.RULE_COMPATIBLE; >+ >+ switch (rule) { >+ case IImport.RULE_PERFECT: return feature.getVersionedIdentifier().getVersion().isPerfect( >+ requiredFeature.getVersionedIdentifier() >+ .getVersion()); >+ case IImport.RULE_EQUIVALENT: >+ return feature.getVersionedIdentifier().getVersion() >+ .isEquivalentTo( >+ requiredFeature.getVersionedIdentifier() >+ .getVersion()); >+ case IImport.RULE_COMPATIBLE: >+ return feature.getVersionedIdentifier().getVersion() >+ .isCompatibleWith( >+ requiredFeature.getVersionedIdentifier() >+ .getVersion()); >+ case IImport.RULE_GREATER_OR_EQUAL: >+ return feature.getVersionedIdentifier().getVersion() >+ .isGreaterOrEqualTo( >+ requiredFeature.getVersionedIdentifier() >+ .getVersion()); >+ } >+ >+ return false; >+ } else { >+ if ((requiredFeature.getKind() == IImport.KIND_PLUGIN)) { >+ return checkIfFeatureHasPlugin( requiredFeature, feature); >+ } >+ return false; >+ } >+ } >+ >+ private boolean checkIfFeatureHasPlugin(IImport requiredFeature, IFeature feature) { >+ >+ IPluginEntry[] plugins = feature.getPluginEntries(); >+ try { >+ List includedPlugins = getPluginEntriesFromIncludedFeatures(feature, new ArrayList(), new ArrayList()); >+ includedPlugins.addAll(Arrays.asList(plugins)); >+ plugins = (IPluginEntry[])includedPlugins.toArray( new IPluginEntry[includedPlugins.size()]); >+ } catch( CoreException ce) { >+ UpdateUI.logException(ce); >+ // ignore this plugins can not sutisfy requirement anyways >+ } >+ if (plugins == null) { > return false; > } >+ >+ for(int i = 0; i < plugins.length; i++) { >+ if (isMatch(plugins[i].getVersionedIdentifier(), requiredFeature.getVersionedIdentifier(), requiredFeature.getIdRule())) { >+ return true; >+ } >+ } >+ >+ return false; >+ } > >- int rule = (requiredFeature.getRule() != IImport.RULE_NONE) ? requiredFeature >- .getRule() >- : IImport.RULE_COMPATIBLE; >+ private List getPluginEntriesFromIncludedFeatures(IFeature feature, List plugins, List visitedFeatures) throws CoreException { >+ IIncludedFeatureReference[] iifr = feature.getIncludedFeatureReferences(); >+ for(int i = 0; i < iifr.length; i++) { >+ IFeature current = iifr[i].getFeature(new NullProgressMonitor()); >+ if (!visitedFeatures.contains(current)) { >+ IPluginEntry[] pluginEntries = current.getPluginEntries(); >+ plugins.addAll(Arrays.asList(pluginEntries)); >+ visitedFeatures.add(current); >+ getPluginEntriesFromIncludedFeatures(current, plugins, visitedFeatures); >+ } >+ } >+ >+ return plugins; >+ } > >+ // vid1 = feature >+ // vid2 = requiredFeature >+ private boolean isMatch( VersionedIdentifier vid1, VersionedIdentifier vid2, int rule) { >+ >+ if (!vid1.getIdentifier().equals(vid2.getIdentifier())) { >+ return false; >+ } >+ if ( vid2.getVersion().getMajorComponent() == 0 && vid2.getVersion().getMinorComponent() == 0 && vid2.getVersion().getServiceComponent() == 0 ) { >+ //version is ignored >+ return true; >+ } > switch (rule) { > case IImport.RULE_PERFECT: >- return feature.getFeature().getVersionedIdentifier().getVersion() >- .isPerfect( >- requiredFeature.getVersionedIdentifier() >- .getVersion()); >+ return vid2.getVersion().isPerfect(vid1.getVersion()); > case IImport.RULE_EQUIVALENT: >- return feature.getFeature().getVersionedIdentifier().getVersion() >- .isEquivalentTo( >- requiredFeature.getVersionedIdentifier() >- .getVersion()); >+ return vid2.getVersion().isEquivalentTo(vid1.getVersion()); > case IImport.RULE_COMPATIBLE: >- return feature.getFeature().getVersionedIdentifier().getVersion() >- .isCompatibleWith( >- requiredFeature.getVersionedIdentifier() >- .getVersion()); >+ return vid2.getVersion().isCompatibleWith(vid1.getVersion()); > case IImport.RULE_GREATER_OR_EQUAL: >- return feature.getFeature().getVersionedIdentifier().getVersion() >- .isGreaterOrEqualTo( >- requiredFeature.getVersionedIdentifier() >- .getVersion()); >+ return vid2.getVersion().isGreaterOrEqualTo(vid1.getVersion()); > } >- > return false; > } > >+ > public boolean isFeatureBetter(IInstallFeatureOperation feature, > IInstallFeatureOperation currentFeatureSelected) { > >@@ -1502,9 +1605,8 @@ > IImport requiredFeature, IInstallFeatureOperation feature, > IInstallFeatureOperation currentFeatureSelected) { > >- if (isFeatureGood(requiredFeature, feature) >- && isFeatureBetter(feature, currentFeatureSelected)) { >- return feature; >+ if (isFeatureGood(requiredFeature, feature.getFeature()) && isFeatureBetter(feature, currentFeatureSelected)) { >+ return feature; > } else { > return currentFeatureSelected; > } >#P org.eclipse.update.core >Index: src/org/eclipse/update/internal/core/UpdateManagerUtils.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.update.core/src/org/eclipse/update/internal/core/UpdateManagerUtils.java,v >retrieving revision 1.131 >diff -u -r1.131 UpdateManagerUtils.java >--- src/org/eclipse/update/internal/core/UpdateManagerUtils.java 26 Apr 2006 17:49:38 -0000 1.131 >+++ src/org/eclipse/update/internal/core/UpdateManagerUtils.java 4 May 2006 20:41:39 -0000 >@@ -621,7 +621,7 @@ > */ > public static int getMatchingRule(String rule) { > if (rule == null) >- return IImport.RULE_PERFECT; >+ return IImport.RULE_COMPATIBLE; > int ruleInt = ((Integer) table.get(rule)).intValue(); > if (ruleInt == IImport.RULE_NONE) > return IImport.RULE_PERFECT; >@@ -635,6 +635,9 @@ > * @since 2.0.2 > */ > public static int getMatchingIdRule(String rule) { >+ >+ if (rule == null) >+ return IImport.RULE_COMPATIBLE; > if (rule!=null && rule.equalsIgnoreCase("prefix")) //$NON-NLS-1$ > return IImport.RULE_PREFIX; > return IImport.RULE_PERFECT; >Index: src/org/eclipse/update/internal/operations/InstallOperation.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.update.core/src/org/eclipse/update/internal/operations/InstallOperation.java,v >retrieving revision 1.16 >diff -u -r1.16 InstallOperation.java >--- src/org/eclipse/update/internal/operations/InstallOperation.java 11 Apr 2006 15:47:10 -0000 1.16 >+++ src/org/eclipse/update/internal/operations/InstallOperation.java 4 May 2006 20:41:39 -0000 >@@ -26,6 +26,26 @@ > public class InstallOperation > extends FeatureOperation > implements IInstallFeatureOperation { >+ >+ public boolean equals(Object arg) { >+ if (arg == null) { >+ return false; >+ } >+ >+ if (!(arg instanceof InstallOperation)) { >+ return false; >+ } >+ >+ InstallOperation io = (InstallOperation)arg; >+ >+ return io.getFeature().getVersionedIdentifier().equals(this.getFeature().getVersionedIdentifier()); >+ } >+ >+ public int hashCode() { >+ // TODO Auto-generated method stub >+ return super.getFeature().hashCode(); >+ } >+ > private IFeatureReference[] optionalFeatures; > private IFeature[] unconfiguredOptionalFeatures; > private IVerificationListener verifier;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 138802
:
40327
| 40425