Project

General

Profile

Actions

feature request #10196

closed

Hybrid structure-state terms

Added by Andreas Müller 2 months ago. Updated about 1 month ago.

Status:
Closed
Priority:
Priority14
Category:
cdm
Target version:
Start date:
Due date:
% Done:

90%

Estimated time:
Severity:
normal
Tags:

Description

copied from #10133#note-1

some structures can also be used as states in a character matrix. We need to decide how to handle them.
Solutions are:

  1. Duplicate them (and link to each other)
  2. Create a new term type "Structure-State" (or "State-Structure")
  3. Handle as special structures that can be used in state context, too
  4. Handle as special states that can be used in structure context, too
  5. any other

Solution 1:

  • Pro: easy to implement, mostly on data level, only the way how to link them needs to be discussed
  • Con: redundancy on all levels (editing, snynchronization, evaluation, ...)

Solution 2:

Pro: No redundancy

  • Con:
    • the current term model requires that these terms come in a separate vocabulary as vocabularies only allow terms of the same term type (and of a subtype? - needs to be checked!);
    • same problem in the structure tree (TermGraphBase);
    • same problem with state tree/list (TermGraphBase)
    • Class State preferrably changed to DefinedTerm to make StateData.state work with hybrid structures, too (also Feature.supportedCategoricalEnumerations, but maybe not a strict requirement)

Solution 3:

  • Pro: No redundancy
  • Con:
    • problem with state tree/list (TermGraphBase)
    • Class State preferrably changed to DefinedTerm to make StateData.state work with hybrid structures, too (also Feature.supportedCategoricalEnumerations, but maybe not a strict requirement)

Solution 4:

  • Pro: No redundancy
  • Con:
    • Character.structure needs to be adapted to allow a state, too
    • structure tree (TermGraphBase) needs to be adapted, to allow states, too, at least for kind-of relationships

Solution 5: ??

Some ideas:

  • maybe State (or StateData.state) needs to be much more flexibel anyway, not only for descriptions but also for other types of CategoricalData. Generally a State is an entry in a selection list for a given feature. In the most general way it could be any CdmBase. But even less general one can imagine that each DefinedTermBase could be a possible entry . So if we do want to allow this State might be only a default for values that are not available elsewhere. E.g. some databases handle endemism as separate feature while the default is to handle it as a distribution with one of the endemic status. "Endemic (for the given area)" this way could stay a distribution status (PresenceAbsenceTerm) while it can still be used as a state in CategoricalData.
    Are there any serious issues if we handle it this way?

  • The structure-state terms always seem to be kind-of structures related to their parent (NoK: Ja ich glaube so ist das)

Final solution:

  • like above states can be any defined terms now where ever they are currently used, so this is in StateData, Feature.supportedCategoricalEnumerations and FeatureState
  • in TaxEditor the Feature.supportedCategoricalEnumerations combo is extended by structure vocabularies (or collections later)

