kasemir / org.csstudio.display.builder

Update of org.csstudio.opibuilder.*
Eclipse Public License 1.0
2 stars 10 forks source link

Strange behaviour with macros #506

Closed claudio-rosati closed 5 years ago

claudio-rosati commented 5 years ago

Hello Kay,

a colleague has a strange behaviour with macros:

CSSTUDIO-969.zip

I've tested in my macos and CentOS virtual machine and I always have the following result:

Screenshot 2019-03-15 at 11 26 55

Another trusted colleague (one of my 2 beta-testers, the other being the reporter) has tested on his CentOS virtual machine and he has the same behaviour.

The reporter, instead, sees the following:

csstudio-default-macro

with the following exceptions in console

2019-03-15 11:43:54.399 WARNING [Thread 1] org.csstudio.display.builder.model.MacroizedWidgetProperty (getValue) - Widget 'Label' (label) property text cannot expand macros for '$(TEXT=default)'
java.lang.NullPointerException
    at org.csstudio.display.builder.model.macros.MacroOrPropertyProvider.getValue(MacroOrPropertyProvider.java:71)
    at org.csstudio.display.builder.model.macros.MacroHandler.replace(MacroHandler.java:105)
    at org.csstudio.display.builder.model.macros.MacroHandler.replace(MacroHandler.java:55)
    at org.csstudio.display.builder.model.MacroizedWidgetProperty.getValue(MacroizedWidgetProperty.java:154)
    at org.csstudio.display.builder.representation.javafx.widgets.LabelRepresentation.updateChanges(LabelRepresentation.java:163)
    at org.csstudio.display.builder.representation.javafx.widgets.JFXBaseRepresentation.createComponents(JFXBaseRepresentation.java:63)
    at org.csstudio.display.builder.representation.javafx.widgets.JFXBaseRepresentation.createComponents(JFXBaseRepresentation.java:1)
    at org.csstudio.display.builder.representation.ToolkitRepresentation.representWidget(ToolkitRepresentation.java:295)
    at org.csstudio.display.builder.representation.ToolkitRepresentation.representChildren(ToolkitRepresentation.java:266)
    at org.csstudio.display.builder.representation.ToolkitRepresentation.representModel(ToolkitRepresentation.java:250)
    at org.csstudio.display.builder.representation.javafx.JFXRepresentation.representModel(JFXRepresentation.java:740)
    at org.csstudio.display.builder.editor.DisplayEditor.setModel(DisplayEditor.java:556)
    at org.csstudio.display.builder.editor.rcp.DisplayEditorPart.lambda$9(DisplayEditorPart.java:296)
    at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
    at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
    at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2116)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4181)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1150)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1039)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:680)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:594)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
    at org.csstudio.utility.product.Workbench.runWorkbench(Workbench.java:99)
    at org.csstudio.startup.application.Application.startApplication(Application.java:265)
    at org.csstudio.startup.application.Application.start(Application.java:119)
    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:653)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1499)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1472)

2019-03-15 11:43:54.402 INFO [Thread 1] org.csstudio.display.builder.model.MacroizedWidgetProperty (getValue) - Widget 'Label' (label) 'text' is not fully resolved: $(TEXT=default)
2019-03-15 11:43:54.404 WARNING [Thread 1] org.csstudio.display.builder.model.MacroizedWidgetProperty (getValue) - Widget 'Label_2' (label) property text cannot expand macros for '$(TEXT)'
java.lang.NullPointerException
    at org.csstudio.display.builder.model.macros.MacroOrPropertyProvider.getValue(MacroOrPropertyProvider.java:71)
    at org.csstudio.display.builder.model.macros.MacroHandler.replace(MacroHandler.java:105)
    at org.csstudio.display.builder.model.macros.MacroHandler.replace(MacroHandler.java:55)
    at org.csstudio.display.builder.model.MacroizedWidgetProperty.getValue(MacroizedWidgetProperty.java:154)
    at org.csstudio.display.builder.representation.javafx.widgets.LabelRepresentation.updateChanges(LabelRepresentation.java:163)
    at org.csstudio.display.builder.representation.javafx.widgets.JFXBaseRepresentation.createComponents(JFXBaseRepresentation.java:63)
    at org.csstudio.display.builder.representation.javafx.widgets.JFXBaseRepresentation.createComponents(JFXBaseRepresentation.java:1)
    at org.csstudio.display.builder.representation.ToolkitRepresentation.representWidget(ToolkitRepresentation.java:295)
    at org.csstudio.display.builder.representation.ToolkitRepresentation.representChildren(ToolkitRepresentation.java:266)
    at org.csstudio.display.builder.representation.ToolkitRepresentation.representModel(ToolkitRepresentation.java:250)
    at org.csstudio.display.builder.representation.javafx.JFXRepresentation.representModel(JFXRepresentation.java:740)
    at org.csstudio.display.builder.editor.DisplayEditor.setModel(DisplayEditor.java:556)
    at org.csstudio.display.builder.editor.rcp.DisplayEditorPart.lambda$9(DisplayEditorPart.java:296)
    at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
    at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
    at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2116)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4181)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1150)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1039)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:680)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:594)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
    at org.csstudio.utility.product.Workbench.runWorkbench(Workbench.java:99)
    at org.csstudio.startup.application.Application.startApplication(Application.java:265)
    at org.csstudio.startup.application.Application.start(Application.java:119)
    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:653)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1499)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1472)

