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.
This issue was reported manually by medeag. It already has 1 duplicates Build: NetBeans IDE 7.3 Beta (Build 201209232010) VM: Java HotSpot(TM) 64-Bit Server VM, 23.6-b02, Java(TM) SE Runtime Environment, 1.7.0_10-ea-b07 OS: Mac OS X User Comments: medeag: instering data into the table Stacktrace: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date at java.util.Date.compareTo(Date.java:129) at org.jdesktop.swingx.sort.DefaultSortController$ComparableComparator.compare(DefaultSortController.java:295) at javax.swing.DefaultRowSorter.compare(DefaultRowSorter.java:968) at javax.swing.DefaultRowSorter.access$100(DefaultRowSorter.java:112) at javax.swing.DefaultRowSorter$Row.compareTo(DefaultRowSorter.java:1376) at javax.swing.DefaultRowSorter$Row.compareTo(DefaultRowSorter.java:1366)
Created attachment 124900 [details] stacktrace
I'm sorry, I cannot reproduce. What database do you use? Columns of what types are in the table? The exception is thrown right after you click the "Insert Record(s) (Alt+I)" button? Thank you.
db mysql, the table was simple here is structure: CREATE TABLE my_table (id INT NOT NULL, test_date DATE, test VARCHAR(123) DEFAULT test , PRIMARY KEY (id)); that happened when i tried to sort by columns, but i can not reproduce it now
Created attachment 125099 [details] proposed patch v1 with unittest It is indeed reproducible: 1. create a table with a date column. 2. open insert dialog 3. mark the date column as the sort column 4. insert one record without doing a change 5. insert one record and change the value to a real date => The bug is triggered. I created a unittest, that also triggers the bug and patched the problem. The changes in InsertRecordDialog.java only change the name of the variable from jtable1 to the more sensible insertRecordTableUI. The real fix is in ResultSetJXTable with created a RowSorter, that catches errors in the comparators by falling back to string comparison if the default comparator fails.
Patch integrated as http://hg.netbeans.org/core-main/rev/38b758d03e6d Thank you very much!
Integrated into 'main-golden', will be available in build *201210030002* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress) Changeset: http://hg.netbeans.org/main-golden/rev/38b758d03e6d User: Jaroslav Havlin <jhavlin@netbeans.org> Log: #219011: ClassCastException: java.lang.String cannot be cast to java.util.Date
Dear Sir, Kindly help to resolve date binding with text field. dobField = new javax.swing.JTextField(); dobField.setEditable(false); dobField.setName("dobField"); // NOI18N org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding (org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.dob}"), dobField, org.jdesktop.beansbinding.BeanProperty.create("text")); binding.setSourceUnreadableValue(null); binding.setConverter(dateConverter); bindingGroup.addBinding(binding); binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), dobField, org.jdesktop.beansbinding.BeanProperty.create("enabled")); bindingGroup.addBinding(binding); // Code adding the component to the parent container - not shown here //dobField.setVisible(false); Converter dateConverter = new Converter<java.util.Date, String>() { @Override public String convertForward(java.util.Date value) { String s=""; try{ //s = value.toString(); //Date d=new Date(); //d=value; SimpleDateFormat f = new SimpleDateFormat("YYYY-MM-DD"); s=f.format(value); //s=f.format(d); //DateFormat df = DateFormat.getDateInstance(); // return df.format(value); } catch(ClassCastException e){} catch(Exception e){} return s; } @Override public java.util.Date convertReverse(String value) { try { DateFormat df = DateFormat.getDateInstance(); return df.parse(value); } catch (Exception e) { return Calendar.getInstance().getTime(); } } }; Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: Cannot cast java.util.Date to java.lang.String at java.lang.Class.cast(Class.java:3094) at org.jdesktop.beansbinding.Binding.convertForward(Binding.java:1312) at org.jdesktop.beansbinding.Binding.getSourceValueForTarget(Binding.java:844) at org.jdesktop.beansbinding.Binding.refreshUnmanaged(Binding.java:1222) at org.jdesktop.beansbinding.Binding.refresh(Binding.java:1207) at org.jdesktop.beansbinding.AutoBinding.tryRefreshThenSave(AutoBinding.java:162) at org.jdesktop.beansbinding.AutoBinding.sourceChangedImpl(AutoBinding.java:227) at org.jdesktop.beansbinding.Binding.sourceChanged(Binding.java:1411) at org.jdesktop.beansbinding.Binding.access$1200(Binding.java:38) at org.jdesktop.beansbinding.Binding$PSL.propertyStateChanged(Binding.java:1618) at org.jdesktop.beansbinding.PropertyHelper.firePropertyStateChange(PropertyHelper.java:212) at org.jdesktop.beansbinding.ELProperty.notifyListeners(ELProperty.java:688) at org.jdesktop.beansbinding.ELProperty.access$800(ELProperty.java:155) at org.jdesktop.beansbinding.ELProperty$SourceEntry.processSourceChanged(ELProperty.java:312) at org.jdesktop.beansbinding.ELProperty$SourceEntry.sourceChanged(ELProperty.java:326) at org.jdesktop.beansbinding.ELProperty$SourceEntry.propertyChange(ELProperty.java:333) at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263) at org.jdesktop.swingbinding.adapters.BeanAdapterBase.firePropertyChange(BeanAdapterBase.java:112) at org.jdesktop.swingbinding.adapters.JTableAdapterProvider$Adapter$Handler.tableSelectionChanged (JTableAdapterProvider.java:81) at org.jdesktop.swingbinding.adapters.JTableAdapterProvider$Adapter$Handler.valueChanged (JTableAdapterProvider.java:91) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211) at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:405) at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:415) at javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:459) at javax.swing.JTable.changeSelectionModel(JTable.java:2389) at javax.swing.JTable.changeSelection(JTable.java:2458) at javax.swing.plaf.basic.BasicTableUI$Handler.adjustSelection(BasicTableUI.java:1115) at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1038) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280) at java.awt.Component.processMouseEvent(Component.java:6502) at javax.swing.JComponent.processMouseEvent(JComponent.java:3320) at java.awt.Component.processEvent(Component.java:6270) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4861) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4489) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2719) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:694) at java.awt.EventQueue$3.run(EventQueue.java:692) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:708) at java.awt.EventQueue$4.run(EventQueue.java:706) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:705) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: Cannot cast java.util.Date to java.lang.String at java.lang.Class.cast(Class.java:3094) at org.jdesktop.beansbinding.Binding.convertForward(Binding.java:1312) at org.jdesktop.beansbinding.Binding.getSourceValueForTarget(Binding.java:844) at org.jdesktop.beansbinding.Binding.refreshUnmanaged(Binding.java:1222) at org.jdesktop.beansbinding.Binding.refresh(Binding.java:1207) at org.jdesktop.beansbinding.AutoBinding.tryRefreshThenSave(AutoBinding.java:162) at org.jdesktop.beansbinding.AutoBinding.sourceChangedImpl(AutoBinding.java:227) at org.jdesktop.beansbinding.Binding.sourceChanged(Binding.java:1411) at org.jdesktop.beansbinding.Binding.access$1200(Binding.java:38) at org.jdesktop.beansbinding.Binding$PSL.propertyStateChanged(Binding.java:1618) at org.jdesktop.beansbinding.PropertyHelper.firePropertyStateChange(PropertyHelper.java:212) at org.jdesktop.beansbinding.ELProperty.notifyListeners(ELProperty.java:688) at org.jdesktop.beansbinding.ELProperty.access$800(ELProperty.java:155) at org.jdesktop.beansbinding.ELProperty$SourceEntry.processSourceChanged(ELProperty.java:312) at org.jdesktop.beansbinding.ELProperty$SourceEntry.sourceChanged(ELProperty.java:326) at org.jdesktop.beansbinding.ELProperty$SourceEntry.propertyChange(ELProperty.java:333) at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263) at org.jdesktop.swingbinding.adapters.BeanAdapterBase.firePropertyChange(BeanAdapterBase.java:112) at org.jdesktop.swingbinding.adapters.JTableAdapterProvider$Adapter$Handler.tableSelectionChanged (JTableAdapterProvider.java:81) at org.jdesktop.swingbinding.adapters.JTableAdapterProvider$Adapter$Handler.valueChanged (JTableAdapterProvider.java:91) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211) at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:405) at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:415) at javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:459) at javax.swing.JTable.changeSelectionModel(JTable.java:2389) at javax.swing.JTable.changeSelection(JTable.java:2458) at javax.swing.plaf.basic.BasicTableUI$Handler.adjustSelection(BasicTableUI.java:1115) at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1038) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280) at java.awt.Component.processMouseEvent(Component.java:6502) at javax.swing.JComponent.processMouseEvent(JComponent.java:3320) at java.awt.Component.processEvent(Component.java:6270) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4861) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4489) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2719) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:694) at java.awt.EventQueue$3.run(EventQueue.java:692) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:708) at java.awt.EventQueue$4.run(EventQueue.java:706) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:705) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
> Dear Sir, > Kindly help to resolve date binding with text field. I'm sorry, this question seems completely unrelated to the bug. You should rather ask in a Java focused mailing list or forum (and preferably attach a simple test case for the problem, e.g. zipped sample project).