Open issues:

  • think about sub-termtype "Character States"
  • fix "TODO 10196" (2 left, but only in jaxb and sdd.out, so not so important for now

Related issues

Related to EDIT - feature request #6794: Improve term structureIn ProgressAndreas Müller

Actions
Copied from EDIT - feature request #10133: Improve ontology state vocabulariesIn ProgressAndreas Müller

Actions
Actions #1

Updated by Andreas Müller 2 months ago

Actions #2

Updated by Andreas Müller 2 months ago

  • Description updated (diff)
Actions #3

Updated by Andreas Müller 2 months ago

  • Description updated (diff)
Actions #4

Updated by Andreas Müller 2 months ago

AM:

Erstmal würde ich mir gerne nochmal ins Gedächtnis zurückrufen, inwiefern Terme beide Eigenschaften (State/Struktur) haben können. Kannst du 2-3 Beispiele nennen, bei der ein Character einen State hat der anderweitig auch als Struktur verwendet werden könnte? Geht es da nur um so Characters wie „Stuktur des XY“ oder ist das auch noch komplexer?
Ich frage, weil es davon abhängig sein könnte, inwieweit es Sinn macht beide Terme zu separat zu bewahren oder sie hybrid als ein Term zu behandeln.

NoK:

Structures: zur Frage inwiefern Terme beide Eigenschaften (State/Struktur) haben können: Structures als states werden insbesondere bei der (nicht aggregierten) Beschreibung höheren Taxa benötigt, wenn die spezifischen Ausprägungen, die eine allgemeinere Struktur in Kindtaxa hat, angegeben wird, also: "Frucht eine Beere, Kapsel oder Nuss". Oder: "Entire plant+growth form: Halbstrauch, Strauch oder Baum", das aber genauso auch bei Kindtaxa. In der Beschreibung der Kindtaxa würde die Beere, die Kapsel oder Nuss dann als Strukturterme verwendet, denen States zugeordnet werden. Ist aber auch nicht zwingend, weil ich ja erst "Frucht+Architecture: Nuss" bauen könnte (wäre aber z.B. bei Compositae unüblich). Andere Falltypen sind mir gerade nicht präsent ... Schaut man sich das Subvokabular an, dann ist es sehr groß und in den allermeisten Fällen fällt mir spontan keine Verwendung als States ein, andererseits ist es aber für den aufgeführten Zweck kaum vollständig

Actions #5

Updated by Andreas Müller 2 months ago

  • Description updated (diff)
Actions #6

Updated by Andreas Müller 2 months ago

  • Description updated (diff)
Actions #7

Updated by Andreas Müller about 2 months ago

  • Description updated (diff)
Actions #8

Updated by Andreas Müller about 2 months ago

  • Description updated (diff)
Actions #9

Updated by Andreas Müller about 2 months ago

  • Description updated (diff)
Actions #10

Updated by Andreas Müller about 2 months ago

Actions #11

Updated by Andreas Müller about 2 months ago

  • Status changed from New to Resolved
  • % Done changed from 0 to 70

This should be mostly ready. Still need to handle open issues and test in TaxEditor (add voc to characters and in matrix)

Actions #12

Updated by Andreas Müller about 2 months ago

  • Target version changed from CDM UML 5.36 to Release 5.35
Actions #13

Updated by Andreas Müller about 2 months ago

  • Description updated (diff)
Actions #14

Updated by Andreas Müller about 2 months ago

  • Description updated (diff)
  • % Done changed from 70 to 90

This is more or less fixed now and tested in Character editor and in matrix.

Not yet tested in PolytomousKeys(needed?) and dataportal?

Actions #15

Updated by Andreas Müller about 2 months ago

  • Description updated (diff)
  • Assignee changed from Andreas Müller to Katja Luther

Can you please review. When done we can create a ticket for the remaining open issue.

Actions #16

Updated by Andreas Müller about 2 months ago

  • Priority changed from Highest to Priority14
Actions #17

Updated by Katja Luther about 1 month ago

  • Status changed from Resolved to Feedback
  • Assignee changed from Katja Luther to Andreas Müller

Clicking on character "growth form" in Bupleurum instance results in StackOverflowException (in DescriptiveDataSet Editor, TermEditor and TermTreeEditor):

last remote service : http://localhost:8081/remoting/vocabulary.service
last remote method : getDbSchemaVersion
last remote request client time : 2023-01-03T09:05:41.353
client error time : 2023-01-03T09:05:41.463
login : admin
editor version : 5.35.0.qualifier
server : localhost (localhost-dev)
schema version : 5.35.1.0.20221218
os : Windows Server 2012 R2 6.3 amd64
java : 1.8.0_131
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.StackOverflowError)
    at org.eclipse.swt.SWT.error(SWT.java:4533)
    at org.eclipse.swt.SWT.error(SWT.java:4448)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4211)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3827)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1121)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1022)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:150)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:693)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:610)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
    at eu.etaxonomy.taxeditor.Application.start(Application.java:20)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1519)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1492)