2019-03-15 11:43:54.406 INFO [Thread 1] org.csstudio.display.builder.model.MacroizedWidgetProperty (getValue) - Widget 'Label_2' (label) 'text' is not fully resolved: $(TEXT)
2019-03-15 11:44:48.983 WARNING [Thread 1] org.csstudio.display.builder.model.MacroizedWidgetProperty (getValue) - Widget 'Label' (label) property text cannot expand macros for '$(TEXT=default)'
java.lang.NullPointerException
    at org.csstudio.display.builder.model.macros.MacroOrPropertyProvider.getValue(MacroOrPropertyProvider.java:71)
    at org.csstudio.display.builder.model.macros.MacroHandler.replace(MacroHandler.java:105)
    at org.csstudio.display.builder.model.macros.MacroHandler.replace(MacroHandler.java:55)
    at org.csstudio.display.builder.model.MacroizedWidgetProperty.getValue(MacroizedWidgetProperty.java:154)
    at org.csstudio.display.builder.representation.javafx.widgets.LabelRepresentation.updateChanges(LabelRepresentation.java:163)
    at org.csstudio.display.builder.representation.javafx.widgets.JFXBaseRepresentation.createComponents(JFXBaseRepresentation.java:63)
    at org.csstudio.display.builder.representation.javafx.widgets.JFXBaseRepresentation.createComponents(JFXBaseRepresentation.java:1)
    at org.csstudio.display.builder.representation.ToolkitRepresentation.representWidget(ToolkitRepresentation.java:295)
    at org.csstudio.display.builder.representation.ToolkitRepresentation.representChildren(ToolkitRepresentation.java:266)
    at org.csstudio.display.builder.representation.ToolkitRepresentation.representModel(ToolkitRepresentation.java:250)
    at org.csstudio.display.builder.representation.javafx.JFXRepresentation.representModel(JFXRepresentation.java:740)
    at org.csstudio.display.builder.rcp.run.RCP_JFXRepresentation.representModel(RCP_JFXRepresentation.java:155)
    at org.csstudio.display.builder.rcp.RuntimeViewPart.representModel(RuntimeViewPart.java:691)
    at org.csstudio.display.builder.rcp.RuntimeViewPart.lambda$5(RuntimeViewPart.java:673)
    at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
    at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
    at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2116)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4181)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1150)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1039)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:680)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:594)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
    at org.csstudio.utility.product.Workbench.runWorkbench(Workbench.java:99)
    at org.csstudio.startup.application.Application.startApplication(Application.java:265)
    at org.csstudio.startup.application.Application.start(Application.java:119)
    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:653)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1499)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1472)

2019-03-15 11:44:48.984 INFO [Thread 1] org.csstudio.display.builder.model.MacroizedWidgetProperty (getValue) - Widget 'Label' (label) 'text' is not fully resolved: $(TEXT=default)
2019-03-15 11:44:48.987 WARNING [Thread 1] org.csstudio.display.builder.model.MacroizedWidgetProperty (getValue) - Widget 'Label_2' (label) property text cannot expand macros for '$(TEXT)'
java.lang.NullPointerException
    at org.csstudio.display.builder.model.macros.MacroOrPropertyProvider.getValue(MacroOrPropertyProvider.java:71)
    at org.csstudio.display.builder.model.macros.MacroHandler.replace(MacroHandler.java:105)
    at org.csstudio.display.builder.model.macros.MacroHandler.replace(MacroHandler.java:55)
    at org.csstudio.display.builder.model.MacroizedWidgetProperty.getValue(MacroizedWidgetProperty.java:154)
    at org.csstudio.display.builder.representation.javafx.widgets.LabelRepresentation.updateChanges(LabelRepresentation.java:163)
    at org.csstudio.display.builder.representation.javafx.widgets.JFXBaseRepresentation.createComponents(JFXBaseRepresentation.java:63)
    at org.csstudio.display.builder.representation.javafx.widgets.JFXBaseRepresentation.createComponents(JFXBaseRepresentation.java:1)
    at org.csstudio.display.builder.representation.ToolkitRepresentation.representWidget(ToolkitRepresentation.java:295)
    at org.csstudio.display.builder.representation.ToolkitRepresentation.representChildren(ToolkitRepresentation.java:266)
    at org.csstudio.display.builder.representation.ToolkitRepresentation.representModel(ToolkitRepresentation.java:250)
    at org.csstudio.display.builder.representation.javafx.JFXRepresentation.representModel(JFXRepresentation.java:740)
    at org.csstudio.display.builder.rcp.run.RCP_JFXRepresentation.representModel(RCP_JFXRepresentation.java:155)
    at org.csstudio.display.builder.rcp.RuntimeViewPart.representModel(RuntimeViewPart.java:691)
    at org.csstudio.display.builder.rcp.RuntimeViewPart.lambda$5(RuntimeViewPart.java:673)
    at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
    at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
    at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2116)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4181)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1150)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1039)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:680)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:594)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
    at org.csstudio.utility.product.Workbench.runWorkbench(Workbench.java:99)
    at org.csstudio.startup.application.Application.startApplication(Application.java:265)
    at org.csstudio.startup.application.Application.start(Application.java:119)
    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:653)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1499)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1472)

2019-03-15 11:44:48.988 INFO [Thread 1] org.csstudio.display.builder.model.MacroizedWidgetProperty (getValue) - Widget 'Label_2' (label) 'text' is not fully resolved: $(TEXT)

We use the same virtual machine, same Java and CS-Studio version.

Can you please try to run the examples and tell me what do you have?

kasemir commented 5 years ago

I cannot reproduce the error. I see what you see, "default".

Unclear how that NPE could happen. It should mean that the widget has no parent (parent == null), but w/o a parent I don't see how the representation would try to represent it.

claudio-rosati commented 5 years ago

Thank you Kay.