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.
We have just talked with Jan about his attempt to make hidden, yet flexible API in the refactoring module by putting a Hashtable into Lookup. He said that his goal was to make "hidden API not visible to others". Well, Hashtable is not the best way to solve this. As it is a public interface in java, anyone can just to lookup.lookup(Map.class) and get it, read and manipulate its keys. The proper "hidden" API should be created by defining a private type and having getters and setters on it (or in the simplest case just one getter): public interface PrivateAPIInNonPublicPackage { public Hashtable getData(); } this prevents other modules from easily misusing the hashtable, as they would need a reflection to obtain it. I would suggest this or similar change to be made, the hashtable is too visible to be called "hidden", imho.
Will try to fix for 6.0
Created attachment 49981 [details] Proposed solution
I propose to replace HashMap in favor of brand new API class ExplorerContext (attached). If there are no objections, I will implement this change by Friday. Sonali, please speak up, if you have any problems with this solution.
I am ok with the change
reassigning back
Checking in api/nbproject/project.properties; /cvs/refactoring/api/nbproject/project.properties,v <-- project.properties new revision: 1.5; previous revision: 1.4 done RCS file: /cvs/refactoring/api/src/org/netbeans/modules/refactoring/api/ui/ExplorerContext.java,v done Checking in api/src/org/netbeans/modules/refactoring/api/ui/ExplorerContext.java; /cvs/refactoring/api/src/org/netbeans/modules/refactoring/api/ui/ExplorerContext.java,v <-- ExplorerContext.java initial revision: 1.1 done Checking in api/src/org/netbeans/modules/refactoring/impl/FolderRenameHandlerImpl.java; /cvs/refactoring/api/src/org/netbeans/modules/refactoring/impl/FolderRenameHandlerImpl.java,v <-- FolderRenameHandlerImpl.java new revision: 1.3; previous revision: 1.2 done Checking in api/src/org/netbeans/modules/refactoring/impl/ClipboardConvertor.java; /cvs/refactoring/api/src/org/netbeans/modules/refactoring/impl/ClipboardConvertor.java,v <-- ClipboardConvertor.java new revision: 1.11; previous revision: 1.10 done RCS file: /cvs/refactoring/api/apichanges.xml,v done Checking in api/apichanges.xml; /cvs/refactoring/api/apichanges.xml,v <-- apichanges.xml initial revision: 1.1 done Checking in api/manifest.mf; /cvs/refactoring/api/manifest.mf,v <-- manifest.mf new revision: 1.5; previous revision: 1.4 done Checking in java/src/org/netbeans/modules/refactoring/java/ui/JavaRefactoringActionsProvider.java; /cvs/refactoring/java/src/org/netbeans/modules/refactoring/java/ui/JavaRefactoringActionsProvider.java,v <-- JavaRefactoringActionsProvider.java new revision: 1.20; previous revision: 1.19 done Checking in java/src/org/netbeans/modules/refactoring/java/ui/RefactoringActionsProvider.java; /cvs/refactoring/java/src/org/netbeans/modules/refactoring/java/ui/RefactoringActionsProvider.java,v <-- RefactoringActionsProvider.java new revision: 1.49; previous revision: 1.48 done Checking in java/src/org/netbeans/modules/refactoring/java/RenameHandlerImpl.java; /cvs/refactoring/java/src/org/netbeans/modules/refactoring/java/RenameHandlerImpl.java,v <-- RenameHandlerImpl.java new revision: 1.3; previous revision: 1.2 done Checking in java/src/org/netbeans/modules/refactoring/java/PackageRenameHandlerImpl.java; /cvs/refactoring/java/src/org/netbeans/modules/refactoring/java/PackageRenameHandlerImpl.java,v <-- PackageRenameHandlerImpl.java new revision: 1.5; previous revision: 1.4 done Checking in api/src/org/netbeans/modules/refactoring/spi/impl/SafeDeleteAction.java; /cvs/refactoring/api/src/org/netbeans/modules/refactoring/spi/impl/SafeDeleteAction.java,v <-- SafeDeleteAction.java new revision: 1.8; previous revision: 1.7 done Checking in api/src/org/netbeans/modules/refactoring/spi/impl/RefactoringGlobalAction.java; /cvs/refactoring/api/src/org/netbeans/modules/refactoring/spi/impl/RefactoringGlobalAction.java,v <-- RefactoringGlobalAction.java new revision: 1.10; previous revision: 1.9 done
Hmmm..visualweb is also a client of this API. I must have missed this but I was not aware of this change. I guess I need to monitor the apichanges more closely.