FindBugs: May expose internal representation by returning reference to mutable object

Wer seine Code-Qualität mit FindBugs überwacht, stößt früher oder später auf folgende Verletzung: “Method-X may expose internal representation by storing/returning an externally mutable object into Field-Y”. In den meisten Fällen handelt es sich dabei um das Abfragen und Speichern von java.util.Date Werten.

Erfahrene Java-Entwickler wissen, dass Date-Objekte nachträglich veränderbar (mutable) sind:

Date now = new Date();
now.setTime(1414141414141L);
System.out.println(now);

Dies könnte für Manipulationen ausgenutzt werden:
weiterlesen

Wenn der Wunsch Vater der Dokumentation ist

Der Beitrag könnte Spuren von Emotionen beinhalten. Gerne wird Open-Source-Software mangelnde Dokumentation nachgesagt. Diese Kritik mag manchmal gerechtfertigt sein, auf lange Sicht sind schlecht dokumentierte Frameworks aber einer gewissen negativen Selektion unterworfen – um es vornehm auszudrücken.

Hibernate – das Mapping-Framework von JBoss/Red Hat – besitzt traditionell eine sehr umfangreiche Dokumentation. Diese ist sicherlich ein wesentlicher Grund für die Beliebtheit des Frameworks. Ein Reibungspunkt kann trotzdem entstehen, wenn die Dokumentation Features andeudet, die nicht vorhanden oder fehlerhaft implementiert sind (z.B. HHH-5732). Was mich in den Wahnsinn treibt, ist @NaturalId.
weiterlesen

ICS-Export-Plugin für Redmine auf GitHub

Vor mehr als zwei Jahren begann ich ein Plugin für Redmine zu schreiben, mit dessen Hilfe Tickets als ICS/ICalendar exportiert werden können (Redmine Ticket #1077). Das Projekt – namens “redmics” – wurde ursprünglich auf Google-Code gehostet und fand dort guten Zuspruch. Der Zuspruch war so groß, dass im Laufe der Zeit zahlreiche Mirrors und Forks auf GitHub entstanden. Seit dieser Woche wird das Projekt selbst auch auf GitHub verwaltet (https://github.com/buschmais/redmics). Happy Forking!

Happy Hour: Unit-Tests mit Mockito

Artikel als PDF herunterladen:
Download Happy Hour: Unit-Tests mit Mockito

Limette und MinzeMockito ist ein Mock-Framework für JUnit-Tests. Es erlaubt das einfache Mocking von Klassen, die Installation dieser Mocks als Kollaborateure der jeweiligen Class-Under-Test sowie die Verifikation aller Interaktionen zwischen diesen. Die Syntax von Mockito ist sehr intuitiv, Unit-Tests gelingen rasch, sind robust und gut lesbar. Zur Veranschaulichung diene dieses Beispiel:
weiterlesen

Alternative Schlüssel in JPA

Sobald man sein Java-Objektmodell auf eine relationale Datenbank abbildet, stellt sich die folgende Frage: Wie soll der Primärschlüssel gebildet werden?

Alle JPA-konformen O/R-Mapper unterstützen sowohl künstliche als auch natürliche Primärschlüssel: Künstliche Primärschlüssel werden vom O/R-Mapper beim Persistieren neuer Entität automatisch generiert. Ein künstlicher Primärschlüssel macht lediglich den Datensatz eindeutig und besitzt darüber hinausgehend keine weitere Bedeutung. Ein natürlicher Primärschlüssel ist Bestandteil der Daten. Er hat einen fachlichen Ursprung und muss durch den Fach-Anwender vergeben werden.

Bei der Erstellung des Objektmodell ist für jede Entität die Frage zu beantworten, ob sie einen künstlichen oder einen natürlichen Primärschlüssel erhalten soll. Die Erfahrung lehrt, dass ein künstlicher Schlüssel prinzipiell die bessere Wahl ist. Die Gründe hierfür sind vielfältig:

weiterlesen

 1 2 3 4 5 6 Vor