[ 
https://issues.apache.org/cayenne/browse/CAY-785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12823#action_12823
 ] 

Jeff Pierson commented on CAY-785:
----------------------------------

Today I got the trunk built on my machine and tried to debug this problem.  
With my limited knowledge of Cayenne internals, here is what I think is 
happening.  The Modeler application, when opening a Cayenne.xml file calls 
ProjectAction.buildProjectApplication() which makes a new ProjectConfiguration 
object.  ProjectConfiguration overrides the getDataSourceFactory() method of 
Configuration and always returns a ProjectDataSourceFactory which extends 
DriverDataSourceFactory.  When the RuntimeLoadDelegate.shouldLoadDataNode() 
attempts to load the datasource it calls getDataSourceFactory() and uses the 
ProjectDataSourceFactory instead of the DBCPDataSourceFactory that was passed 
in.  It tries to parse the dbcp.properties file as if it were a driver.xml 
file.   If you delete or rename the dbcp.properties file, the modeler will go 
ahead and load the project.   I was hoping this was a simple fix and I could 
just submit a patch but I don't think that is the case.  I also think this is 
more than a minor bug.  It seems to me that the Modeler will always fail to 
load any project using dbcp if the dbcp.properties file exists, which is the 
normal case.



> Cayenne Modeler Fails to Open Project 
> --------------------------------------
>
>                 Key: CAY-785
>                 URL: https://issues.apache.org/cayenne/browse/CAY-785
>             Project: Cayenne
>          Issue Type: Bug
>          Components: CayenneModeler GUI
>    Affects Versions: 2.0 [STABLE]
>         Environment: Ubuntu 7.04, JDK 1.5.0_11
>            Reporter: Gary Jarrel
>            Assignee: Andrus Adamchik
>            Priority: Minor
>         Attachments: files.tar.gz
>
>
> If cayenne.xml contains an entry:
> <node name="katya"
>        datasource="katya.driver.properties"
>        factory="org.apache.cayenne.conf.DBCPDataSourceFactory">
>               <map-ref name="katya"/>
> </node>
> Noting the datasource: katya.driver.properties
> The following exception occurs:
> org.apache.cayenne.project.ProjectException: [v.2.0.2 January 14 2007] Error 
> initializaing project configuration.
>         at 
> org.apache.cayenne.project.ApplicationProject.loadProject(ApplicationProject.java:130)
>         at 
> org.apache.cayenne.project.ApplicationProject.postInitialize(ApplicationProject.java:106)
>         at 
> org.apache.cayenne.project.ApplicationProject.<init>(ApplicationProject.java:90)
>         at 
> org.apache.cayenne.modeler.action.OpenProjectAction.openProject(OpenProjectAction.java:111)
>         at 
> org.apache.cayenne.modeler.action.OpenProjectAction.performAction(OpenProjectAction.java:99)
>         at 
> org.apache.cayenne.modeler.util.CayenneAction.actionPerformed(CayenneAction.java:163)
>         at 
> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
>         at 
> javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
>         at 
> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
>         at 
> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
>         at javax.swing.AbstractButton.doClick(AbstractButton.java:302)
>         at 
> javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1000)
>         at 
> javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1041)
>         at java.awt.Component.processMouseEvent(Component.java:5501)
>         at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
>         at java.awt.Component.processEvent(Component.java:5266)
>         at java.awt.Container.processEvent(Container.java:1966)
>         at java.awt.Component.dispatchEventImpl(Component.java:3968)
>         at java.awt.Container.dispatchEventImpl(Container.java:2024)
>         at java.awt.Component.dispatchEvent(Component.java:3803)
>         at 
> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
>         at 
> java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
>         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
>         at java.awt.Container.dispatchEventImpl(Container.java:2010)
>         at java.awt.Window.dispatchEventImpl(Window.java:1778)
>         at java.awt.Component.dispatchEvent(Component.java:3803)
>         at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
>         at 
> java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
>         at 
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
>         at 
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
>         at 
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
>         at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
> Caused by: org.apache.cayenne.CayenneRuntimeException: [v.2.0.2 January 14 
> 2007] Null dataSource
>         at org.apache.cayenne.dba.AutoAdapter.<init>(AutoAdapter.java:105)
>         at org.apache.cayenne.dba.AutoAdapter.<init>(AutoAdapter.java:95)
>         at 
> org.apache.cayenne.modeler.util.ModelerDbAdapter.<init>(ModelerDbAdapter.java:50)
>         at 
> org.apache.cayenne.modeler.action.ModelerProjectLoadDelegate.initAdapter(ModelerProjectLoadDelegate.java:48)
>         at 
> org.apache.cayenne.conf.RuntimeLoadDelegate.shouldLoadDataNode(RuntimeLoadDelegate.java:315)
>         at 
> org.apache.cayenne.conf.ConfigLoader$NodeHandler.init(ConfigLoader.java:330)
>         at 
> org.apache.cayenne.conf.ConfigLoader$DomainHandler.startElement(ConfigLoader.java:219)
>         at 
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533)
>         at 
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:330)
>         at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1693)
>         at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
>         at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
>         at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
>         at 
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
>         at 
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
>         at 
> org.apache.cayenne.conf.ConfigLoader.loadDomains(ConfigLoader.java:78)
>         at 
> org.apache.cayenne.conf.DefaultConfiguration.initialize(DefaultConfiguration.java:161)
>         at 
> org.apache.cayenne.project.ApplicationProject.loadProject(ApplicationProject.java:127)
>         ... 31 more
> org.apache.cayenne.project.ProjectException: [v.2.0.2 January 14 2007] Error 
> initializaing project configuration.
>         at 
> org.apache.cayenne.project.ApplicationProject.loadProject(ApplicationProject.java:130)
>         at 
> org.apache.cayenne.project.ApplicationProject.postInitialize(ApplicationProject.java:106)
>         at 
> org.apache.cayenne.project.ApplicationProject.<init>(ApplicationProject.java:90)
>         at 
> org.apache.cayenne.modeler.action.OpenProjectAction.openProject(OpenProjectAction.java:111)
>         at 
> org.apache.cayenne.modeler.action.OpenProjectAction.performAction(OpenProjectAction.java:99)
>         at 
> org.apache.cayenne.modeler.util.CayenneAction.actionPerformed(CayenneAction.java:163)
>         at 
> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
>         at 
> javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
>         at 
> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
>         at 
> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
>         at javax.swing.AbstractButton.doClick(AbstractButton.java:302)
>         at 
> javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1000)
>         at 
> javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1041)
>         at java.awt.Component.processMouseEvent(Component.java:5501)
>         at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
>         at java.awt.Component.processEvent(Component.java:5266)
>         at java.awt.Container.processEvent(Container.java:1966)
>         at java.awt.Component.dispatchEventImpl(Component.java:3968)
>         at java.awt.Container.dispatchEventImpl(Container.java:2024)
>         at java.awt.Component.dispatchEvent(Component.java:3803)
>         at 
> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
>         at 
> java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
>         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
>         at java.awt.Container.dispatchEventImpl(Container.java:2010)
>         at java.awt.Window.dispatchEventImpl(Window.java:1778)
>         at java.awt.Component.dispatchEvent(Component.java:3803)
>         at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
>         at 
> java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
>         at 
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
>         at 
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
>         at 
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
>         at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
> Caused by: org.apache.cayenne.CayenneRuntimeException: [v.2.0.2 January 14 
> 2007] Null dataSource
>         at org.apache.cayenne.dba.AutoAdapter.<init>(AutoAdapter.java:105)
>         at org.apache.cayenne.dba.AutoAdapter.<init>(AutoAdapter.java:95)
>         at 
> org.apache.cayenne.modeler.util.ModelerDbAdapter.<init>(ModelerDbAdapter.java:50)
>         at 
> org.apache.cayenne.modeler.action.ModelerProjectLoadDelegate.initAdapter(ModelerProjectLoadDelegate.java:48)
>         at 
> org.apache.cayenne.conf.RuntimeLoadDelegate.shouldLoadDataNode(RuntimeLoadDelegate.java:315)
>         at 
> org.apache.cayenne.conf.ConfigLoader$NodeHandler.init(ConfigLoader.java:330)
>         at 
> org.apache.cayenne.conf.ConfigLoader$DomainHandler.startElement(ConfigLoader.java:219)
>         at 
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533)
>         at 
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:330)
>         at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1693)
>         at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
>         at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
>         at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
>         at 
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
>         at 
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
>         at 
> org.apache.cayenne.conf.ConfigLoader.loadDomains(ConfigLoader.java:78)
>         at 
> org.apache.cayenne.conf.DefaultConfiguration.initialize(DefaultConfiguration.java:161)
>         at 
> org.apache.cayenne.project.ApplicationProject.loadProject(ApplicationProject.java:127)
>         ... 31 more
> If the datasource is changed as follows:
> <node name="katya"
>        datasource="katya.driver"
>        factory="org.apache.cayenne.conf.DBCPDataSourceFactory">
>               <map-ref name="katya"/>
> </node>
> Noting: katya.driver
> The project opens file in the modeler. 
> The DBCP properties file is: katya.driver.properties

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to