Caused by: java.lang.StackOverflowError
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
        ...
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
    at org.springframework.remoting.support.RemoteInvocationUtils.fillInClientStackTraceIfPossible(RemoteInvocationUtils.java:45)
    at org.springframework.remoting.support.RemoteInvocationResult.recreate(RemoteInvocationResult.java:149)
    at org.springframework.remoting.support.RemoteInvocationBasedAccessor.recreateRemoteInvocationResult(RemoteInvocationBasedAccessor.java:85)
    at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:158)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
    at com.sun.proxy.$Proxy91.findByTermType(Unknown Source)
    at eu.etaxonomy.taxeditor.ui.combo.VocabularyComboElement.getVocabularies(VocabularyComboElement.java:236)
    at eu.etaxonomy.taxeditor.ui.combo.VocabularyComboElement.<init>(VocabularyComboElement.java:64)
    at eu.etaxonomy.taxeditor.ui.combo.VocabularyComboElement.<init>(VocabularyComboElement.java:54)
    at eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.createVocabularyComboElement(CdmFormFactory.java:1165)
    at eu.etaxonomy.taxeditor.ui.section.vocabulary.StateVocabularyCollectionElement.createControls(StateVocabularyCollectionElement.java:40)
    at eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement.<init>(AbstractEntityCollectionElement.java:115)
    at eu.etaxonomy.taxeditor.ui.section.vocabulary.StateVocabularyCollectionElement.<init>(StateVocabularyCollectionElement.java:35)
    at eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.createEntityCollectionElement(CdmFormFactory.java:2851)
    at eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection.createElementComposite(AbstractEntityCollectionSection.java:282)
    at eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection.createDynamicContents(AbstractEntityCollectionSection.java:270)
    at eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection.renderContent(AbstractEntityCollectionSection.java:240)
    at eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection.internalUpdateSection(AbstractEntityCollectionSection.java:222)
    at eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection.setEntity(AbstractEntityCollectionSection.java:179)
    at eu.etaxonomy.taxeditor.ui.section.feature.CharacterDetailElement.createControls(CharacterDetailElement.java:137)
    at eu.etaxonomy.taxeditor.ui.section.feature.CharacterDetailElement.createControls(CharacterDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.updateContent(AbstractCdmDetailElement.java:103)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.setEntity(AbstractCdmDetailElement.java:83)
    at eu.etaxonomy.taxeditor.ui.section.feature.CharacterDetailElement.setEntity(CharacterDetailElement.java:171)
    at eu.etaxonomy.taxeditor.ui.section.feature.CharacterDetailElement.setEntity(CharacterDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:153)
    at eu.etaxonomy.taxeditor.ui.section.feature.CharacterNodeDetailElement.createControls(CharacterNodeDetailElement.java:46)
    at eu.etaxonomy.taxeditor.ui.section.feature.CharacterNodeDetailElement.createControls(CharacterNodeDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.updateContent(AbstractCdmDetailElement.java:103)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.setEntity(AbstractCdmDetailElement.java:83)
    at eu.etaxonomy.taxeditor.ui.section.feature.CharacterNodeDetailElement.setEntity(CharacterNodeDetailElement.java:72)
    at eu.etaxonomy.taxeditor.ui.section.feature.CharacterNodeDetailElement.setEntity(CharacterNodeDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:153)
    at eu.etaxonomy.taxeditor.view.detail.CdmSectionPart.setFormInput(CdmSectionPart.java:176)
    at org.eclipse.ui.forms.ManagedForm.setInput(ManagedForm.java:210)
    at eu.etaxonomy.taxeditor.view.e4.AbstractCdmDataViewer.refresh(AbstractCdmDataViewer.java:152)
    at eu.etaxonomy.taxeditor.view.e4.AbstractCdmDataViewer.setInput(AbstractCdmDataViewer.java:135)
    at eu.etaxonomy.taxeditor.view.e4.details.DetailsViewerE4.setInput(DetailsViewerE4.java:207)
    at eu.etaxonomy.taxeditor.view.e4.details.DetailsViewerE4.setInput(DetailsViewerE4.java:174)
    at eu.etaxonomy.taxeditor.view.e4.AbstractCdmEditorPart.showViewer(AbstractCdmEditorPart.java:311)
    at eu.etaxonomy.taxeditor.view.e4.details.DetailsPartE4.selectionChanged_internal(DetailsPartE4.java:108)
    at eu.etaxonomy.taxeditor.view.e4.AbstractCdmEditorPart$DelaySelection.run(AbstractCdmEditorPart.java:136)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
    ... 24 more
Actions #18

Updated by Andreas Müller about 1 month ago

  • Assignee changed from Andreas Müller to Katja Luther

Katja Luther wrote in #note-17:

Clicking on character "growth form" in Bupleurum instance results in StackOverflowException (in DescriptiveDataSet Editor, TermEditor and TermTreeEditor):

last remote service : http://localhost:8081/remoting/vocabulary.service
last remote method : getDbSchemaVersion
last remote request client time : 2023-01-03T09:05:41.353
client error time : 2023-01-03T09:05:41.463
login : admin
editor version : 5.35.0.qualifier
server : localhost (localhost-dev)
schema version : 5.35.1.0.20221218
os : Windows Server 2012 R2 6.3 amd64
java : 1.8.0_131
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.StackOverflowError)
  at org.eclipse.swt.SWT.error(SWT.java:4533)
  at org.eclipse.swt.SWT.error(SWT.java:4448)
  at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
  at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4211)
  at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3827)
  at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1121)
  at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
  at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1022)
  at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:150)
  at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:693)
  at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
  at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:610)
  at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
  at eu.etaxonomy.taxeditor.Application.start(Application.java:20)
  at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
  at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
  at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
  at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
  at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498)
  at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
  at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
  at org.eclipse.equinox.launcher.Main.run(Main.java:1519)
  at org.eclipse.equinox.launcher.Main.main(Main.java:1492)
