viatra / EMF-IncQuery

This repository is only kept for historic reasons. All development happens on eclipse.org
http://eclipse.org/viatra
13 stars 4 forks source link

NPE and ArrayIndexOOBE when dealing with dynamic EMF #337

Closed abelhegedus closed 11 years ago

abelhegedus commented 11 years ago

I have witnessed this with the CI build, but it's probably also true for 0.6.6

When loading a simple UML model into the query explorer, a lot of such exceptions appear in the Error Log:

EMF-IncQuery encountered an error in processing the EMF model. This happened while trying to add the object: org.eclipse.emf.ecore.impl.DynamicEObjectImpl@2cd11716 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@6d0eb660 (name: EClass) (instanceClassName: null) (abstract: false, interface: false))

java.lang.NullPointerException
    at org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.getSettingDelegate(EStructuralFeatureImpl.java:830)
    at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSettingDelegate(BasicEObjectImpl.java:1561)
    at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1027)
    at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1011)
    at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1003)
    at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:998)
    at org.eclipse.viatra2.emf.incquery.base.comprehension.EMFModelComprehension.traverseObject(EMFModelComprehension.java:139)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter$1.call(NavigationHelperContentAdapter.java:194)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter$1.call(NavigationHelperContentAdapter.java:1)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperImpl.coalesceTraversals(NavigationHelperImpl.java:627)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter.addAdapter(NavigationHelperContentAdapter.java:190)
    at org.eclipse.emf.ecore.util.EContentAdapter.handleContainment(EContentAdapter.java:139)
    at org.eclipse.emf.ecore.util.EContentAdapter.selfAdapt(EContentAdapter.java:63)
    at org.eclipse.emf.ecore.util.EContentAdapter.notifyChanged(EContentAdapter.java:40)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter.notifyChanged(NavigationHelperContentAdapter.java:106)
    at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
    at org.eclipse.emf.common.notify.impl.NotifyingListImpl.dispatchNotification(NotifyingListImpl.java:261)
    at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:294)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.processTopObject(XMLHandler.java:1478)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createObjectByType(XMLHandler.java:1330)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createTopObject(XMLHandler.java:1462)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.processElement(XMLHandler.java:1013)
    at org.eclipse.emf.ecore.xmi.impl.XMIHandler.processElement(XMIHandler.java:81)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:995)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:706)
    at org.eclipse.emf.ecore.xmi.impl.XMIHandler.startElement(XMIHandler.java:163)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source)
    at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:175)
    at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLResourceImpl.java:240)
    at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1505)
    at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1284)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:259)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:274)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:406)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getEObject(ResourceSetImpl.java:220)
    at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:197)
    at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:257)
    at org.eclipse.viatra2.emf.incquery.base.comprehension.EMFModelComprehension.traverseFeatureInternal(EMFModelComprehension.java:199)
    at org.eclipse.viatra2.emf.incquery.base.comprehension.EMFModelComprehension.traverseFeatureInternalSimple(EMFModelComprehension.java:176)
    at org.eclipse.viatra2.emf.incquery.base.comprehension.EMFModelComprehension.traverseFeature(EMFModelComprehension.java:166)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter.featureUpdate(NavigationHelperContentAdapter.java:183)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter.notifyChanged(NavigationHelperContentAdapter.java:143)
    at org.eclipse.uml2.uml.internal.impl.ElementImpl.eNotify(ElementImpl.java:974)

and

EMF-IncQuery encountered an error in processing the EMF model. This happened while trying to remove the object: org.eclipse.emf.ecore.impl.DynamicEObjectImpl@44ba52f0 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@31f630b (name: EDataType) (instanceClassName: null) (abstract: false, interface: false))

