| Summary: | Intermittent IndexOutOfBoundsException when adding Named Queries via the model | ||
|---|---|---|---|
| Product: | [WebTools] Dali JPA Tools | Reporter: | Tom Mutdosch <mutdosch> |
| Component: | Framework | Assignee: | Karen Butzke <karenfbutzke> |
| Status: | RESOLVED DUPLICATE | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | neil.hauge |
| Version: | 2.0 | ||
| Target Milestone: | 2.0 | ||
| Hardware: | PC | ||
| OS: | Windows XP | ||
| Whiteboard: | |||
Aw, why not... A few more possibly-related NPEs that I was getting while running the same scenario. I saw these two frequently while adding the named queries: !ENTRY org.eclipse.core.resources 4 2 2008-04-23 15:00:09.843 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources". !STACK 0 java.lang.NullPointerException at org.eclipse.jpt.core.internal.utility.jdt.JDTFieldAttribute.fragments(JDTFieldAttribute.java:97) at org.eclipse.jpt.core.internal.utility.jdt.JDTFieldAttribute.getFragment(JDTFieldAttribute.java:65) at org.eclipse.jpt.core.internal.utility.jdt.JDTFieldAttribute.getBinding(JDTFieldAttribute.java:75) at org.eclipse.jpt.core.internal.utility.jdt.JDTFieldAttribute.getBinding(JDTFieldAttribute.java:1) at org.eclipse.jpt.core.internal.resource.java.JavaResourcePersistentAttributeImpl.calculatePersistability(JavaResourcePersistentAttributeImpl.java:100) at org.eclipse.jpt.core.internal.resource.java.AbstractJavaResourcePersistentMember.resolveTypes(AbstractJavaResourcePersistentMember.java:422) at org.eclipse.jpt.core.internal.resource.java.JavaResourcePersistentAttributeImpl.resolveTypes(JavaResourcePersistentAttributeImpl.java:213) at org.eclipse.jpt.core.internal.resource.java.JavaResourcePersistentTypeImpl.resolveTypes(JavaResourcePersistentTypeImpl.java:367) at org.eclipse.jpt.core.internal.resource.java.JpaCompilationUnitImpl.resolveTypes(JpaCompilationUnitImpl.java:211) at org.eclipse.jpt.core.internal.resource.java.JavaResourceModelImpl.resolveTypes(JavaResourceModelImpl.java:126) at org.eclipse.jpt.core.internal.GenericJpaProject.synchronizeJpaFiles(GenericJpaProject.java:554) at org.eclipse.jpt.core.internal.GenericJpaModel$DefaultJpaProjectHolder.synchronizeJpaFiles(GenericJpaModel.java:459) at org.eclipse.jpt.core.internal.GenericJpaModel.synchronizeFiles(GenericJpaModel.java:187) at org.eclipse.jpt.core.internal.JpaModelManager.synchronizeFiles(JpaModelManager.java:295) at org.eclipse.jpt.core.internal.JpaModelManager.synchronizeFiles(JpaModelManager.java:275) at org.eclipse.jpt.core.internal.JpaModelManager.synchronizeFiles(JpaModelManager.java:286) at org.eclipse.jpt.core.internal.JpaModelManager.synchronizeFiles(JpaModelManager.java:272) at org.eclipse.jpt.core.internal.JpaModelManager.resourcePostChange(JpaModelManager.java:264) at org.eclipse.jpt.core.internal.JpaModelManager.resourceChanged(JpaModelManager.java:237) at org.eclipse.jpt.core.internal.JpaModelManager$ResourceChangeListener.resourceChanged(JpaModelManager.java:474) at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:288) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:282) at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148) at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:313) at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1022) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1809) at org.eclipse.core.internal.events.NotificationManager$NotifyJob.run(NotificationManager.java:39) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) -- java.lang.NullPointerException at org.eclipse.jpt.core.internal.utility.jdt.JDTMethodAttribute.getBinding(JDTMethodAttribute.java:66) at org.eclipse.jpt.core.internal.utility.jdt.JDTMethodAttribute.getBinding(JDTMethodAttribute.java:1) at org.eclipse.jpt.core.internal.resource.java.JavaResourcePersistentAttributeImpl.calculatePersistability(JavaResourcePersistentAttributeImpl.java:100) at org.eclipse.jpt.core.internal.resource.java.AbstractJavaResourcePersistentMember.resolveTypes(AbstractJavaResourcePersistentMember.java:422) at org.eclipse.jpt.core.internal.resource.java.JavaResourcePersistentAttributeImpl.resolveTypes(JavaResourcePersistentAttributeImpl.java:213) at org.eclipse.jpt.core.internal.resource.java.JavaResourcePersistentTypeImpl.resolveTypes(JavaResourcePersistentTypeImpl.java:367) at org.eclipse.jpt.core.internal.resource.java.JpaCompilationUnitImpl.resolveTypes(JpaCompilationUnitImpl.java:211) at org.eclipse.jpt.core.internal.resource.java.JavaResourceModelImpl.resolveTypes(JavaResourceModelImpl.java:126) at org.eclipse.jpt.core.internal.GenericJpaProject.synchronizeJpaFiles(GenericJpaProject.java:554) at org.eclipse.jpt.core.internal.GenericJpaModel$DefaultJpaProjectHolder.synchronizeJpaFiles(GenericJpaModel.java:459) at org.eclipse.jpt.core.internal.GenericJpaModel.synchronizeFiles(GenericJpaModel.java:187) at org.eclipse.jpt.core.internal.JpaModelManager.synchronizeFiles(JpaModelManager.java:295) at org.eclipse.jpt.core.internal.JpaModelManager.synchronizeFiles(JpaModelManager.java:275) at org.eclipse.jpt.core.internal.JpaModelManager.synchronizeFiles(JpaModelManager.java:286) at org.eclipse.jpt.core.internal.JpaModelManager.synchronizeFiles(JpaModelManager.java:272) at org.eclipse.jpt.core.internal.JpaModelManager.resourcePostChange(JpaModelManager.java:264) at org.eclipse.jpt.core.internal.JpaModelManager.resourceChanged(JpaModelManager.java:237) at org.eclipse.jpt.core.internal.JpaModelManager$ResourceChangeListener.resourceChanged(JpaModelManager.java:474) at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:288) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:282) at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148) at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:313) at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1022) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1809) at org.eclipse.core.internal.events.NotificationManager$NotifyJob.run(NotificationManager.java:39) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) And I also saw this one: !ENTRY org.eclipse.jdt.core 4 4 2008-04-23 15:00:09.406 !MESSAGE Exception occurred in listener of Java element change notification !STACK 0 java.lang.NullPointerException at org.eclipse.jpt.core.internal.resource.java.AbstractJavaResourcePersistentMember.updateAnnotations(AbstractJavaResourcePersistentMember.java:426) at org.eclipse.jpt.core.internal.resource.java.AbstractJavaResourcePersistentMember.updateFromJava(AbstractJavaResourcePersistentMember.java:417) at org.eclipse.jpt.core.internal.resource.java.JavaResourcePersistentAttributeImpl.updateFromJava(JavaResourcePersistentAttributeImpl.java:203) at org.eclipse.jpt.core.internal.resource.java.JavaResourcePersistentTypeImpl.updatePersistentAttributes(JavaResourcePersistentTypeImpl.java:431) at org.eclipse.jpt.core.internal.resource.java.JavaResourcePersistentTypeImpl.updatePersistentProperties(JavaResourcePersistentTypeImpl.java:419) at org.eclipse.jpt.core.internal.resource.java.JavaResourcePersistentTypeImpl.updatePersistentAttributes(JavaResourcePersistentTypeImpl.java:408) at org.eclipse.jpt.core.internal.resource.java.JavaResourcePersistentTypeImpl.updateFromJava(JavaResourcePersistentTypeImpl.java:355) at org.eclipse.jpt.core.internal.resource.java.JpaCompilationUnitImpl.updateFromJava(JpaCompilationUnitImpl.java:187) at org.eclipse.jpt.core.internal.resource.java.JpaCompilationUnitImpl.updateFromJava(JpaCompilationUnitImpl.java:174) at org.eclipse.jpt.core.internal.resource.java.JavaResourceModelImpl.synchCompilationUnitWithJavaDelta(JavaResourceModelImpl.java:121) at org.eclipse.jpt.core.internal.resource.java.JavaResourceModelImpl.synchWithJavaDelta(JavaResourceModelImpl.java:94) at org.eclipse.jpt.core.internal.resource.java.JavaResourceModelImpl.synchChildrenWithJavaDelta(JavaResourceModelImpl.java:103) at org.eclipse.jpt.core.internal.resource.java.JavaResourceModelImpl.synchWithJavaDelta(JavaResourceModelImpl.java:91) at org.eclipse.jpt.core.internal.resource.java.JavaResourceModelImpl.synchChildrenWithJavaDelta(JavaResourceModelImpl.java:103) at org.eclipse.jpt.core.internal.resource.java.JavaResourceModelImpl.synchWithJavaDelta(JavaResourceModelImpl.java:91) at org.eclipse.jpt.core.internal.resource.java.JavaResourceModelImpl.synchChildrenWithJavaDelta(JavaResourceModelImpl.java:103) at org.eclipse.jpt.core.internal.resource.java.JavaResourceModelImpl.synchWithJavaDelta(JavaResourceModelImpl.java:91) at org.eclipse.jpt.core.internal.resource.java.JavaResourceModelImpl.synchChildrenWithJavaDelta(JavaResourceModelImpl.java:103) at org.eclipse.jpt.core.internal.resource.java.JavaResourceModelImpl.synchWithJavaDelta(JavaResourceModelImpl.java:91) at org.eclipse.jpt.core.internal.resource.java.JavaResourceModelImpl.javaElementChanged(JavaResourceModelImpl.java:82) at org.eclipse.jpt.core.internal.GenericJpaFile.javaElementChanged(GenericJpaFile.java:59) at org.eclipse.jpt.core.internal.GenericJpaProject.javaElementChanged(GenericJpaProject.java:427) at org.eclipse.jpt.core.internal.GenericJpaModel$DefaultJpaProjectHolder.javaElementChanged(GenericJpaModel.java:465) at org.eclipse.jpt.core.internal.GenericJpaModel.javaElementChanged(GenericJpaModel.java:302) at org.eclipse.jpt.core.internal.JpaModelManager.javaElementChanged(JpaModelManager.java:418) at org.eclipse.jpt.core.internal.JpaModelManager$JavaElementChangeListener.elementChanged(JpaModelManager.java:512) at org.eclipse.jdt.internal.core.DeltaProcessor$3.run(DeltaProcessor.java:1544) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.jdt.internal.core.DeltaProcessor.notifyListeners(DeltaProcessor.java:1534) at org.eclipse.jdt.internal.core.DeltaProcessor.firePostChangeDelta(DeltaProcessor.java:1368) at org.eclipse.jdt.internal.core.DeltaProcessor.fire(DeltaProcessor.java:1344) at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:1933) at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:410) at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:288) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:282) at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148) at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:313) at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1022) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1809) at org.eclipse.core.internal.events.NotificationManager$NotifyJob.run(NotificationManager.java:39) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) The NPE's in comment 1 will be affected by Brian's work on the other NPE bugs assigned to RC1. This NPE has been fixed, I must have fixed it the day you reported it, that's what I'm seeing in the cvs history. >and I was seeing this while the namedQueries were being added: >java.lang.NullPointerException > at >org.eclipse.jpt.core.internal.context.java.GenericJavaEntity.addQueryMessages(GenericJavaEntity.java:1835) > at >org.eclipse.jpt.core.internal.context.java.GenericJavaEntity.addToMessages(GenericJavaEntity.java:1758) The IndexOutOfBoundsException is possibly affect by Brian's changes, but I'm pretty sure that will still exist because it is an issue in the java resource model, the events are firing in the wrong order. Tom, is it possible to provide a failing unit test case that shows this problem? Or does it only appear when running your code in the UI? I know some of the issues like this are race conditions caused by the UI. *** This bug has been marked as a duplicate of bug 233567 *** |
org.eclipse.jpt.core_2.0.0.v200804020001.jar I am adding named queries like so: // remove old queries int namedQueriesSize = entity.namedQueriesSize(); for ( int i = namedQueriesSize -1; i >= 0; i-- ) { entity.removeNamedQuery(i); } // add new for ( query: queriesToGenerate ) { NamedQuery newNamedQuery = entity.addNamedQuery(entity.namedQueriesSize()); newNamedQuery.setName("foo"); newNamedQuery.setQuery("bar"); } And intermittently I am getting the IndexOutOfBoundsException, and the named query annotations are not added to the entity, or they are corruped (empty values): !ENTRY org.eclipse.wst.common.frameworks 4 0 2008-04-23 15:00:09.828 !MESSAGE Exception thrown. !STACK 0 java.lang.IndexOutOfBoundsException: Index: 4, Size: 4 at java.util.ArrayList.RangeCheck(ArrayList.java:547) at java.util.ArrayList.get(ArrayList.java:322) at org.eclipse.jpt.utility.internal.CollectionTools.move_(CollectionTools.java:2008) at org.eclipse.jpt.utility.internal.CollectionTools.move(CollectionTools.java:1992) at org.eclipse.jpt.core.internal.resource.java.NamedQueriesImpl.moveInternal(NamedQueriesImpl.java:112) at org.eclipse.jpt.core.internal.resource.java.ContainerAnnotationTools.addNestedAnnotation(ContainerAnnotationTools.java:32) at org.eclipse.jpt.core.internal.resource.java.AbstractJavaResourcePersistentMember.addAnnotation(AbstractJavaResourcePersistentMember.java:223) at org.eclipse.jpt.core.internal.resource.java.AbstractJavaResourcePersistentMember.addAnnotation(AbstractJavaResourcePersistentMember.java:1) at org.eclipse.jpt.core.internal.context.java.GenericJavaEntity.addNamedQuery(GenericJavaEntity.java:1034) at org.eclipse.jpt.core.internal.context.java.GenericJavaEntity.addNamedQuery(GenericJavaEntity.java:1) at MyClass.addNamedQueriesOnEntity(NamedQueriesUtil.java:968) and I was seeing this while the namedQueries were being added: java.lang.NullPointerException at org.eclipse.jpt.core.internal.context.java.GenericJavaEntity.addQueryMessages(GenericJavaEntity.java:1835) at org.eclipse.jpt.core.internal.context.java.GenericJavaEntity.addToMessages(GenericJavaEntity.java:1758) at org.eclipse.jpt.core.internal.context.java.GenericJavaPersistentType.addToMessages(GenericJavaPersistentType.java:481) at org.eclipse.jpt.core.internal.context.java.GenericJavaPersistentType.addToMessages(GenericJavaPersistentType.java:476) at org.eclipse.jpt.core.internal.context.persistence.GenericClassRef.addToMessages(GenericClassRef.java:165) at org.eclipse.jpt.core.internal.context.persistence.GenericPersistenceUnit.addClassMessages(GenericPersistenceUnit.java:1098) at org.eclipse.jpt.core.internal.context.persistence.GenericPersistenceUnit.addToMessages(GenericPersistenceUnit.java:1041) at org.eclipse.jpt.core.internal.context.persistence.GenericPersistence.addToMessages(GenericPersistence.java:191) at org.eclipse.jpt.core.internal.context.persistence.GenericPersistenceXml.addToMessages(GenericPersistenceXml.java:161) at org.eclipse.jpt.core.internal.context.GenericRootContextNode.addToMessages(GenericRootContextNode.java:187) at org.eclipse.jpt.core.internal.GenericJpaProject.addToMessages(GenericJpaProject.java:453) at org.eclipse.jpt.core.internal.platform.GenericJpaPlatform.addToMessages(GenericJpaPlatform.java:276) at org.eclipse.jpt.core.internal.GenericJpaProject.validationMessages(GenericJpaProject.java:436) at org.eclipse.jpt.core.internal.validation.JpaValidator.validationMessages(JpaValidator.java:55) at org.eclipse.jpt.core.internal.validation.JpaValidator.validate(JpaValidator.java:48) at org.eclipse.jpt.core.internal.validation.JpaValidator.validateInJob(JpaValidator.java:77) at org.eclipse.wst.validation.internal.operations.ValidatorJob.run(ValidatorJob.java:78) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)