Caused by: java.lang.StackOverflowError
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
        ...
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at eu.etaxonomy.cdm.api.service.VocabularyServiceImpl.findByTermType(VocabularyServiceImpl.java:80)
  at org.springframework.remoting.support.RemoteInvocationUtils.fillInClientStackTraceIfPossible(RemoteInvocationUtils.java:45)
  at org.springframework.remoting.support.RemoteInvocationResult.recreate(RemoteInvocationResult.java:149)
  at org.springframework.remoting.support.RemoteInvocationBasedAccessor.recreateRemoteInvocationResult(RemoteInvocationBasedAccessor.java:85)
  at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:158)
  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
  at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
  at com.sun.proxy.$Proxy91.findByTermType(Unknown Source)
  at eu.etaxonomy.taxeditor.ui.combo.VocabularyComboElement.getVocabularies(VocabularyComboElement.java:236)
  at eu.etaxonomy.taxeditor.ui.combo.VocabularyComboElement.<init>(VocabularyComboElement.java:64)
  at eu.etaxonomy.taxeditor.ui.combo.VocabularyComboElement.<init>(VocabularyComboElement.java:54)
  at eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.createVocabularyComboElement(CdmFormFactory.java:1165)
  at eu.etaxonomy.taxeditor.ui.section.vocabulary.StateVocabularyCollectionElement.createControls(StateVocabularyCollectionElement.java:40)
  at eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement.<init>(AbstractEntityCollectionElement.java:115)
  at eu.etaxonomy.taxeditor.ui.section.vocabulary.StateVocabularyCollectionElement.<init>(StateVocabularyCollectionElement.java:35)
  at eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.createEntityCollectionElement(CdmFormFactory.java:2851)
  at eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection.createElementComposite(AbstractEntityCollectionSection.java:282)
  at eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection.createDynamicContents(AbstractEntityCollectionSection.java:270)
  at eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection.renderContent(AbstractEntityCollectionSection.java:240)
  at eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection.internalUpdateSection(AbstractEntityCollectionSection.java:222)
  at eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection.setEntity(AbstractEntityCollectionSection.java:179)
  at eu.etaxonomy.taxeditor.ui.section.feature.CharacterDetailElement.createControls(CharacterDetailElement.java:137)
  at eu.etaxonomy.taxeditor.ui.section.feature.CharacterDetailElement.createControls(CharacterDetailElement.java:1)
  at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.updateContent(AbstractCdmDetailElement.java:103)
  at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.setEntity(AbstractCdmDetailElement.java:83)
  at eu.etaxonomy.taxeditor.ui.section.feature.CharacterDetailElement.setEntity(CharacterDetailElement.java:171)
  at eu.etaxonomy.taxeditor.ui.section.feature.CharacterDetailElement.setEntity(CharacterDetailElement.java:1)
  at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:153)
  at eu.etaxonomy.taxeditor.ui.section.feature.CharacterNodeDetailElement.createControls(CharacterNodeDetailElement.java:46)
  at eu.etaxonomy.taxeditor.ui.section.feature.CharacterNodeDetailElement.createControls(CharacterNodeDetailElement.java:1)
  at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.updateContent(AbstractCdmDetailElement.java:103)
  at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.setEntity(AbstractCdmDetailElement.java:83)
  at eu.etaxonomy.taxeditor.ui.section.feature.CharacterNodeDetailElement.setEntity(CharacterNodeDetailElement.java:72)
  at eu.etaxonomy.taxeditor.ui.section.feature.CharacterNodeDetailElement.setEntity(CharacterNodeDetailElement.java:1)
  at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:153)
  at eu.etaxonomy.taxeditor.view.detail.CdmSectionPart.setFormInput(CdmSectionPart.java:176)
  at org.eclipse.ui.forms.ManagedForm.setInput(ManagedForm.java:210)
  at eu.etaxonomy.taxeditor.view.e4.AbstractCdmDataViewer.refresh(AbstractCdmDataViewer.java:152)
  at eu.etaxonomy.taxeditor.view.e4.AbstractCdmDataViewer.setInput(AbstractCdmDataViewer.java:135)
  at eu.etaxonomy.taxeditor.view.e4.details.DetailsViewerE4.setInput(DetailsViewerE4.java:207)
  at eu.etaxonomy.taxeditor.view.e4.details.DetailsViewerE4.setInput(DetailsViewerE4.java:174)
  at eu.etaxonomy.taxeditor.view.e4.AbstractCdmEditorPart.showViewer(AbstractCdmEditorPart.java:311)
  at eu.etaxonomy.taxeditor.view.e4.details.DetailsPartE4.selectionChanged_internal(DetailsPartE4.java:108)
  at eu.etaxonomy.taxeditor.view.e4.AbstractCdmEditorPart$DelaySelection.run(AbstractCdmEditorPart.java:136)
  at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
  at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
  ... 24 more

This should be fixed. Can you please review again? (but wait until server builds again)

Actions #19

Updated by Katja Luther about 1 month ago

  • Status changed from Feedback to Closed
  • Assignee changed from Katja Luther to Andreas Müller

works as expected now.

Actions

Also available in: Atom PDF