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.
APIChangeTest Report Base version: 1.13 Tested version: 1.15 Missing Classes --------------- org.netbeans.spi.viewmodel.Models$TreeFeatures: class public static final org.netbeans.spi.viewmodel.Models$TreeFeatures Missing Superclasses or Superinterfaces --------------------------------------- org.netbeans.spi.viewmodel.Models$TreeFeatures: superclass java.lang.Object Missing Methods --------------- org.netbeans.spi.viewmodel.Models$TreeFeatures: method protected native java.lang.Object java.lang.Object.clone() throws java.lang.CloneNotSupportedException org.netbeans.spi.viewmodel.Models$TreeFeatures: method public boolean java.lang.Object.equals(java.lang.Object) org.netbeans.spi.viewmodel.Models$TreeFeatures: method protected void java.lang.Object.finalize() throws java.lang.Throwable org.netbeans.spi.viewmodel.Models$TreeFeatures: method public native final java.lang.Class java.lang.Object.getClass() org.netbeans.spi.viewmodel.Models$TreeFeatures: method public native int java.lang.Object.hashCode() org.netbeans.spi.viewmodel.Models$TreeFeatures: method public native final void java.lang.Object.notify() org.netbeans.spi.viewmodel.Models$TreeFeatures: method public native final void java.lang.Object.notifyAll() org.netbeans.spi.viewmodel.Models$TreeFeatures: method public java.lang.String java.lang.Object.toString() org.netbeans.spi.viewmodel.Models$TreeFeatures: method public final void java.lang.Object.wait() throws java.lang.InterruptedException org.netbeans.spi.viewmodel.Models$TreeFeatures: method public native final void java.lang.Object.wait(long) throws java.lang.InterruptedException org.netbeans.spi.viewmodel.Models$TreeFeatures: method public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException Incompatible change: Class is not protected in the new implementation --------------------------------------------------------------------- org.netbeans.spi.viewmodel.Models$TreeFeatures: class public static final org.netbeans.spi.viewmodel.Models$TreeFeatures org.netbeans.spi.viewmodel.Models$TreeFeatures: class public static abstract interface org.netbeans.spi.viewmodel.Models$TreeFeatures Incompatible change: Class is interface in the new implementation ----------------------------------------------------------------- org.netbeans.spi.viewmodel.Models$TreeFeatures: method public void org.netbeans.spi.viewmodel.Models$TreeFeatures.collapseNode(java.lang.Object) org.netbeans.spi.viewmodel.Models$TreeFeatures: method public void org.netbeans.spi.viewmodel.Models$TreeFeatures.expandNode(java.lang.Object) org.netbeans.spi.viewmodel.Models$TreeFeatures: method public boolean org.netbeans.spi.viewmodel.Models$TreeFeatures.isExpanded(java.lang.Object)
I'll change the TreeFeatures back to class. This change was source compatible, but it looks like we need binary compatibility....
changeset: 82719:82ce0635a2aa http://hg.netbeans.org/main/rev/82ce0635a2aa Hopefully the test will be O.K. now.
Yarda, a success for your infrastructure? http://deadlock.netbeans.org/hudson/job/trunk/2151/testReport/org.netbeans.spi/viewmodel/check/ Note that there was also a failure in http://deadlock.netbeans.org/hudson/job/trunk/2151/testReport/org.netbeans.test.ide/IDEValidation/testDebugging/ java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:1680) at java.awt.Component.getLocationOnScreen(Component.java:1654) at javax.swing.JPopupMenu.show(JPopupMenu.java:945) at org.openide.explorer.view.TreeView.createPopup(TreeView.java:894)
The IllegalComponentStateException should have been already fixed before the API change. I'm waiting for the result of this continuous build...
The new error does not make much sense to me. IMHO the change is O.K. now from the compatibility point of view. APIChangeTest Report Base version: 1.13 Tested version: 1.15 Missing Classes --------------- org.netbeans.spi.viewmodel.Models$TreeFeatures: class public static final org.netbeans.spi.viewmodel.Models$TreeFeatures Incompatible change: Class is not protected in the new implementation --------------------------------------------------------------------- org.netbeans.spi.viewmodel.Models$TreeFeatures: class public static final org.netbeans.spi.viewmodel.Models$TreeFeatures org.netbeans.spi.viewmodel.Models$TreeFeatures: class public static abstract org.netbeans.spi.viewmodel.Models$TreeFeatures Incompatible change: Class is interface in the new implementation ----------------------------------------------------------------- org.netbeans.spi.viewmodel.Models$TreeFeatures: method public void org.netbeans.spi.viewmodel.Models$TreeFeatures.collapseNode(java.lang.Object) org.netbeans.spi.viewmodel.Models$TreeFeatures: method public void org.netbeans.spi.viewmodel.Models$TreeFeatures.expandNode(java.lang.Object) org.netbeans.spi.viewmodel.Models$TreeFeatures: method public boolean org.netbeans.spi.viewmodel.Models$TreeFeatures.isExpanded(java.lang.Object)
I would suggest you assign a P1 bug to jtulach (nbbuild component) and describe the exact signature change you made in the class. It looks to me like you went from public static final class TreeFeatures { private TreeFeatures(...) {...} public boolean isExpanded(Object) {...} // ... } to (Apr 15) public interface TreeFeatures { boolean isExpanded(Object); // ... } to (2 hours ago) public static abstract class TreeFeatures { /*implicit*/public TreeFeatures() {} public abstract boolean isExpanded(Object); // ... }
Integrated into 'main-golden', available in NB_Trunk_Production #238 build Changeset: http://hg.netbeans.org/main/rev/82ce0635a2aa User: mentlicher@netbeans.org Log: #136472 - TreeFeatures is changed back to class to keep binary compatibility.
test still failed
Created attachment 62401 [details] The final diff of TreeFeatures class
Yarda, can you please evaluate the test failure? I've attached the diff of TreeFeatures.
Probably sigtest is too dumb to realize that making a method abstract is compatible so long as there were no accessible constructors before. A short-term workaround might be public static /*abstract*/ class TreeFeatures { public /*abstract*/ boolean isExpanded(Object) { throw new IllegalStateException("must be implemented!"); } // ... }
f7a652ab9c88: Allowing changing final class to abstract with abstract methods. Thanks for spotting this error in the api check infrastructure and sorry for the amount of failed builds. It took me a while to realize that the error is not the class to interface change, but real failure in the infrastructure.
verified