Gabi und Sascha
Kategorien : Alle | Berlin | Bücher | Fotografie | Java | Linkhalde | Weichware | Verfassung

Und zwar Eisklecks in Berlin Friedrichshain an der Eldenaer Straße, Richard-Emisch-Straße. Ich hatte eine Kugel Sanddorn- und eine Kugel Holundereis. Es schmeckte nach nichts. Einfach nach nichts. Dafür fühlte sich das Holundereis auf der Zunge mehlig an. Auch die Innereinrichtung ist bescheiden, wirkt ziemlich leer und ungemütlich.

Einmal und nie wieder. Dafür lohnt es sich nicht Richtung Forckenbeckplatz zu gehen.

Da denkst du dir ein elegantes REST API aus. CRUD auf PUT, POST, GET und DELETE abgebildet. Und dann sagt der Kunde dir, der Client basiert auf Flex. Und das Flex beim Kunden kann nur POST und GET.

Meine Einstellung zu Flex und dem ganzen anderen Dreck von Adobe, war noch nie positiv. Und sowas hebt nicht gerade meine Stimmung.

Für meinen Job bei Zimory habe ein wenig mit Weld SE gespielt. Weld ist die CDI Referenz­implementierung und Weld SE eine Anpassung für die Java SE Welt.

Die eigentliche Implementierung war recht einfach. Allerdings wurde beim Ausführen immer eine UnsatisfiedResolutionException geworfen. Die Nachricht war WELD-001308 Unable to resolve managed beans for…. Nach kurzer Suche war klar, dass Weld eine leere "META-INF/beans.xml" Datei benötigt. Nachdem die Datei angelegt war, funktionierte das Beispiel problemlos.

Es lässt sich streiten, ob die CDI Referenzdokument in Kapitel 12.1 eine solche Datei zwingend vorschreibt. Ich habe es dort nicht heraus gelesen.

Download: Sourcecode (7.897 Bytes)

Ich bin mir sicher: Guido Westerwelle wollte mit seiner platten Attacke gegen Hartz Ⅳ ablenken. Vielleicht von schlechten Umfrageergebnissen? Vielleicht vor seiner Unlust am Amt des Aussenministers? Allerdings glaube ich nicht, dass es unbewusst war. Dazu hat Westerwelle als Politiker zuviel Erfahrung und ist rethorisch zu geschickt.

Eine Diskussion allerdings hat er angestossen. Ziel erreicht? Wenn Hartz ⅣEmpfänger wirklich überzogen versorgt werden, warum dann nicht radikal handeln? Warum faulen Säcken überhaupt etwas geben und von oben nach unten umverteilen? Westerwelle, Sarazzin und Konsorten sondern diese Behauptung doch unterschwellig permanent ab? Warum damm nicht Hartz Ⅳ ersatzlos streichen? Nichts gibt es mehr. Wer mehr als 12 Monate arbeitslos war, der bekommt gar nichts mehr. Weder für sich noch seine Kinder. Sollen sie sehen, wie sie ihren Lebensunterhalt zusammen bekommen.

Aber ich vermute, dass trauen sie sich dann doch nicht. Nicht, weil sie das Grundgesetz respektieren. Sie haben in den letzen Jahren deutlich und oft gezeigt, dass ihnen Grundgesetz am Arsch vorbei geht. Nein, sie haben Angst vor den Unruhen, dem Bürgerkrieg und der Revolution, die dann auf uns zukommen. Hartz Ⅳ ist das Erkaufen von Ruhe. Bezahlt durch die Mittelschicht, zum Wohle der Oberschicht. Nicht mehr und nicht weniger.

Die von Westerwelle – angeblich so nötige – losgetretene Debatte ist eine Phantomdiskussion. Es wird sich gar nichts ändern.

javac scheint bei package Annotationen nicht zu überprüfen, ob die Annotationen den deklarierten Regeln folgen. Eben habe ich einer solchen Annotation den default Wert weggenommen. Die Verwendung auf type Ebene warf Compiler Fehler. Ist der Wert in der package-info.java Datei nicht vorhanden, läuft der compile Prozess ohne Probleme durch. Die falsche Verwendung auf package Ebene wurde durch nicht angepassten Unit-Test entdeckt. Eine IncompleteAnnotationException wird geworfen, wenn ich den Wert über das Reflection API auslese.

Vorher:


    @Documented
    @Retention(RUNTIME)
    @Target({PACKAGE, TYPE})
    public @interface CommandHolder {
        String value() default  "";
    }

