[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [incquery-dev] eclipsecon example
|
Hi
The IncQueryXcoreEcoreBuilder is the one which gets invoked when the
editor is opened for the dynamic instance model.
Check the attached trace.
Cheers,
Tamas
Hi,
István: I strongly disagree with relying on the editor instead of the builder: that is very clunky and if will suggest to put other features there as well. Remember the parsing of VTCL files in VIATRA? The builder is a nice place to solve this issue, and is consistent with the way Xtext handles its stuff.
Tamás: On the other hand, how does the builder start when the editor is opened? I understand that in case of any file changes the builder is executed, thus making the registry consistent with the model. Is this only a miscommunication, or is there something special I don't understand?
Zoli
-- Zoltán Ujhelyi
https://www.inf.mit.bme.hu/en/members/ujhelyiz
Fault Tolerant Systems Research Group
Budapest University of Technology and Economics
On 2013.10.23., at 15:38, István Ráth <rath@xxxxxxxxxx> wrote:
Wouldn't it be better to avoid the warnings in eiq files by making sure the
validator uses the target platform extension registry?
I think it would be a safer approach to stop relying on builder side
effects and really use our editor for initialization (and cleanup) purposes.
Abel, any thoughts?
On Wednesday, October 23, 2013, Tamas Szabo wrote:
I committed the changes to solve this issue. The registry now uses weak
collections to store the features.
Dynamic case: the builder does the work. When you open the editor the
builder will be invoked automatically so it is not needed to register the
features in some editor code again.
Generated case: the extensions are put to the plugin.xml by the generator
and this will be used later.
I have checked it with both cases and it works, please let me know if
something is missing.
On second thought, my last idea should NOT be used, as the
WellbehavingDerivedFeatureRegistry is in base, which should not have
logical or semantic dependency on query-based features!
Weak collections are OK, as dynamic mode is something that BASE is
concerned with (and QBF should not be, but that's another issue).
Ábel Hegedüs
Fault Tolerant Systems Research Group
Department of Measurement and Information Systems
Budapest University of Technology and Economics
On 23 October 2013 12:22, Ábel Hegedüs <abel.hegedus@xxxxxxxxxx> wrote:
Another idea: query-based features have a very specific EAnnotation, that
could be checked in the isWellbehaving call (see SDF for an example). In
order to increase performance, this check is only needed if the feature is
not in the registry. However, the result should not be cached, as that
leads back to the weak collection problem again.
Combining the weak collection and the annotation checking, we could
completely avoid having to create wellbehaving extensions for query-based
features, as they are registered automatically the first time they are
encountered. Of course, this works only if the EAnnotations on the feature
are always available.
Ábel Hegedüs
Fault Tolerant Systems Research Group
Department of Measurement and Information Systems
Budapest University of Technology and Economics
On 23 October 2013 12:12, Istvan Rath <rath@xxxxxxxxxx> wrote:
On Wednesday, October 23, 2013 at 12:09 PM, Ábel Hegedüs wrote:
On 23 October 2013 11:30, Tamas Szabo <tamas.szabo@xxxxxxxxx> wrote:
Finally, what about the case when the builder did not run? AFAIK, you
created the model editor to work in these cases (thus the query spec
registration in the SDF). Shouldn't it (also/instead) register the features?
--
Tamas Szabo
Software engineer
Tel.: +49 711 342 191 0
Fax.: +49 711 342 191 29
Mobil: +49 171 565 416 9
Web: www.itemis.de
Mail: tamas.szabo@xxxxxxxxx <javascript:_e({}, 'cvml', 'tamas.szabo@xxxxxxxxx');>
Skype: szabta89
itemis AG
Niederlassung Süd
Meitnerstr. 10
70563 Stuttgart
Rechtlicher Hinweis:
Registergericht: Amtsgericht Dortmund HRB 20621 | Sitz der Gesellschaft:
Lünen
Vorstand: Jens Wagener (Vorsitzender) | Wolfgang Neuhaus | Dr. Georg
Pietrek | Jens Trompeter | Sebastian Neus
Aufsichtsrat: Prof. Dr. Burkhard Igel (Vorsitzender) | Stephan Grollmann
| Michael Neuhaus
--
Istvan RATH, PhD
Research fellow
Budapest University of Technology and Economics
Fault Tolerant Systems Research Group
_______________________________________________
incquery-dev mailing list
incquery-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/incquery-dev
_______________________________________________
incquery-dev mailing list
incquery-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/incquery-dev
--
Tamas Szabo
Software engineer
Tel.: +49 711 342 191 0
Fax.: +49 711 342 191 29
Mobil: +49 171 565 416 9
Web: www.itemis.de
Mail: tamas.szabo@xxxxxxxxx
Skype: szabta89
itemis AG
Niederlassung Süd
Meitnerstr. 10
70563 Stuttgart
Rechtlicher Hinweis:
Registergericht: Amtsgericht Dortmund HRB 20621 | Sitz der Gesellschaft:
Lünen
Vorstand: Jens Wagener (Vorsitzender) | Wolfgang Neuhaus | Dr. Georg
Pietrek | Jens Trompeter | Sebastian Neus
Aufsichtsrat: Prof. Dr. Burkhard Igel (Vorsitzender) | Stephan Grollmann
| Michael Neuhaus
IncQueryXcoreEcoreBuilder.handleIncQueryDerivedFeature(EStructuralFeature, XIncQueryDerivedFeature) line: 113
IncQueryXcoreEcoreBuilder.getIncQueryDerivedFeature(XIncQueryDerivedFeature) line: 103
IncQueryXcoreEcoreBuilder.getEClass(XClass) line: 92
IncQueryXcoreEcoreBuilder(XcoreEcoreBuilder).getEClassifier(XClassifier) line: 369
IncQueryXcoreEcoreBuilder(XcoreEcoreBuilder).getEPackage(XPackage) line: 204
IncQueryXcoreEcoreBuilder.getEPackage(XPackage) line: 49
IncQueryXcoreModelAssociator.installDerivedState(DerivedStateAwareResource, boolean) line: 53
XcoreResource(DerivedStateAwareResource).installDerivedState(boolean) line: 145
XcoreResource(BatchLinkableResource).getContents() line: 124
XcoreResource$FragmentCache.get(String) line: 71
XcoreResource.getEObject(String) line: 160
SAXXMIHandler(XMLHandler).getPackageForURI(String) line: 2565
SAXXMIHandler(XMLHandler).getFactoryForPrefix(String) line: 2429
SAXXMIHandler(XMLHandler).createObjectByType(String, String, boolean) line: 1306
SAXXMIHandler(XMLHandler).createTopObject(String, String) line: 1475
SAXXMIHandler(XMLHandler).processElement(String, String, String) line: 1026
SAXXMIHandler(XMIHandler).processElement(String, String, String) line: 77
SAXXMIHandler(XMLHandler).startElement(String, String, String) line: 1008
SAXXMIHandler(XMLHandler).startElement(String, String, String, Attributes) line: 719
SAXXMIHandler(XMIHandler).startElement(String, String, String, Attributes) line: 163
SAXParserImpl$JAXPSAXParser(AbstractSAXParser).startElement(QName, XMLAttributes, Augmentations) line: 506
XMLDTDValidator.startElement(QName, XMLAttributes, Augmentations) line: 745
XMLDocumentScannerImpl(XMLDocumentFragmentScannerImpl).scanStartElement() line: 1323
XMLDocumentScannerImpl$ContentDriver.scanRootElementHook() line: 1277
XMLDocumentScannerImpl$ContentDriver(XMLDocumentFragmentScannerImpl$FragmentContentDriver).next() line: 3065
XMLDocumentScannerImpl$PrologDriver.next() line: 881
XMLDocumentScannerImpl.next() line: 607
XMLDocumentScannerImpl(XMLDocumentFragmentScannerImpl).scanDocument(boolean) line: 489
XIncludeAwareParserConfiguration(XML11Configuration).parse(boolean) line: 835
XIncludeAwareParserConfiguration(XML11Configuration).parse(XMLInputSource) line: 764
SAXParserImpl$JAXPSAXParser(XMLParser).parse(XMLInputSource) line: 123
SAXParserImpl$JAXPSAXParser(AbstractSAXParser).parse(InputSource) line: 1210
SAXParserImpl$JAXPSAXParser.parse(InputSource) line: 568
SAXParserImpl.parse(InputSource, DefaultHandler) line: 302
XMILoadImpl(XMLLoadImpl).load(XMLResource, InputStream, Map<?,?>) line: 175
XMIResourceImpl(XMLResourceImpl).doLoad(InputStream, Map<?,?>) line: 253
XMIResourceImpl(ResourceImpl).load(InputStream, Map<?,?>) line: 1518
XMIResourceImpl(ResourceImpl).load(Map<?,?>) line: 1297
AdapterFactoryEditingDomain$AdapterFactoryEditingDomainResourceSet(ResourceSetImpl).demandLoad(Resource) line: 259
AdapterFactoryEditingDomain$AdapterFactoryEditingDomainResourceSet(ResourceSetImpl).demandLoadHelper(Resource) line: 274
AdapterFactoryEditingDomain$AdapterFactoryEditingDomainResourceSet(ResourceSetImpl).getResource(URI, boolean) line: 406
CustomizedEcoreEditor(EcoreEditor).createModelGen() line: 1161
CustomizedEcoreEditor(EcoreEditor).createModel() line: 1257
CustomizedEcoreEditor.createPages() line: 176
CustomizedEcoreEditor(MultiPageEditorPart).createPartControl(Composite) line: 358
CompatibilityEditor(CompatibilityPart).createPartControl(IWorkbenchPart, Composite) line: 142
CompatibilityEditor.createPartControl(IWorkbenchPart, Composite) line: 96
CompatibilityEditor(CompatibilityPart).create() line: 323
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
Method.invoke(Object, Object...) line: 606
MethodRequestor.execute() line: 56
InjectorImpl.processAnnotated(Class<Annotation>, Object, Class<?>, PrimaryObjectSupplier, PrimaryObjectSupplier, ArrayList<Class<?>>) line: 877
InjectorImpl.processAnnotated(Class<Annotation>, Object, Class<?>, PrimaryObjectSupplier, PrimaryObjectSupplier, ArrayList<Class<?>>) line: 857
InjectorImpl.inject(Object, PrimaryObjectSupplier, PrimaryObjectSupplier) line: 119
InjectorImpl.internalMake(Class<?>, PrimaryObjectSupplier, PrimaryObjectSupplier) line: 333
InjectorImpl.make(Class<T>, PrimaryObjectSupplier) line: 254
ContextInjectionFactory.make(Class<T>, IEclipseContext) line: 162
ReflectionContributionFactory.createFromBundle(Bundle, IEclipseContext, IEclipseContext, URI) line: 102
ReflectionContributionFactory.doCreate(String, IEclipseContext, IEclipseContext) line: 71
ReflectionContributionFactory.create(String, IEclipseContext) line: 53
ContributedPartRenderer.createWidget(MUIElement, Object) line: 129
PartRenderingEngine.createWidget(MUIElement, Object) line: 949
PartRenderingEngine.safeCreateGui(MUIElement, Object, IEclipseContext) line: 633
PartRenderingEngine.safeCreateGui(MUIElement) line: 735
PartRenderingEngine.access$2(PartRenderingEngine, MUIElement) line: 706
PartRenderingEngine$7.run() line: 700
SafeRunner.run(ISafeRunnable) line: 42
PartRenderingEngine.createGui(MUIElement) line: 685
PartServiceImpl$1.handleEvent(Event) line: 90
UIEventHandler$1.run() line: 41
UISynchronizer(Synchronizer).syncExec(Runnable) line: 180
UISynchronizer.syncExec(Runnable) line: 150
Display.syncExec(Runnable) line: 4650
E4Application$1.syncExec(Runnable) line: 205
UIEventHandler.handleEvent(Event) line: 38
EventHandlerWrapper.handleEvent(Event, Permission) line: 197
EventHandlerTracker.dispatchEvent(EventHandlerWrapper, Permission, int, Event) line: 197
EventHandlerTracker.dispatchEvent(Object, Object, int, Object) line: 1
EventManager.dispatchEvent(Set<Entry<K,V>>, EventDispatcher<K,V,E>, int, E) line: 230
ListenerQueue<K,V,E>.dispatchEventSynchronous(int, E) line: 148
EventAdminImpl.dispatchEvent(Event, boolean) line: 135
EventAdminImpl.sendEvent(Event) line: 78
EventComponent.sendEvent(Event) line: 39
EventBroker.send(String, Object) line: 80
UIEventPublisher.notifyChanged(Notification) line: 58
PartStackImpl(BasicNotifierImpl).eNotify(Notification) line: 374
PartStackImpl(ElementContainerImpl<T>).setSelectedElement(T) line: 171
ModelServiceImpl.showElementInWindow(MWindow, MUIElement) line: 576
ModelServiceImpl.bringToTop(MUIElement) line: 543
PartServiceImpl.delegateBringToTop(MPart) line: 610
PartServiceImpl.bringToTop(MPart) line: 322
PartServiceImpl.showPart(MPart, EPartService$PartState) line: 1034
WorkbenchPage.busyOpenEditor(IEditorInput, String, boolean, int, IMemento, boolean) line: 3112
WorkbenchPage.access$21(WorkbenchPage, IEditorInput, String, boolean, int, IMemento, boolean) line: 3034
WorkbenchPage$8.run() line: 3016
BusyIndicator.showWhile(Display, Runnable) line: 70
WorkbenchPage.openEditor(IEditorInput, String, boolean, int, IMemento, boolean) line: 3012
WorkbenchPage.openEditor(IEditorInput, String, boolean, int) line: 2976
WorkbenchPage.openEditor(IEditorInput, String, boolean) line: 2967
IDE.openEditor(IWorkbenchPage, IFile, boolean, boolean) line: 534
IDE.openEditor(IWorkbenchPage, IFile, boolean) line: 493
EditorUtility.openInEditor(IFile, boolean) line: 360
EditorUtility.openInEditor(Object, boolean) line: 167
OpenAction.run(Object[]) line: 268
OpenAction.run(IStructuredSelection) line: 233
OpenAction(SelectionDispatchAction).dispatchRun(ISelection) line: 275
OpenAction(SelectionDispatchAction).run() line: 251
PackageExplorerActionGroup.handleOpen(ISelection, boolean) line: 376
PackageExplorerPart$4.open(ISelection, boolean) line: 538
OpenAndLinkWithEditorHelper$InternalListener.open(OpenEvent) line: 47
StructuredViewer$2.run() line: 866
SafeRunner.run(ISafeRunnable) line: 42
JFaceUtil$1.run(ISafeRunnable) line: 49
SafeRunnable.run(ISafeRunnable) line: 175
PackageExplorerPart$PackageExplorerProblemTreeViewer(StructuredViewer).fireOpen(OpenEvent) line: 864
PackageExplorerPart$PackageExplorerProblemTreeViewer(StructuredViewer).handleOpen(SelectionEvent) line: 1152
StructuredViewer$6.handleOpen(SelectionEvent) line: 1256
OpenStrategy.fireOpenEvent(SelectionEvent) line: 275
OpenStrategy.access$2(OpenStrategy, SelectionEvent) line: 269
OpenStrategy$1.handleEvent(Event) line: 309
EventTable.sendEvent(Event) line: 84
Display.sendEvent(EventTable, Event) line: 4166
Tree(Widget).sendEvent(Event) line: 1466
Tree(Widget).sendEvent(int, Event, boolean) line: 1489
Tree(Widget).sendEvent(int, Event) line: 1474
Tree(Widget).notifyListeners(int, Event) line: 1279
Display.runDeferredEvents() line: 4012
Display.readAndDispatch() line: 3651
PartRenderingEngine$9.run() line: 1113
Realm.runWithDefault(Realm, Runnable) line: 332
PartRenderingEngine.run(MApplicationElement, IEclipseContext) line: 997
E4Workbench.createAndRunUI(MApplicationElement) line: 138
Workbench$5.run() line: 610
Realm.runWithDefault(Realm, Runnable) line: 332
Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 567
PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 150
IDEApplication.start(IApplicationContext) line: 124
EclipseAppHandle.run(Object) line: 196
EclipseAppLauncher.runApplication(Object) line: 110
EclipseAppLauncher.start(Object) line: 79
EclipseStarter.run(Object) line: 354
EclipseStarter.run(String[], Runnable) line: 181
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
Method.invoke(Object, Object...) line: 606
Main.invokeFramework(String[], URL[]) line: 636
Main.basicRun(String[]) line: 591
Main.run(String[]) line: 1450
Main.main(String[]) line: 1426