XNap TODOs (sorted by priority)

See xnap3/TODO in cvs for more todos in the current development
branch. 

RELEASE CRITICAL

THIS RELEASE

NEXT RELEASE

TOFIX

* Update transfer table after AutoDownloadEditorDialog has modified
  filename
* Don't allow AutoDownloadEditorDialog to work for completed downloads
* Update server table after server properties were modified
* Remove files from search tree when removed from repository
* OpenNap: shared files range in server object is not updated if elements
   are added to repository after connecting
* Time Left doesn\'t reset properly after stalled d/l or u/l resumes (?)

UNRESOLVED EXCEPTIONS

* don't know where
java.lang.NullPointerException
        at
xnap.plugin.nap.net.msg.MessageHandler.handle(MessageHandler.java:127)
        at xnap.plugin.nap.net.Server.run(Server.java:648)
        at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
        at
xnap.plugin.nap.net.msg.MessageHandler.handle(MessageHandler.java:127)
        at xnap.plugin.nap.net.Server.run(Server.java:648)
        at java.lang.Thread.run(Unknown Source)

* don't know where
Exception occurred during event dispatching:
java.lang.IllegalArgumentException: component not found in tabbed pane
        at javax.swing.JTabbedPane.setSelectedComponent(Unknown Source)
        at
xnap.gui.ToggableIconPane.setSelectedComponent(ToggableIconPane.java:213)
        at
xnap.gui.ToggableIconPane.setSelectedComponent(ToggableIconPane.java:207)
        at
xnap.gui.XNapFrame$ViewActionListener.actionPerformed(XNapFrame.java:1059)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown
Source)
        at
javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknown
Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown
Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.AbstractButton.doClick(Unknown Source)
        at
javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(Unknown
Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown
Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown
Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown
Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown
Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

* delete share
java.lang.NullPointerException
        at xnap.gui.DirectoryList.valueChanged(DirectoryList.java:91)
        at javax.swing.JList.fireSelectionValueChanged(JList.java:1318)
        at javax.swing.JList$ListSelectionHandler.valueChanged(JList.java:1332)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:187)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:214)
        at javax.swing.DefaultListSelectionModel.removeIndexInterval(DefaultListSelectionModel.java:544)
        at javax.swing.plaf.basic.BasicListUI$ListDataHandler.intervalRemoved(BasicListUI.java:1560)
        at javax.swing.AbstractListModel.fireIntervalRemoved(AbstractListModel.java:160)
        at javax.swing.DefaultListModel.removeElement(DefaultListModel.java:364)
        at xnap.gui.DirectoryList$RemoveAction.actionPerformed(DirectoryList.java:129)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1767)
        at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1820)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:419)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:258)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:227)
        at java.awt.Component.processMouseEvent(Component.java:5021)
        at java.awt.Component.processEvent(Component.java:4818)
        at java.awt.Container.processEvent(Container.java:1380)
        at java.awt.Component.dispatchEventImpl(Component.java:3526)
        at java.awt.Container.dispatchEventImpl(Container.java:1437)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3214)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2929)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2859)
        at java.awt.Container.dispatchEventImpl(Container.java:1423)
        at java.awt.Window.dispatchEventImpl(Window.java:1566)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:445)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:190)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:144)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:130)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)


* happened quite often when switching chat panels, seems Kunstoff related.

java.lang.NullPointerException
	at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:48)
	at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:715)
	at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:2782)
	at sun.awt.image.ImageRepresentation.drawToBufImage(ImageRepresentation.java:726)
	at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:722)
	at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:2782)
	at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:2772)
	at javax.swing.ImageIcon.paintIcon(ImageIcon.java:322)
	at javax.swing.plaf.basic.BasicButtonUI.paintIcon(BasicButtonUI.java:306)
	at javax.swing.plaf.basic.BasicButtonUI.paint(BasicButtonUI.java:248)
	at com.incors.plaf.kunststoff.KunststoffButtonUI.paint(KunststoffButtonUI.java:21)
	at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)
	at javax.swing.JComponent.paintComponent(JComponent.java:537)
	at javax.swing.JComponent.paint(JComponent.java:804)
	at javax.swing.JComponent.paintChildren(JComponent.java:643)
	at javax.swing.JComponent.paint(JComponent.java:813)
	at javax.swing.JComponent.paintChildren(JComponent.java:643)
	at javax.swing.JComponent.paint(JComponent.java:813)
	at javax.swing.JComponent.paintChildren(JComponent.java:643)
	at javax.swing.JComponent.paint(JComponent.java:813)
	at javax.swing.JLayeredPane.paint(JLayeredPane.java:552)
	at javax.swing.JComponent.paintChildren(JComponent.java:643)
	at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4742)
	at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4688)
	at javax.swing.JComponent.paint(JComponent.java:794)
	at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
	at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
	at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
	at java.awt.Container.paint(Container.java:1268)
	at sun.awt.RepaintArea.paint(RepaintArea.java:180)
	at sun.awt.motif.MComponentPeer.handleEvent(MComponentPeer.java:339)
	at java.awt.Component.dispatchEventImpl(Component.java:3586)
	at java.awt.Container.dispatchEventImpl(Container.java:1582)
	at java.awt.Window.dispatchEventImpl(Window.java:1581)
	at java.awt.Component.dispatchEvent(Component.java:3367)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:445)

* search
java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.next(HashMap.java:736)
        at xnap.io.Repository.search(Repository.java:160)
        at xnap.plugin.nap.util.NapFileHelper.getRepositoryFile(NapFileHelper.java:101)
        at xnap.plugin.nap.net.msg.server.UploadRequestMessage.received(UploadRequestMessage.java:83)
        at xnap.plugin.nap.net.msg.MessageHandler.handle(MessageHandler.java:144)
        at xnap.plugin.nap.net.Server.run(Server.java:843)
        at java.lang.Thread.run(Thread.java:484)

* set incomplete directory to unwritable directory like '/root',
  download file and try to delete failed transfer

java.lang.NullPointerException
        at xnap.net.AbstractTransferContainer.delete(AbstractTransferContainer.java:236)
        at xnap.util.DownloadQueue.delete(DownloadQueue.java:99)
        at xnap.gui.TransferSubPanel$DeleteAction.actionPerformed(TransferSubPanel.java:450)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1767)
        at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1820)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:419)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257)
        at javax.swing.AbstractButton.doClick(AbstractButton.java:289)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1092)
        at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(BasicMenuItemUI.java:932)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:227)
        at java.awt.Component.processMouseEvent(Component.java:5021)
        at java.awt.Component.processEvent(Component.java:4818)
        at java.awt.Container.processEvent(Container.java:1380)
        at java.awt.Component.dispatchEventImpl(Component.java:3526)
        at java.awt.Container.dispatchEventImpl(Container.java:1437)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3214)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2929)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2859)
        at java.awt.Container.dispatchEventImpl(Container.java:1423)
        at java.awt.Window.dispatchEventImpl(Window.java:1566)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:445)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:190)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:144)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:130)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)

DEAD LOCKS

* dead lock

MessageSender.add() <-- synchronized
MessageSender.send()
Server.updateChannels()
ChatGlobalSubPanel.elementAdded()
AWTEventQueue


AutoDownload