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 118802 Details for
Bug 227986
Avoid duplicated strings in Java model
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Proposed fix
227986.txt (text/plain), 4.82 KB, created by
Jerome Lanneluc
on 2008-11-26 10:43:15 EST
(
hide
)
Description:
Proposed fix
Filename:
MIME Type:
Creator:
Jerome Lanneluc
Created:
2008-11-26 10:43:15 EST
Size:
4.82 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jdt.core >Index: model/org/eclipse/jdt/internal/core/util/HashtableOfArrayToObject.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/HashtableOfArrayToObject.java,v >retrieving revision 1.7 >diff -u -r1.7 HashtableOfArrayToObject.java >--- model/org/eclipse/jdt/internal/core/util/HashtableOfArrayToObject.java 27 Jun 2008 16:03:57 -0000 1.7 >+++ model/org/eclipse/jdt/internal/core/util/HashtableOfArrayToObject.java 26 Nov 2008 15:41:51 -0000 >@@ -82,6 +82,21 @@ > return null; > } > >+ public int getIndex(Object[] key) { >+ int length = this.keyTable.length; >+ int index = hashCode(key) % length; >+ int keyLength = key.length; >+ Object[] currentKey; >+ while ((currentKey = this.keyTable[index]) != null) { >+ if (currentKey.length == keyLength && Util.equalArraysOrNull(currentKey, key)) >+ return index; >+ if (++index == length) { >+ index = 0; >+ } >+ } >+ return -1; >+ } >+ > public Object[] getKey(Object[] key, int keyLength) { > int length = this.keyTable.length; > int index = hashCode(key, keyLength) % length; >Index: model/org/eclipse/jdt/internal/core/NameLookup.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NameLookup.java,v >retrieving revision 1.121 >diff -u -r1.121 NameLookup.java >--- model/org/eclipse/jdt/internal/core/NameLookup.java 27 Jun 2008 16:03:51 -0000 1.121 >+++ model/org/eclipse/jdt/internal/core/NameLookup.java 26 Nov 2008 15:41:51 -0000 >@@ -350,8 +350,11 @@ > if (index != -1) { > cuName= cuName.substring(0, index); > } >- Object value = this.packageFragments.get(pkgName); >- if (value != null) { >+ int pkgIndex = this.packageFragments.getIndex(pkgName); >+ if (pkgIndex != -1) { >+ Object value = this.packageFragments.valueTable[pkgIndex]; >+ // reuse existing String[] >+ pkgName = (String[]) this.packageFragments.keyTable[pkgIndex]; > if (value instanceof PackageFragmentRoot) { > return findCompilationUnit(pkgName, cuName, (PackageFragmentRoot) value); > } else { >@@ -556,16 +559,19 @@ > return result; > } else { > String[] splittedName = Util.splitOn('.', name, 0, name.length()); >- Object value = this.packageFragments.get(splittedName); >- if (value == null) >+ int pkgIndex = this.packageFragments.getIndex(splittedName); >+ if (pkgIndex == -1) > return null; >+ Object value = this.packageFragments.valueTable[pkgIndex]; >+ // reuse existing String[] >+ String[] pkgName = (String[]) this.packageFragments.keyTable[pkgIndex]; > if (value instanceof PackageFragmentRoot) { >- return new IPackageFragment[] {((PackageFragmentRoot) value).getPackageFragment(splittedName)}; >+ return new IPackageFragment[] {((PackageFragmentRoot) value).getPackageFragment(pkgName)}; > } else { > IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) value; > IPackageFragment[] result = new IPackageFragment[roots.length]; > for (int i= 0; i < roots.length; i++) { >- result[i] = ((PackageFragmentRoot) roots[i]).getPackageFragment(splittedName); >+ result[i] = ((PackageFragmentRoot) roots[i]).getPackageFragment(pkgName); > } > return result; > } >@@ -900,17 +906,22 @@ > } > } else { > String[] splittedName = Util.splitOn('.', name, 0, name.length()); >- Object value = this.packageFragments.get(splittedName); >- if (value instanceof PackageFragmentRoot) { >- requestor.acceptPackageFragment(((PackageFragmentRoot) value).getPackageFragment(splittedName)); >- } else { >- IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) value; >- if (roots != null) { >- for (int i = 0, length = roots.length; i < length; i++) { >- if (requestor.isCanceled()) >- return; >- PackageFragmentRoot root = (PackageFragmentRoot) roots[i]; >- requestor.acceptPackageFragment(root.getPackageFragment(splittedName)); >+ int pkgIndex = this.packageFragments.getIndex(splittedName); >+ if (pkgIndex != -1) { >+ Object value = this.packageFragments.valueTable[pkgIndex]; >+ // reuse existing String[] >+ String[] pkgName = (String[]) this.packageFragments.keyTable[pkgIndex]; >+ if (value instanceof PackageFragmentRoot) { >+ requestor.acceptPackageFragment(((PackageFragmentRoot) value).getPackageFragment(pkgName)); >+ } else { >+ IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) value; >+ if (roots != null) { >+ for (int i = 0, length = roots.length; i < length; i++) { >+ if (requestor.isCanceled()) >+ return; >+ PackageFragmentRoot root = (PackageFragmentRoot) roots[i]; >+ requestor.acceptPackageFragment(root.getPackageFragment(pkgName)); >+ } > } > } > }
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 227986
: 118802