Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 314478

Summary: Diagram urls not resolved during start up
Product: [Technology] Tigerstripe Reporter: Richard Craddock <rcraddoc>
Component: CoreAssignee: Project Inbox <tigerstripe.core-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: nmehrega
Version: unspecified   
Target Milestone: 0.5M0   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
patch
none
PAth to fix missing references none

Description Richard Craddock CLA 2010-05-26 10:55:02 EDT

    
Comment 1 Richard Craddock CLA 2010-05-26 10:56:09 EDT
This impacts on digram indexing.

Nore the uri really is "null", so theer is not much to look up!



org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Package with uri 'null' not found. (file:/C:/Documents%20and%20Settings/rcraddoc/workspace_XMP_Java/xmp-im-router-redundancy-module/src/com/cisco/xmp/model/managed/vendorSpecificTechnologies/cisco/hsrp/HSRP.vwm, 2, 216)
	at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.handleErrors(XMLLoadImpl.java:83)
	at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:191)
	at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLResourceImpl.java:180)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1494)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1282)
	at org.eclipse.tigerstripe.workbench.ui.visualeditor.adaptation.helpers.ClassDiagramModelFileContentReader.getFQNs(ClassDiagramModelFileContentReader.java:47)
	at org.eclipse.tigerstripe.workbench.ui.internal.gmf.synchronization.DiagramHandleIndex.getDiagramContent(DiagramHandleIndex.java:157)
	at org.eclipse.tigerstripe.workbench.ui.internal.gmf.synchronization.DiagramHandleIndex.diagramSaved(DiagramHandleIndex.java:76)
	at org.eclipse.tigerstripe.workbench.ui.internal.gmf.synchronization.ProjectDiagramsSynchronizer.createAllDiagramHandles(ProjectDiagramsSynchronizer.java:488)
	at org.eclipse.tigerstripe.workbench.ui.internal.gmf.synchronization.ProjectDiagramsSynchronizer.initialize(ProjectDiagramsSynchronizer.java:297)
	at org.eclipse.tigerstripe.workbench.ui.internal.gmf.synchronization.ProjectDiagramsSynchronizer.access$0(ProjectDiagramsSynchronizer.java:295)
	at org.eclipse.tigerstripe.workbench.ui.internal.gmf.synchronization.ProjectDiagramsSynchronizer$2.run(ProjectDiagramsSynchronizer.java:233)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: org.eclipse.emf.ecore.xmi.PackageNotFoundException: Package with uri 'null' not found. (file:/C:/Documents%20and%20Settings/rcraddoc/workspace_XMP_Java/xmp-im-router-redundancy-module/src/com/cisco/xmp/model/managed/vendorSpecificTechnologies/cisco/hsrp/HSRP.vwm, 2, 216)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.getPackageForURI(XMLHandler.java:2590)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.getFactoryForPrefix(XMLHandler.java:2421)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createObjectByType(XMLHandler.java:1299)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createTopObject(XMLHandler.java:1468)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.processElement(XMLHandler.java:1019)
	at org.eclipse.emf.ecore.xmi.impl.XMIHandler.processElement(XMIHandler.java:83)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:1001)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:712)
	at org.eclipse.emf.ecore.xmi.impl.XMIHandler.startElement(XMIHandler.java:169)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
	at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:767)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1359)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(XMLDocumentScannerImpl.java:1317)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3095)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:922)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
	at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:181)
	... 11 more
Comment 2 Alena Repina CLA 2010-07-06 06:19:21 EDT
Created attachment 173523 [details]
patch

I've found out that Visualeditor model has neither Ns URI nor Ns Prefix specified. Then I've specified them and regenerate model (changes in the patch attached). But after this, loading of old diagrams (with "null" URI specified) fails because there's no such package with URI "null" any longer.
Is there any way to update old diagrams according to new format?
Comment 3 Richard Craddock CLA 2010-07-13 10:08:25 EDT
I'm not sure this is actually fixing the issue (and the thoughtof migrating all the diagrams is a bit scary!).

If this really was the underlying issue, then I would have thought that these diagrams would never load?

I have seem the same error message saying that it cannot find a package that *does* have a namespace (see below).

To me this looks more like a race or loading issue?