Nacher:


    @Documented
    @Retention(RUNTIME)
    @Target({PACKAGE, TYPE})
    public @interface CommandHolder {
        String value();
    }

Verhalten tritt auf mit javac 1.6.0_16 und javac 1.7.0-ea (b80) auf einem aktuellen AMD64 Ubuntu 9.10.

Vielleicht wühle ich mich später mal durch die Spezifikationen.

Maven eine Konfigurationshölle? Im JAXenter wurden einige meiner Punkte zusammen gefasst.

Dieser Inhalt wurde aus einer weiteren Quelle zusammengefügt. Mehr...

[WERBETEXT: LINIENFLUG MIT LUFTHANSA (OD. GLEICHW.) VON BERLIN/TEGEL NACH SAN FRANCISCO UND ZURÜCK MIT ZWISCHENSTOPPS IN DER ECONOMY CLASS] «Und jetzt, meine Damen und Herren, bitte eine Polonaise durch die Holzklasse. Lästern Sie und gruseln Sie sich nach Herzenslust. Ihre Reiseleitung wünscht Ihnen viel Spass und weiterhin einen angenehmen Flug.»

 

Ich implementiere gerade privat ein REST API. In dem API werden XML Daten mittels JAXB gewandelt. Dabei habe ich einfach POJOs verwendet und mit den JAXB Annotationen versehen. Eigentlich ganz einfach. Eigentlich… Bis zu dem Zeitpunkt an denen Collections ins Spiel kommen. Naiv wie ich war – he, wer liesst schon Spezifikationen – habe ich Collection Properties einfach annotiert. Und weil ich ein pfiffiger Entwickler bin, habe ich bei den Gettern eine leere Collection (Collections.emptyXyz()) zurück gegeben, wenn die Referenz null war. Ergebniss: unmarshall(…) warf eine UnsupportedOperationException. Das Problem: JAXB erwartet eine mutable Collection. Collections.emptyXyz() liefert aber immutable Objekte. JAXB ruft darauf dann clean() auf und füllt die Collection neu – die Refernzimplementierung mittels add(E). Eine null Referenz wird auch nicht akzeptiert und führt ebenfalls zu einer Ausnahme.

Ich habe mir dann doch mal die JAXB 2.2 Spezifikation von 2009-12-10 durchgelesen. Unter Punkt 5.5.2.2 wird das Verhalten spezifiziert. Mit einer Einschränkung: sie gilt nur für Collections vom Typ List. Die JAXB 2.2 Referenzimplementierung kommt aber auch mit Sets und dem Collection Interface selbst zurecht.

Der Code sieht jetzt so aus:


    @Valid
    @NotNull
    @Size(min=0, max=5)
    @OneToMany(fetch=EAGER)
    @XmlElement(name=ANSWER_XML_NAME)
    @XmlElementWrapper(name=POSSIBLE_ANSWERS_XML_NAME)
    public List<Answer> getPossibleAnswers() {
        if (this.possibleAnswers != null) {
            return this.possibleAnswers;
        }
        return new ArrayList();
    }

Kann man aktuell noch hier im zweiten Beitrag bewundern.

Nachtrag: Leider gibt es diese vollkommen bescheuerte Regelung in diesem Land, dass öffenlich rechtliche Sender ihre selbst produzierten Sendungen nach 7 Tagen nicht mehr online anbieten dürfen. Deswegen ist der Film jetzt weg.

Dieser Inhalt wurde aus einer weiteren Quelle zusammengefügt. Mehr...

Für kleine Diagramme muss es nicht immer ein ausgereiftes UML Tool sein. Mit websequencediagrams können kleine Dinge auch schnell geskribelt werden. Die Sprache ist schnell erlernbar, die Ergebnisse ausreichend, wenn nicht gerade Codegenerierung oder gar Round-Trip-Engineering benötigt wird.

Mit yUML können auch Klassen- Aktivitäten und Use-Case Diagramme erstellt werden.

Über Kreuzberg nimmt die Sonne Abschied vom Tag. Auf der Spree zieht langsam eine losgerissene Tonne vorbei - links ausserhalb des Bildes. Auf dem seit Monaten nicht mehr genutzen Industrieareal wird tapfer weiter Schnee geschippt.

[UNTERGEHENDE SONNE ÜBER KREUZBERG VOM FRIEDRICHSHAINER UFER HÖHE OSTBAHNHOF GESEHEN. DORT WIRD SCHNEE AUF EINER INDUSTRIEBRACHE GERÄUMT.]
Untergehende Sonner über Kreuzberg