Archive for December, 2019

Top 7 der Eclipse Shortcuts

Saturday, December 28th, 2019

In der IDE Eclipse gibt es eine Reihe Shortcuts, die das Programmieren beschleunigen. Die Liste der verfügbaren Shortcuts kann natürlich selbst auch mit einem Shortcut (CTRL+SHIFT+L) aufgerufen werden. Manche davon sind praktisch, manche nicht. Hier eine Liste meiner persönlichen Favoriten:

  • Rename / Refactoring (ALT+SHIFT+R) – Schnell eine Variable oder Methode umbenennen.
  • Open Resource (CTRL+SHIFT+R) – Zügig zu einer Datei springen.
  • Call Hierachy (CTRL+ALT+H) – Sehen, wo die aktuelle Methode aufgerufen wird.
  • Organize Imports(CTRL+SHIFT+O) – Imports aufräumen.
  • Next Editor (CTRL+F6)
  • Copy Lines (CTRL+ALT+DOWN)
  • Toggle Comment (CTRL+SHIFT+C)

OVal – the object validation framework for Java 5 or later

Tuesday, December 17th, 2019

Ich muss gestehen, ich bin ein Fan von defensiver Programmierung, d.h. ich deklariere mögliche Inkonsistenzen von Objekten durch das Werfen von RuntimeExceptions (z.B. IllegalStateException oder IllegalArgumentException). Praktisch finde ich ebenfalls das Prinzip der Unveränderlichkeit. Einmal erzeugt, soll das Objekt nicht mehr verändert werden. Somit werden Inkonsistenzen (z.B. nicht gesetzte Attribute) bereits im Vorfeld vermieden.

Allerdings verursacht diese Form der Absicherung unschönen Code-Overhead, da jeder Parameter manuell überprüft werden muss. Zudem stehen unveränderliche Objekte im Widerspruch mit der JavaBean Spezifikation

Vor kurzem habe ich einen interessanten Lösungsansatz im OVal Framework entdeckt. Hier werden die Properties und Methoden mit Annotations versehen und explizit oder implizit (via AspectJ) validiert. Beispiele gibts heute keine, stattdessen verweise ich auf die (gute) Doku.

Active Directory Virtualisierung mit Penrose

Sunday, December 8th, 2019

Bei einem Projekt hatte ich die Problemstellung, dass Useraccounts aus zwei Active Directories in ein (javabasiertes) Shop-Produkt importiert werden sollen. Dieses Shop-Produkt wird zwar mit einer LDAP-Anbindung ausgeliefert, allerdings kann es nur Useraccounts aus genau einem Active Directory oder LDAP importieren.

Die Lösung: Ein LDAP-Proxy, der die beiden Active Directories zu einem virtuellen LDAP zusammenführt, und gleichzeitig LDAP-Binds erlaubt, um Single Sign On mit den Windows Credentials zu ermöglichen. Das (ebenfalls javabasierte) Open Source Produkt Penrose erfüllt genau diese Aufgabe.

Beispiel:
Active Directory 1 speichert die Kundenaccounts und besitzt folgenden Wurzelknoten:
dc=customer,dc=company,dc=com

Active Directory 2 speichert die Mitarbeiteraccounts und besitzt folgenden Wurzelknoten:
dc=employees,dc=company,dc=com

Im Penrose werden diese beiden Active Directory as LDAP Proxy Partitions importiert und die beiden Wurzelknoten in das Root DSE attribut eingetragen. Penrose simuliert keinen Active Directory, sondern lediglich einen “puren” LDAP. (Active Directory hat ein paar Spezialitäten, beispielsweise einen Bind mit der user@domain Notation). Dennoch werden Active Directory-spezifische Attribute wie memberOf übernommen. Man bekommt also einen LDAP mit Active Directory Schema.

Eine (wichtige) Kleinigkeit: Der Session Timeout in Penrose kann über die /conf/server.xml angepasst werden:

<session>
   <parameter>
      <param-name>maxIdleTime</param-name>
      <param-value>10080</param-value><!– time out von 7 tagen –>
   </parameter>
</session>