Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 324126 - JPA diagram editor fails to update new entity in persistence.xml
Summary: JPA diagram editor fails to update new entity in persistence.xml
Status: RESOLVED FIXED
Alias: None
Product: Dali JPA Tools
Classification: WebTools
Component: Diagram Editor (show other bugs)
Version: 0.5   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: 0.5 RC3   Edit
Assignee: Stefan Dimov CLA
QA Contact: Stefan Dimov CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-08-31 15:16 EDT by Ram Venkataswamy CLA
Modified: 2011-01-17 08:21 EST (History)
0 users

See Also:


Attachments
patch (15.19 KB, patch)
2010-09-09 02:47 EDT, Petya Sabeva CLA
no flags Details | Diff
patch (18.15 KB, patch)
2010-09-10 10:20 EDT, Petya Sabeva CLA
no flags Details | Diff
patch (63.65 KB, patch)
2010-09-16 02:48 EDT, Petya Sabeva CLA
no flags Details | Diff
Register Entity in persistence.xml patch (86.72 KB, patch)
2010-10-04 02:40 EDT, Petya Sabeva CLA
no flags Details | Diff
fix tests (26.23 KB, patch)
2010-10-04 02:40 EDT, Petya Sabeva CLA
no flags Details | Diff
Register Entities in XML (112.86 KB, patch)
2010-10-08 10:25 EDT, Stefan Dimov CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Ram Venkataswamy CLA 2010-08-31 15:16:14 EDT
Build Identifier: M20100818-0800

JPA diagram editor fails to update new entity in persistence.xml

Reproducible: Always

Steps to Reproduce:
- Create a JPA project

- Project | Properties | Java Persistence, under "Persistence class management" select "Annotated classes must be listed in persistence.xml"

- Click Apply/ok

- Now, open JPA diagram editor and create a new entity mapped to a table 

- save jpa diagram

It fails to update the newly created entity in persistence.xml file. As a result a validation error is reported "Class <name> is mapped, but is not included in any persistence unit"

Expected: The JPA diagram to honor "Persistence class management" selection.
Comment 1 Petya Sabeva CLA 2010-09-09 02:47:44 EDT
Created attachment 178482 [details]
patch
Comment 2 Stefan Dimov CLA 2010-09-10 05:19:20 EDT
I've tried the patch and when you create a new entity it's being successfully registered in the persistence.xml, but after that when I rename the entity it's name doesn't change in the persistence.xml and I get error like this:

org.eclipse.core.internal.resources.ResourceException: Resource '/JPA10/src/org/persistence/Entity1.java' does not exist.
at org.eclipse.core.internal.resources.Resource.checkExists(Resource.java:326)
at org.eclipse.core.internal.resources.Resource.checkAccessible(Resource.java:200)
at org.eclipse.core.internal.resources.File.getContents(File.java:291)
at org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1186)
at org.eclipse.jdt.internal.core.CompilationUnit.getContents(CompilationUnit.java:649)
at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1110)
at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:801)
at org.eclipse.jpt.core.internal.utility.jdt.ASTTools.buildASTRoot(ASTTools.java:50)
at org.eclipse.jpt.core.internal.resource.java.source.SourceCompilationUnit.buildASTRoot(SourceCompilationUnit.java:183)
at org.eclipse.jpt.core.internal.context.java.AbstractJavaPersistentType.buildASTRoot(AbstractJavaPersistentType.java:654)
at org.eclipse.jpt.core.internal.context.java.AbstractJavaPersistentType.validate(AbstractJavaPersistentType.java:595)
at org.eclipse.jpt.core.internal.jpa1.context.persistence.GenericClassRef.validateJavaPersistentType(GenericClassRef.java:293)
at org.eclipse.jpt.core.internal.jpa1.context.persistence.GenericClassRef.validate(GenericClassRef.java:287)
at org.eclipse.jpt.core.internal.context.persistence.AbstractPersistenceUnit.validateClassRefs(AbstractPersistenceUnit.java:1522)
at org.eclipse.jpt.core.internal.context.persistence.AbstractPersistenceUnit.validate(AbstractPersistenceUnit.java:1458)
at org.eclipse.jpt.core.internal.jpa1.context.persistence.GenericPersistence.validatePersistenceUnit(GenericPersistence.java:282)
at org.eclipse.jpt.core.internal.jpa1.context.persistence.GenericPersistence.validate(GenericPersistence.java:234)
at org.eclipse.jpt.core.internal.jpa1.context.persistence.GenericPersistenceXml.validate(GenericPersistenceXml.java:226)
at org.eclipse.jpt.core.internal.jpa1.context.GenericRootContextNode.validate(GenericRootContextNode.java:201)
at org.eclipse.jpt.core.internal.AbstractJpaProject.validate(AbstractJpaProject.java:1303)
at org.eclipse.jpt.core.internal.AbstractJpaProject.validationMessages(AbstractJpaProject.java:1294)
at org.eclipse.jpt.core.internal.validation.JpaValidator.validationMessages(JpaValidator.java:107)
at org.eclipse.jpt.core.internal.validation.JpaValidator.validate(JpaValidator.java:91)
at org.eclipse.jpt.core.internal.validation.JpaValidator.validate(JpaValidator.java:72)
at org.eclipse.wst.validation.Validator$V2.validate(Validator.java:1159)
at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:704)
at org.eclipse.wst.validation.internal.ValManager$1.visit(ValManager.java:665)
at org.eclipse.wst.validation.internal.ValManager.accept(ValManager.java:783)
at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:669)
at org.eclipse.wst.validation.internal.ValBuilderJob$Visitor.visit(ValBuilderJob.java:321)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:68)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:79)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:79)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:79)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:79)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:48)
at org.eclipse.wst.validation.internal.ValBuilderJob.deltaBuild(ValBuilderJob.java:211)
at org.eclipse.wst.validation.internal.ValBuilderJob.run(ValBuilderJob.java:179)
at org.eclipse.wst.validation.internal.ValBuilderJob.runInWorkspace(ValBuilderJob.java:126)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Comment 3 Petya Sabeva CLA 2010-09-10 10:20:23 EDT
Created attachment 178612 [details]
patch

