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 130860 Details for
Bug 233643
API builder performance bad for incremental build
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
update
233643.patch (text/plain), 9.96 KB, created by
Michael Rennie
on 2009-04-03 13:18:06 EDT
(
hide
)
Description:
update
Filename:
MIME Type:
Creator:
Michael Rennie
Created:
2009-04-03 13:18:06 EDT
Size:
9.96 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.pde.api.tools >Index: src/org/eclipse/pde/api/tools/internal/builder/IncrementalApiBuilder.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/IncrementalApiBuilder.java,v >retrieving revision 1.3 >diff -u -r1.3 IncrementalApiBuilder.java >--- src/org/eclipse/pde/api/tools/internal/builder/IncrementalApiBuilder.java 2 Apr 2009 18:38:41 -0000 1.3 >+++ src/org/eclipse/pde/api/tools/internal/builder/IncrementalApiBuilder.java 3 Apr 2009 17:16:58 -0000 >@@ -349,12 +349,7 @@ > if(type == null) { > continue; > } >- this.builder.updateMonitor(monitor, 0); >- this.builder.cleanupUnsupportedTagMarkers(file); >- this.builder.updateMonitor(monitor, 0); >- this.builder.cleanupCompatibilityMarkers(file); >- this.builder.updateMonitor(monitor, 0); >- this.builder.cleanupUsageMarkers(file); >+ this.builder.cleanupMarkers(file); > this.builder.updateMonitor(monitor, 0); > cnames.add(type.getFullyQualifiedName()); > try { >@@ -376,15 +371,31 @@ > IResource resource = project.findMember(ApiAnalysisBuilder.MANIFEST_PATH); > if (resource != null) { > try { >+ //TODO we should find a way to cache markers to type names, that way to get all >+ //the manifest markers for a given type name is time of O(1) > IMarker[] markers = resource.findMarkers(IApiMarkerConstants.COMPATIBILITY_PROBLEM_MARKER, false, IResource.DEPTH_ZERO); >+ String tname = null; > for (int i = 0; i < markers.length; i++) { >- if(tnames.contains(Util.getTypeNameFromMarker(markers[i]))) { >+ tname = Util.getTypeNameFromMarker(markers[i]); >+ if(tnames.contains(tname) || cnames.contains(tname)) { > markers[i].delete(); > } > } >+ //TODO we should find a way to cache markers to type names, that way to get all >+ //the manifest markers for a given type name is time of O(1) > markers = resource.findMarkers(IApiMarkerConstants.SINCE_TAGS_PROBLEM_MARKER, false, IResource.DEPTH_ZERO); > for (int i = 0; i < markers.length; i++) { >- if(tnames.contains(Util.getTypeNameFromMarker(markers[i]))) { >+ tname = Util.getTypeNameFromMarker(markers[i]); >+ if(tnames.contains(tname) || cnames.contains(tname)) { >+ markers[i].delete(); >+ } >+ } >+ //TODO we should find a way to cache markers to type names, that way to get all >+ //the manifest markers for a given type name is time of O(1) >+ markers = resource.findMarkers(IApiMarkerConstants.UNUSED_FILTER_PROBLEM_MARKER, false, IResource.DEPTH_ZERO); >+ for (int i = 0; i < markers.length; i++) { >+ tname = Util.getTypeNameFromMarker(markers[i]); >+ if(tnames.contains(tname) || cnames.contains(tname)) { > markers[i].delete(); > } > } >Index: src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java,v >retrieving revision 1.92 >diff -u -r1.92 BaseApiAnalyzer.java >--- src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java 31 Mar 2009 13:21:02 -0000 1.92 >+++ src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java 3 Apr 2009 17:16:58 -0000 >@@ -27,7 +27,6 @@ > import java.util.jar.JarFile; > > import org.eclipse.core.resources.IFile; >-import org.eclipse.core.resources.IMarker; > import org.eclipse.core.resources.IProject; > import org.eclipse.core.resources.IResource; > import org.eclipse.core.runtime.CoreException; >@@ -292,26 +291,30 @@ > if(typenames != null || changedTypes != null) { > //incremental > Set typeNamesSet = null; >+ IResource resource = null; > if (typenames != null) { > typeNamesSet = new HashSet(); > for (int i = 0; i < typenames.length; i++) { >- String typeName = typenames[i]; >- typeNamesSet.add(typeName); >- checkUnusedProblemFilters(store, project, typeName); >+ typeNamesSet.add(typenames[i]); >+ resource = Util.getResource(project, fJavaProject.findType(typenames[i])); >+ if(resource != null) { >+ createUnusedApiFilterProblems(store.getUnusedFilters(resource, typenames[i])); >+ } > } > } > if (changedTypes != null) { > // check the ones not already checked as part of type names check > for (int i = 0; i < changedTypes.length; i++) { >- String typeName = changedTypes[i]; >- if (typeNamesSet == null || !typeNamesSet.remove(typeName)) { >- checkUnusedProblemFilters(store, project, typeName); >+ if (typeNamesSet == null || !typeNamesSet.remove(changedTypes[i])) { >+ resource = Util.getResource(project, fJavaProject.findType(changedTypes[i])); >+ if(resource != null) { >+ createUnusedApiFilterProblems(store.getUnusedFilters(resource, changedTypes[i])); >+ } > } > } > } > } else { > //full build, clean up all old markers >- project.deleteMarkers(IApiMarkerConstants.UNUSED_FILTER_PROBLEM_MARKER, false, IResource.DEPTH_INFINITE); > createUnusedApiFilterProblems(store.getUnusedFilters(null, null)); > } > } >@@ -323,49 +326,6 @@ > } > } > >- private void checkUnusedProblemFilters(ApiFilterStore store, >- IProject project, String typeName) throws JavaModelException, >- CoreException { >- IType element = fJavaProject.findType(typeName); >- IResource resource = Util.getResource(project, element); >- if(resource != null) { >- if (!Util.isManifest(resource.getProjectRelativePath())) { >- resource.deleteMarkers(IApiMarkerConstants.UNUSED_FILTER_PROBLEM_MARKER, false, IResource.DEPTH_INFINITE); >- IResource manifestFile = project.findMember(Util.MANIFEST_PROJECT_RELATIVE_PATH); >- if (manifestFile != null) { >- try { >- IMarker[] markers = manifestFile.findMarkers(IApiMarkerConstants.UNUSED_FILTER_PROBLEM_MARKER, false, IResource.DEPTH_ZERO); >- loop: for (int j = 0, max = markers.length; j < max; j++) { >- IMarker marker = markers[j]; >- String typeNameFromMarker = Util.getTypeNameFromMarker(marker); >- if (typeName.equals(typeNameFromMarker)) { >- marker.delete(); >- continue loop; >- } >- } >- } catch (CoreException e) { >- ApiPlugin.log(e.getStatus()); >- } >- } >- } else { >- try { >- IMarker[] markers = resource.findMarkers(IApiMarkerConstants.UNUSED_FILTER_PROBLEM_MARKER, false, IResource.DEPTH_ZERO); >- loop: for (int j = 0, max = markers.length; j < max; j++) { >- IMarker marker = markers[j]; >- String typeNameFromMarker = Util.getTypeNameFromMarker(marker); >- if (typeName.equals(typeNameFromMarker)) { >- marker.delete(); >- continue loop; >- } >- } >- } catch (CoreException e) { >- ApiPlugin.log(e.getStatus()); >- } >- } >- createUnusedApiFilterProblems(store.getUnusedFilters(resource, typeName)); >- } >- } >- > /** > * Creates a new unused {@link IApiProblemFilter} problem > * @param filters the filters to create the problems for >@@ -376,9 +336,10 @@ > return; > } > IApiProblemFilter filter = null; >+ IApiProblem problem = null; > for (int i = 0; i < filters.length; i++) { > filter = filters[i]; >- IApiProblem problem = filter.getUnderlyingProblem(); >+ problem = filter.getUnderlyingProblem(); > if(problem == null) { > return; > } >Index: src/org/eclipse/pde/api/tools/internal/builder/ApiAnalysisBuilder.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ApiAnalysisBuilder.java,v >retrieving revision 1.98 >diff -u -r1.98 ApiAnalysisBuilder.java >--- src/org/eclipse/pde/api/tools/internal/builder/ApiAnalysisBuilder.java 31 Mar 2009 13:21:02 -0000 1.98 >+++ src/org/eclipse/pde/api/tools/internal/builder/ApiAnalysisBuilder.java 3 Apr 2009 17:16:58 -0000 >@@ -128,6 +128,7 @@ > * @param resource > */ > void cleanupMarkers(IResource resource) { >+ cleanUnusedFilterMarkers(resource); > cleanupUsageMarkers(resource); > cleanupCompatibilityMarkers(resource); > cleanupUnsupportedTagMarkers(resource); >@@ -183,6 +184,21 @@ > } > } > >+ /** >+ * Cleans up the unused API filter problems from the given resource >+ * @param resource >+ */ >+ void cleanUnusedFilterMarkers(IResource resource) { >+ try { >+ if(resource != null && resource.isAccessible()) { >+ resource.deleteMarkers(IApiMarkerConstants.UNUSED_FILTER_PROBLEM_MARKER, false, IResource.DEPTH_INFINITE); >+ } >+ } >+ catch(CoreException ce) { >+ ApiPlugin.log(ce.getStatus()); >+ } >+ } >+ > /* (non-Javadoc) > * @see org.eclipse.core.resources.IncrementalProjectBuilder#build(int, java.util.Map, org.eclipse.core.runtime.IProgressMonitor) > */ >#P org.eclipse.pde.api.tools.tests >Index: src/org/eclipse/pde/api/tools/builder/tests/usage/UnusedApiProblemFilterTests.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/UnusedApiProblemFilterTests.java,v >retrieving revision 1.12 >diff -u -r1.12 UnusedApiProblemFilterTests.java >--- src/org/eclipse/pde/api/tools/builder/tests/usage/UnusedApiProblemFilterTests.java 28 Mar 2009 17:50:02 -0000 1.12 >+++ src/org/eclipse/pde/api/tools/builder/tests/usage/UnusedApiProblemFilterTests.java 3 Apr 2009 17:16:59 -0000 >@@ -209,13 +209,13 @@ > inc); > } > >-// public void testUnusedFilter2F() throws Exception { >-// x2(false); >-// } >-// >-// public void testUnusedFilter2I() throws Exception { >-// x2(true); >-// } >+ public void testUnusedFilter2F() throws Exception { >+ x2(false); >+ } >+ >+ public void testUnusedFilter2I() throws Exception { >+ x2(true); >+ } > > /** > * Tests that there is no problem reported for a compilation unit that has been deleted, which has an api
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 233643
:
101805
|
126467
|
126895
|
127856
|
130342
|
130743
|
130860
|
131061
|
153351
|
155857