Closed xdoo closed 9 years ago
ID-Format/Generierung muss noch geklärt bzw. vereinheitlicht werden.
Der guava-Eventbus kann nicht mit generischen Klassen umgehen (wegen Java TypeErasure).
Das bedeutet das update()
bei ComponentEvent<D>
auch angesprungen wird. für D != T
/**
* Eventhandler für Eventbus
*
* @param event the event
*/
@Subscribe
public void update(ComponentEvent<T> event) {
if(event.getEventType().equals(EventType.SAVE)) {
this.add(event.getEntity());
}
if(event.getEventType().equals(EventType.COPY)) {
this.add(event.getEntity());
}
if(event.getEventType().equals(EventType.DELETE)) {
this.delete(event.getItemID());
}
if(event.getEventType().equals(EventType.UPDATE)) {
this.add(event.getEntity());
}
if(event.getEventType().equals(EventType.QUERY)) {
this.addAll(event.getEntities());
}
}
Guava Github Issue (mit StackOverflow Link)
Könnte man vielleicht mit einem Type Token umgehen: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/reflect/TypeToken.html
So etwas ähnliches wird zb auch bei ModelMapper verwendet.
On Tuesday, September 1, 2015, Peter Müller notifications@github.com wrote:
Der guava-Eventbus kann nicht mit generischen Klassen umgehen (wegen Java TypeErasure).
Das bedeutet das update() bei ComponentEvent
auch angesprungen wird. für D != T /* * Eventhandler für Eventbus * * @param event the event / @Subscribepublic void update(ComponentEvent
event) { if(event.getEventType().equals(EventType.SAVE)) { this.add(event.getEntity()); } if(event.getEventType().equals(EventType.COPY)) { this.add(event.getEntity()); } if(event.getEventType().equals(EventType.DELETE)) { this.delete(event.getItemID()); } if(event.getEventType().equals(EventType.UPDATE)) { this.add(event.getEntity()); } if(event.getEventType().equals(EventType.QUERY)) { this.addAll(event.getEntities()); } } Guava Github Issue https://github.com/google/guava/issues/1959 (mit StackOverflow Link)
— Reply to this email directly or view it on GitHub https://github.com/xdoo/vaadin-demo/issues/26#issuecomment-136587914.
Komponenten sind generisch erstellt. Der Rest gehört zum Eventbus. #82
Derzeit gibt es noch recht viele spezielle Komponenten, die in vielen Teilen gleich sind (z.B. BuergerBackButton), sich aber vor allem bei Referenzen auf andere Klassen - wie beispielsweise Controller - unterscheiden. Prinzipiell ist es zwar kein Problem, wenn der Code generiert wird, aber eine gewisse Abstraktion ist doch wünschenswert. Deshalb sollten so viele (Custom UI) Komponenten wie möglich generisch gestaltet werden.