Hallo,
ich habe eine CA und ein PlugIn in der Sidebar. Nun möchte ich, dass diese beiden kommunizieren. Nehmen wir der Einfachheit halber an, ich gebe in der Sidebar einen Wert ein, der auf Knopfdruck an den Propertybroker übertragen werden soll, und auf einen Knopfdruck in der CA in einer View in dieser angezeigt werden soll. Nun habe ich inzwischen allerlei gelesen von WSDL, Actions, und eben diesem PropertyBroker. Wenn ich in der Sidebar eine Property wie folgt anlege:
final PropertyValue value = PBUtil.createPropertyValue("SampleNsfProperty", "SampleNsfPropertyValue");
SWTHelper.changedProperties(new PropertyValue[]{value}, SideBarView.this);
mit PBUtil.createPropertyValue:
public static PropertyValue createPropertyValue(String propertyName, String propertyValue){
PropertyBroker broker = null;
broker = PropertyBrokerFactory.getBroker();
try {
Property prop = PropertyFactory.createProperty();
return PropertyFactory.createPropertyValue(prop, propertyValue);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
und dann via
PropertyBroker broker = null;
Property newProp = null;
try{
broker = PropertyBrokerFactory.getBroker();
newProp = broker.getProperty(XMLNS_XSD, propertyName);
...
auf die Property zugreifen will, bekomme ich null zurück.
Wie komme ich denn nun an meine gesetzte Property (oder geht dies ausschliesslich über den WSDL/Action-Weg)?
Property-Objekte die über
zurückkommen, sehen im Debugger IMMER so aus:
---Property---
name = sampleProperty
type = string
namespace = http://www.w3.org/2001/XMLSchema
class = java.lang.String
direction = OUT
title key =
description key =
nls file name = null
content type = {}
context data = {}
------
obwohl ich vorher wie oben gezeigt, einen Wert zugewiesen habe. Sollte dieser jetzt nicht in "context data" stehen?
ok, inzwischen habe ich eine WSDL angelegt, eine Action und Sidebar und View im CAE miteinander verbunden. Die Action löst aber nicht aus. Sollte die execute Methode der Action nicht aufgerufen werden, sobald
SWTHelper.changedProperties(...);
aufgerufen wurde?
inzwischen habe ich rausgefunden, dass ich in der entsprechenden View an den PropertyBroker einen PropertyBrokerListener hängen kann, und dieser feuert sofort, wenn sich was ändert. Von dem mitgeliefertem Event kann man dann das zu übertragende Objekt bekommen. Ist zwar nicht wirklich schön, zunächst tut es aber das was es soll.
broker.addPropertyBrokerListener(new PropertyBrokerListener() {
public void handleEvent(PropertyBrokerEvent arg0) {
if (arg0 instanceof PropertyBrokerEvent) {
PropertyValue value = arg0.getPropertyValue();
Object v = value.getValue();
(trotzdem würde ich ganz gerne die Sache mit den Actions, Wires und Co irgendwie hinbekommen, also falls noch jemand einen Tip hat, wäre ich dankbar)