java.lang.ArrayIndexOutOfBoundsException: 2
    at org.eclipse.emf.ecore.impl.DynamicEObjectImpl.dynamicGet(DynamicEObjectImpl.java:292)
    at org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSettingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.java:2174)
    at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1027)
    at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1011)
    at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1003)
    at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:998)
    at org.eclipse.viatra2.emf.incquery.base.comprehension.EMFModelComprehension.traverseObject(EMFModelComprehension.java:139)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter$2.call(NavigationHelperContentAdapter.java:215)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter$2.call(NavigationHelperContentAdapter.java:1)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperImpl.coalesceTraversals(NavigationHelperImpl.java:627)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter.removeAdapter(NavigationHelperContentAdapter.java:211)
    at org.eclipse.emf.ecore.util.EContentAdapter.unsetTarget(EContentAdapter.java:328)
    at org.eclipse.emf.ecore.util.EContentAdapter.unsetTarget(EContentAdapter.java:288)
    at org.eclipse.emf.ecore.util.EContentAdapter.unsetTarget(EContentAdapter.java:263)
    at org.eclipse.emf.common.notify.impl.BasicNotifierImpl$EAdapterList.didRemove(BasicNotifierImpl.java:150)
    at org.eclipse.emf.common.util.BasicEList.remove(BasicEList.java:616)
    at org.eclipse.emf.common.notify.impl.BasicNotifierImpl$EAdapterList.remove(BasicNotifierImpl.java:221)
    at org.eclipse.emf.common.util.AbstractEList.remove(AbstractEList.java:460)
    at org.eclipse.emf.common.notify.impl.BasicNotifierImpl$EAdapterList.remove(BasicNotifierImpl.java:214)
    at org.eclipse.emf.ecore.util.EContentAdapter.removeAdapter(EContentAdapter.java:354)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter.access$1(NavigationHelperContentAdapter.java:1)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter$2.call(NavigationHelperContentAdapter.java:218)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter$2.call(NavigationHelperContentAdapter.java:1)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperImpl.coalesceTraversals(NavigationHelperImpl.java:627)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter.removeAdapter(NavigationHelperContentAdapter.java:211)
    at org.eclipse.emf.ecore.util.EContentAdapter.unsetTarget(EContentAdapter.java:343)
    at org.eclipse.emf.ecore.util.EContentAdapter.unsetTarget(EContentAdapter.java:292)
    at org.eclipse.emf.ecore.util.EContentAdapter.unsetTarget(EContentAdapter.java:263)
    at org.eclipse.emf.common.notify.impl.BasicNotifierImpl$EAdapterList.didRemove(BasicNotifierImpl.java:150)
    at org.eclipse.emf.common.util.BasicEList.remove(BasicEList.java:616)
    at org.eclipse.emf.common.notify.impl.BasicNotifierImpl$EAdapterList.remove(BasicNotifierImpl.java:221)
    at org.eclipse.emf.common.util.AbstractEList.remove(AbstractEList.java:460)
    at org.eclipse.emf.common.notify.impl.BasicNotifierImpl$EAdapterList.remove(BasicNotifierImpl.java:214)
    at org.eclipse.emf.ecore.util.EContentAdapter.removeAdapter(EContentAdapter.java:354)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter.access$1(NavigationHelperContentAdapter.java:1)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter$2.call(NavigationHelperContentAdapter.java:218)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter$2.call(NavigationHelperContentAdapter.java:1)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperImpl.coalesceTraversals(NavigationHelperImpl.java:642)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperContentAdapter.removeAdapter(NavigationHelperContentAdapter.java:211)
    at org.eclipse.viatra2.emf.incquery.base.core.NavigationHelperImpl.dispose(NavigationHelperImpl.java:177)
    at org.eclipse.viatra2.emf.incquery.runtime.api.IncQueryEngine.killInternal(IncQueryEngine.java:315)
    at org.eclipse.viatra2.emf.incquery.runtime.api.IncQueryEngine.dispose(IncQueryEngine.java:243)
    at org.eclipse.viatra2.emf.incquery.queryexplorer.content.matcher.MatcherTreeViewerRoot.removePatternMatcherRoot(MatcherTreeViewerRoot.java:61)
    at org.eclipse.viatra2.emf.incquery.queryexplorer.handlers.util.EMFModelConnector.unloadModel(EMFModelConnector.java:50)
    at org.eclipse.viatra2.emf.incquery.queryexplorer.util.ModelEditorPartListener.partClosed(ModelEditorPartListener.java:52)

and

EMF-IncQuery encountered an error in processing the EMF model. This happened while trying to remove the object: org.eclipse.uml2.uml.internal.impl.ClassImpl@3ef25cbb (name: EModelElement, visibility: <unset>) (isLeaf: false, isAbstract: true, isFinalSpecialization: false) (isActive: false)
istvanrath commented 11 years ago

0.6.6: agreed, the main task is to ensure that the Query Explorer is more robust. @okrosa , please help us out here.

okrosa commented 11 years ago
ujhelyiz commented 11 years ago

It works for me as well. We should have another look at @abelhegedus 's computer...

istvanrath commented 11 years ago

@abelhegedus please separate this issue into separate entries so that they can be addressed individually.

abelhegedus commented 11 years ago

Issue separated into #347 and #348, so closing it.