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 219011 - ClassCastException: java.lang.String cannot be cast to java.util.Date
Summary: ClassCastException: java.lang.String cannot be cast to java.util.Date
Status: RESOLVED FIXED
Alias: None
Product: db
Classification: Unclassified
Component: Code (show other bugs)
Version: 7.3
Hardware: All All
: P3 normal (vote)
Assignee: Jaroslav Havlin
URL:
Keywords: NETFIX
Depends on:
Blocks:
 
Reported: 2012-09-25 17:47 UTC by medeag
Modified: 2014-07-16 11:38 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Exception Reporter: 192755


Attachments
stacktrace (6.72 KB, text/plain)
2012-09-25 17:47 UTC, medeag
Details
proposed patch v1 with unittest (26.76 KB, patch)
2012-09-29 13:17 UTC, matthias42
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description medeag 2012-09-25 17:47:44 UTC
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)
Comment 1 medeag 2012-09-25 17:47:47 UTC
Created attachment 124900 [details]
stacktrace
Comment 2 Jaroslav Havlin 2012-09-27 13:25:22 UTC
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.
Comment 3 medeag 2012-09-27 16:57:18 UTC
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
Comment 4 matthias42 2012-09-29 13:17:52 UTC
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.
Comment 5 Jaroslav Havlin 2012-10-02 09:46:51 UTC
Patch integrated as http://hg.netbeans.org/core-main/rev/38b758d03e6d

Thank you very much!
Comment 6 Quality Engineering 2012-10-03 02:40:45 UTC
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
Comment 7 dkavithavijay 2014-07-15 20:03:53 UTC
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)
Comment 8 Jaroslav Havlin 2014-07-16 11:38:56 UTC
> 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).