Archiv für die Kategorie 'software-entwicklung'

GWT setFocus() – Deferred Command

Freitag, 30. Oktober 2009

Ich hatte vor kurzem im heiß geliebten IE6 das Problem, dass das Setzen des Focus auf eine TextBox mittels der Methode “setFocus()” keine Auswirkung hatte. Im Firefox hingegen hat es auf Anhieb geklappt. Nach kurzem rumprobieren hab ich es mit Hilfe eines sogenannten “Deferred Commands” – durch die Klasse DeferredCommand – gelöst. Damit ist es möglich, ein Quellcode-Abschnitt, welcher in einem Command gekapselt wird (siehe Entwurfsmuster Command Pattern), ausserhalb des aktuellen Kontextes NACH allen Handlern auszuführen. Die Umsetzung sieht dann wie folgt aus:

 DeferredCommand.add(new Command() {
      public void execute() {
        myTextbox.setFocus(true);
      }
    });

Und siehe da… wenn der Focus erst ganz zum Schluss des aktuellen Call-Stacks ausgeführt wird, klappts auch mit dem IE6 !

Java und die Klasse “Void”

Samstag, 18. Juli 2009

Zur Erstellung einer Übersichtsseite einer REST-like WebService-Schnittstelle musste ich per Reflections mehrere Klassen analysieren. Dabei musste ich auch den Rückgabewert einer Methode ausgeben, an den man wie folgt gelangt:

Class returnType = method.getReturnType();

Dabei bin ich davon ausgegangen, dass bei Methoden, welche keinen Rückgabewert haben, null zurückgegeben wird. Jedoch habe ich mich darin getäuscht. Denn statt null wird wird ein Objekt der Klasse “void” zurückgeliefert. In der Java API Doc steht zur Klasse folgende Beschreibung:

The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the Java keyword void.

Wurde bis jetzt noch nicht schlau daraus warum es die Platzhalter-Klasse “Void” gibt… naja ich gebs halt einfach mal aus. ;)

GWT 1.7 released – Bugfixing, Safari 4, Firefox 3.5, IE 8

Dienstag, 14. Juli 2009

Wie ich gerade auf der GWT-Homepage entdeckt habe, wurde GWT 1.7 released. Das Release enthält hauptsächlich kritische Bugfixes und stellt die Kompatibilität zu IE 8, FF 3.5 und Safari 4 sicher.
Was mich jedoch besonders freut ist, dass mein gemeldeter Bug im Zuge der Version 1.7 gefixt wurde. Und das bei lediglich 8 Bug-Fixes… yiiiha ;)

GWT 1.6.4 – IlegalArgumentException in Date.valueOf()

Montag, 15. Juni 2009

Ich arbeite jetzt schon mehrere Monate an einem GWT-Client als Aufsatz zu einer J2EE Anwendung. Dabei kommt nicht GWT-RPC zum Einsatz, welches sich ja das Marshalling bzw. Unmarshalling direkt mitbringt, sondern diese Aufgaben wurden selbst implementiert. Der Grund dafür ist die Unabhängigkeit einer nicht proprietären Lösung, welche nötig für weitere Clients war.

Anscheinend nutzen jedoch wohl die meisten GWT-RPC, denn ich bin auf einen üblen Bug in einer recht wichtigen Methode, nähmlich in Date.valueOf(), gestoßen. Es ist darin nicht möglich ein Date-Objekt anhand bspw. dem String 2009-08-10 zu erstellen. Das fieße dabei ist noch, das im Hosted mode alles funktioniert aber im Web Mode dann die große Überraschung kommt… IllegalArgumentException innerhalb Date.valueOf().

Nach näherem Durchwühlen des Sourcecodes der emulierten Date.valueOf()-Methode war der Grund schnell klar. Die Monate und Tage werden mittels der Methode Integer.decode() in einen Integer umgewandelt. Das interessante ist jedoch, das diese Methode bei Zahlen mit führenden Nullen von einer Oktalzahl ausgeht. Da es die 8 jedoch nicht im Oktalsystem gibt, fliegt eine unerwartete Exception. Die Lösung dafür ist vor dem Aufruf von Date.valueOf() die Nullen vor dem Tag und dem Monat entfernen.

Das schöne daran war jedoch die schnelle Reaktion von google nach Erstellen eines Tickets (http://code.google.com/p/google-web-toolkit/issues/detail?id=3731&q=date.valueof). Innerhalb von 2 Tagen wurde das Ticket validiert, als kritisch eingestuft und der Bug wird beim nächsten Release gefixt sein. Bin sehr begeistert der schnellen Reaktion!

Willkommen auf Java-Stage!

Freitag, 17. April 2009

Parallel zu meinem PHP-Pendant php-stage.de beschäftigt sich dieser Blog run um das Thema Java, mit dem ich mich zurzeit intensiv geschäftlich beschäftige. Ziel dabei ist es, wie auch bei php-stage.de, einerseits mir selbst ein Nachschlagewerk zu erstellen, und andererseits meine Kenntnisse und Erfahrungen zu verbreiten.

Momentan treibe ich mich speziell in folgenden Bereichen rum:

  • GWT 1.6 – Google Web Toolkit
  • Spring 2.5 (core, mvc, aop)
  • Hibernate 3
  • Java SE + Java EE 1.5
  • Allgemeine Software-Entwicklung

Ihr könnt in nächster Zeit also mit interessanten Artikeln speziell zu diesen Themen rechnen.

So, stay tuned!