org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Package with uri 'org.eclipse.tigerstripe.workbench.ui.instancediagram' not found. (file:/C:/Documents%20and%20Settings/rcraddoc/workspace_XMP_Java/xmp-im-switch-module/src/com/cisco/xmp/model/managed/vendorSpecificTechnologies/cisco/stack/Stack%20Example.owm, 2, 241)
	at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.handleErrors(XMLLoadImpl.java:83)
	at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:191)
	at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLResourceImpl.java:180)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1494)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1282)
	at org.eclipse.tigerstripe.workbench.ui.instancediagram.adaptation.helpers.InstanceDiagramModelFileContentReader.getFQNs(InstanceDiagramModelFileContentReader.java:45)
	at org.eclipse.tigerstripe.workbench.ui.internal.gmf.synchronization.DiagramHandleIndex.getDiagramContent(DiagramHandleIndex.java:157)
	at org.eclipse.tigerstripe.workbench.ui.internal.gmf.synchronization.DiagramHandleIndex.diagramSaved(DiagramHandleIndex.java:76)
	at org.eclipse.tigerstripe.workbench.ui.internal.gmf.synchronization.ProjectDiagramsSynchronizer.createAllDiagramHandles(ProjectDiagramsSynchronizer.java:499)
	at org.eclipse.tigerstripe.workbench.ui.internal.gmf.synchronization.ProjectDiagramsSynchronizer.initialize(ProjectDiagramsSynchronizer.java:300)
	at org.eclipse.tigerstripe.workbench.ui.internal.gmf.synchronization.ProjectDiagramsSynchronizer.access$0(ProjectDiagramsSynchronizer.java:298)
	at org.eclipse.tigerstripe.workbench.ui.internal.gmf.synchronization.ProjectDiagramsSynchronizer$2.run(ProjectDiagramsSynchronizer.java:236)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: org.eclipse.emf.ecore.xmi.PackageNotFoundException: Package with uri 'org.eclipse.tigerstripe.workbench.ui.instancediagram' not found. (file:/C:/Documents%20and%20Settings/rcraddoc/workspace_XMP_Java/xmp-im-switch-module/src/com/cisco/xmp/model/managed/vendorSpecificTechnologies/cisco/stack/Stack%20Example.owm, 2, 241)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.getPackageForURI(XMLHandler.java:2590)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.getFactoryForPrefix(XMLHandler.java:2421)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createObjectByType(XMLHandler.java:1299)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createTopObject(XMLHandler.java:1468)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.processElement(XMLHandler.java:1019)
	at org.eclipse.emf.ecore.xmi.impl.XMIHandler.processElement(XMIHandler.java:83)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:1001)
	at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:712)
	at org.eclipse.emf.ecore.xmi.impl.XMIHandler.startElement(XMIHandler.java:169)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
	at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:767)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1359)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(XMLDocumentScannerImpl.java:1317)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3095)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:922)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
	at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:181)
Comment 4 Richard Craddock CLA 2010-07-13 11:23:12 EDT
So I have a theory....

To load the diagrams correctly, EMF must have loaded the VisualDiagramPackage (or its equivalent for InstanceDiagrams).

When the base plugin starts up and initiates the indexing, the diagram plugin has not been loaded, so the first few diagrams are loaded before thie package can be resolved by EMF.

When the package is loaded, the remaining diagrams are the correctly loaded.Also on "normal" opening of diagrams - the packages have been loaded.

I have convinced myself of this my noting the timestamps of the calls to getFQN and of the constructor of the package. The diagrams indexed before the package is loaded all fail, whilst those that come after are successfully loaded.

So teh big question is....

How do we ensure that the package has been loaded BEFORE we start indexing?
Comment 5 Richard Craddock CLA 2010-07-13 12:53:43 EDT
Created attachment 174174 [details]
PAth to fix missing references

makes sure the relevant Diagram Packages are loaded
Comment 6 Navid Mehregani CLA 2010-07-13 13:57:07 EDT
Richard, I just verified your patch and it seems to resolve the issue.  I no longer get the exception when I start Tigerstripe with all the XMP models loaded.  I tried restarting TS 4-5 times and I never got the exception.
Comment 7 Richard Craddock CLA 2010-07-13 15:15:53 EDT
Excellent.

This long running saga now looks to be closed!