This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 99653 - Enhance Diff API
Summary: Enhance Diff API
Status: RESOLVED FIXED
Alias: None
Product: utilities
Classification: Unclassified
Component: Diff (show other bugs)
Version: 6.x
Hardware: All All
: P1 blocker (vote)
Assignee: diff-issues@utilities
URL:
Keywords: API_REVIEW_FAST
Depends on:
Blocks: 93029
  Show dependency tree
 
Reported: 2007-04-02 09:46 UTC by Maros Sandor
Modified: 2007-04-17 12:27 UTC (History)
0 users

See Also:
Issue Type: TASK
Exception Reporter:


Attachments
Diff changes (3.08 KB, text/plain)
2007-04-02 09:47 UTC, Maros Sandor
Details
DiffController.java (4.60 KB, text/plain)
2007-04-02 09:48 UTC, Maros Sandor
Details
New API and SPI classes (5.25 KB, application/octet-stream)
2007-04-10 15:03 UTC, Maros Sandor
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Maros Sandor 2007-04-02 09:46:23 UTC
Recent requirements from refactoring team and introduction of editable diff
views requires a slight enhanccments in the API. I am proposing to deprecate
existing DiffView and create a new class DiffController. All diffs are attached
to the issue. New class will provide more features (mainly navigation via
setLcoation() and allow easier future extensibility (is an abstract class).
Comment 1 Maros Sandor 2007-04-02 09:47:18 UTC
Created attachment 40244 [details]
Diff changes
Comment 2 Maros Sandor 2007-04-02 09:48:00 UTC
Created attachment 40245 [details]
DiffController.java
Comment 3 Jaroslav Tulach 2007-04-05 15:58:52 UTC
Y01 Separate API from SPI. As far as I know the new DiffController is needed  
due to inability to enhance DiffView - this is because the DiffView is used  
both for implementors, as well as users of the API. So please learn from this  
and create two classes:   
  
public final class org.nb.api.diff.DiffController { ... }  
  
and second   
  
public interface org.nb.spi.diff.DiffControlerProvider /* or DiffView2, etc.*/  
  
that way you will be able to add new methods into DiffController in future.  
  
Y02 Tests.  
  
Y03 I'd like the new API to work even with old providers. Even if people 
register just DiffView the users of the API will be able to get DiffController 
and manipulate it. 
Comment 4 Maros Sandor 2007-04-10 15:02:32 UTC
Y01: I separated API and SPI, DiffController is an API now and
DiffControllerImpl is an SPI (along with its DiffControllerProvider)

Y03: DiffController now provides a bridge to a default DiffView if there is no
registered DiffControllerProvider

Since the new version no longer modifies any existing APIs, I am just attaching
new files. I'll address Y02 once the API is approved.
Comment 5 Maros Sandor 2007-04-10 15:03:54 UTC
Created attachment 40683 [details]
New API and SPI classes
Comment 6 Maros Sandor 2007-04-17 12:27:18 UTC
Integrated into trunk.

/shared/data/ccvs/repository/diff/nbproject/project.properties,v  <-- 
project.properties
new revision: 1.12; previous revision: 1.11
/shared/data/ccvs/repository/diff/src/org/netbeans/api/diff/DiffController.java,v
 <--  DiffController.java
initial revision: 1.1
/shared/data/ccvs/repository/diff/src/org/netbeans/spi/diff/DiffControllerProvider.java,v
 <--  DiffControllerProvider.java
initial revision: 1.1
/shared/data/ccvs/repository/diff/src/org/netbeans/spi/diff/DiffControllerImpl.java,v
 <--  DiffControllerImpl.java
initial revision: 1.1
/shared/data/ccvs/repository/diff/src/META-INF/services/org.netbeans.spi.diff.DiffControllerProvider,v
 <--  org.netbeans.spi.diff.DiffControllerProvider
initial revision: 1.1
/shared/data/ccvs/repository/diff/src/org/netbeans/modules/diff/builtin/DefaultDiffControllerProvider.java,v
 <--  DefaultDiffControllerProvider.java
initial revision: 1.1
/shared/data/ccvs/repository/diff/test/unit/src/org/netbeans/modules/diff/DiffControllerTest.java,v
 <--  DiffControllerTest.java
initial revision: 1.1
/shared/data/ccvs/repository/diff/api/doc/changes/apichanges.xml,v  <-- 
apichanges.xml
new revision: 1.11; previous revision: 1.10