This patch fix this exception...
Comment 4 Stefan Dimov CLA 2010-09-10 12:03:49 EDT
Seems that the patch works, but it messes up with something else.

1. Apply the patch
2. Create JPA project and leave the option, which requires the entities to be listed in the pers...xml
3. Open the diagram for that editor
4. Create two entities through the diagram
5. Create 1-1 bidir rel between them
6. Rename the owner
7. Create a third entity in the diagram
8. Try to create 1-1 bidir rel from the owner of the first rel to the new entity.

Result: The diagram freezes for a while, the rel won't be created and in the error log appears:

java.lang.NullPointerException
at org.eclipse.jpt.ui.diagrameditor.util.JpaArtifactFactory.addOneToOneRelation(JpaArtifactFactory.java:126)
at org.eclipse.jpt.ui.diagrameditor.util.JpaArtifactFactory.addOneToOneBidirectionalRelation(JpaArtifactFactory.java:116)
at org.eclipse.jpt.ui.diagrameditor.relations.OneToOneBiDirRelation.createRelation(OneToOneBiDirRelation.java:95)
at org.eclipse.jpt.ui.diagrameditor.relations.OneToOneBiDirRelation.<init>(OneToOneBiDirRelation.java:37)
at org.eclipse.jpt.ui.diagrameditor.feature.CreateOneToOneBiDirRelationFeature.createRelation(CreateOneToOneBiDirRelationFeature.java:53)
at org.eclipse.jpt.ui.diagrameditor.feature.CreateOneToOneBiDirRelationFeature.createRelation(CreateOneToOneBiDirRelationFeature.java:1)
at org.eclipse.jpt.ui.diagrameditor.feature.CreateRelationFeature.create(CreateRelationFeature.java:57)
at org.eclipse.graphiti.features.impl.AbstractCreateConnectionFeature.execute(AbstractCreateConnectionFeature.java:96)
at org.eclipse.graphiti.internal.command.GenericFeatureCommandWithContext.execute(GenericFeatureCommandWithContext.java:64)
at org.eclipse.graphiti.internal.command.GFPreparableCommand.doExecute(GFPreparableCommand.java:37)
at org.eclipse.emf.transaction.RecordingCommand.execute(RecordingCommand.java:135)
at org.eclipse.emf.workspace.EMFCommandOperation.doExecute(EMFCommandOperation.java:119)
at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:150)
at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:511)
at org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl.doExecute(WorkspaceCommandStackImpl.java:208)
at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:165)
at org.eclipse.graphiti.ui.internal.editor.GFWorkspaceCommandStackImpl.execute(GFWorkspaceCommandStackImpl.java:47)
at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:219)
at org.eclipse.graphiti.ui.internal.editor.GFWorkspaceCommandStackImpl.execute(GFWorkspaceCommandStackImpl.java:39)
at org.eclipse.graphiti.internal.command.CommandExec.executeCommand(CommandExec.java:74)
at org.eclipse.graphiti.ui.internal.command.CreateConnectionCommand.execute(CreateConnectionCommand.java:166)
at org.eclipse.gef.commands.CommandStack.execute(CommandStack.java:197)
at org.eclipse.gef.tools.AbstractTool.executeCommand(AbstractTool.java:426)
at org.eclipse.gef.tools.AbstractTool.executeCurrentCommand(AbstractTool.java:443)
at org.eclipse.gef.tools.AbstractConnectionCreationTool.handleCreateConnection(AbstractConnectionCreationTool.java:256)
at org.eclipse.gef.tools.ConnectionCreationTool.handleButtonDown(ConnectionCreationTool.java:77)
at org.eclipse.gef.tools.AbstractTool.mouseDown(AbstractTool.java:1097)
at org.eclipse.gef.EditDomain.mouseDown(EditDomain.java:245)
at org.eclipse.gef.ui.parts.DomainEventDispatcher.dispatchMousePressed(DomainEventDispatcher.java:348)
at org.eclipse.draw2d.LightweightSystem$EventHandler.mouseDown(LightweightSystem.java:523)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:185)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Comment 5 Petya Sabeva CLA 2010-09-16 02:48:50 EDT
Created attachment 178998 [details]
patch
Comment 6 Stefan Dimov CLA 2010-09-16 05:04:06 EDT
I'm still able to reproduce the problem, although more rarely than before. Besides, the patch breaks the test plugin - it's no more compileable.
Comment 7 Petya Sabeva CLA 2010-10-04 02:40:22 EDT
Created attachment 180131 [details]
Register Entity in persistence.xml patch
Comment 8 Petya Sabeva CLA 2010-10-04 02:40:43 EDT
Created attachment 180132 [details]
fix tests
Comment 9 Stefan Dimov CLA 2010-10-08 10:25:44 EDT
Created attachment 180489 [details]
Register Entities in XML

The previous patch seems ok with a little correction in it, so I'm attaching this new one, which also merges the previous one with the tests patch
Comment 10 Stefan Dimov CLA 2010-10-08 10:55:00 EDT
Patch committed