Rückblick auf das Liferay Portal Solutions Forum 2015

Das Liferay Portal Solutions Forum fand wie im letzten Jahr wieder in Darmstadt statt – dieses Mal allerdings schon im Oktober. Die Veranstaltung stand ganz im Zeichen der Digitalisierung – und das schloss auch die Teilnehmer mit ein. Über eine eigens angebotene Liferay-App konnte man den Referenten direktes Feedback über Live-Polls geben, deren Ergebnisse dann in Echtzeit an die Wand geworfen wurden. Das klassische „Hände heben“…

Accessibility Add-on für ein barrierefreies Arbeiten mit Confluence

Im Zuge des Wandels zum „Digitalen Arbeitsplatz“ besteht die Landschaft der Unternehmensanwendungen mittlerweile nicht mehr nur aus wenigen Tools, die von einem kleinen Kreis von Mitarbeitern bedient werden. Social Intranets, Wissensmanagement-Systeme und Mitarbeiterportale binden die gesamte Belegschaft ein und ermöglichen damit eine neue Art der Vernetzung, Kommunikation und Zusammenarbeit. Doch mit dem größeren Nutzerkreis verändern sich auch die Anforderungen an…

Eindrücke vom Liferay Portal Solutions Forum 2014

Letzte Woche war ich zu Gast beim Liferay Portal Solutions Forum in Darmstadt – genauer gesagt im Darmstadtium. Dieses Event fand, wie bereits im letzten Jahr, einen Tag vor der Liferay DevCon statt und bot neben den verschiedenen Vorträgen die Möglichkeit des Austauschs zwischen Partnern, (potentiellen) Kunden und Vertretern von Liferay.  Die Veranstaltung war wieder sehr gut organisiert, es gab einen Vortrags-Track und daneben…

Responsive Design in Liferay 6.2 – Gestaltung eigener Themes für verschiedene Gerätegrößen

Die Standard-Themes in Liferay geben einen guten Einblick, welche Möglichkeiten ein Responsive Design für die Nutzung auf mobilen Endgeräten bietet. Aufbauend darauf kann man bereits mit wenig CSS und etwas Kreativität wirkungsvoll eigene Designs umsetzen. Doch in der Praxis zeigt sich häufig sehr schnell, dass der Anspruch an ein Corporate Design mehr als bloße Änderungen der Farbgebung umfasst. Und genau…

Cobertura mit Grails – java.lang.NoClassDefFoundError: org/apache/log4j/Category

Zur Ermittlung der Testabdeckung installierte ich mir kürzlich das Test Code Coverage Plugin für Grails (1.0.4). Leider bekam ich beim Aufruf von „grails test-app-cobertura “ folgenden Fehler angezeigt: [cobertura-instrument] java.lang.NoClassDefFoundError: org/apache/log4j/Category [cobertura-instrument] Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Category [cobertura-instrument] at java.net.URLClassLoader$1.run(URLClassLoader.java:202) [cobertura-instrument] at java.security.AccessController.doPrivileged(Native Method) [cobertura-instrument] at java.net.URLClassLoader.findClass(URLClassLoader.java:190) [cobertura-instrument] at java.lang.ClassLoader.loadClass(ClassLoader.java:307) [cobertura-instrument] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) [cobertura-instrument] at java.lang.ClassLoader.loadClass(ClassLoader.java:248) [cobertura-instrument] Could not find the…

Grails: Scripting Event funktionierte nicht unter Unix

Um in die Ausführung von Skripten zur Laufzeit einzugreifen gibt es das Feature der Scripting Events. Fast jedes Grails-Skript beinhaltet ein oder mehrere Einstiegspunkte (Hooks), welche man abgreifen und dann im Kontext des gerade laufenden Skriptes eigene Aktionen ausführen kann. Dazu wird einfach im Ordner /scripts die Datei _Events.groovy erstellt und von dort aus lässt sich nun auf einfache Weise…

Grails: Kompilierten Code von Gsp’s anzeigen

Bei Fehlern in Groovy Server Pages (kurz Gsp), erhält man erfreulicher Weise einen Stacktrace direkt auf der Seite in der jener Fehler aufgetreten ist. Weniger hilfreich ist allerdings, dass die angegebenen Zeilenummern in denen der Fehler auftrat nicht mit denen des geschriebenen Quellcodes zusammenpassen, wie dies z. B. bei Groovy-Klassen der Fall ist. Hier ein kleines Beispiel mit einer provozierten…

Grails: LazyInitializationException – Lösungsmöglichkeiten

Die Kombination von Hibernate und komplexen Datenstrukturen bringt einige Herausforderungen mitsich und daher ist dem ein oder anderen die Exception aus dem Titel sicher geläufig. In einigen Fällen hat man an solchen Punkten eine fast fertige Anwendung und es geht an die Implementierung von Jobs oder neuen Anforderungen. Nun lassen sich diese meist nicht, oder sehr schwer, mit den vorhandenen…

Grails: Validierung nach Maß

Die Validierung von Attributen direkt in Domain-Klassen durchzuführen ist nicht nur praktisch, sondern spart auch an mancher Stelle aufwändiges Exception-Handling. Mit einfachen Mitteln ist man in der Lage die Korrektheit der übergebenen Variablen zu überprüfen, bei Bedarf auch gleich mit einer lokalisierten Fehlermeldung. Die klassische Variante Zur Einführung wird zunächst eine simple Klasse mit entsprechenden Constraints erzeugt: class User {…

Hibernate: Sprünge beim Autoincrement

So ein SequenceGenerator ist schon eine feine Sache, vorallem bei der Verwendung von Relationalen Datenbanksystemen á la Oracle. Musste man sich ohne die Vorzüge des ORM (Object-Relational-Mapping) noch mit der händischen Erstellung von Sequenzen zur Incrementierung von Werten herumschlagen, erledigt Hibernate das Ganze voll automatisch mit zwei Zeilen Code. Die Tücken der Technik In meinem letzten Projekt zeigte sich jedoch ein…

Java Projekte mit Groovy – Der erste Kontakt…

Wer sich als Java-Entwickler bereits ein wenig mit der Sprache Groovy beschäftigt hat, wird während der Projektarbeit sicher schon einige Verwendungsmöglichkeiten für Groovy-Sprachkonstrukte gefunden haben. In den meisten Fällen betrifft dies eher relativ triviale Funktionen, wie Operationen im Dateisystem oder das Auswerten von Variablen eines Typs. Da aber gerade in der Erstellung von Prototypen die Evaluierung von Kernprozessen im Vordergrund…

PSQLException: operator does not exist

 Nach dem Neuaufsetzen einer bestehenden Grails-Anwendung, tauchte nachfolgender Fehler während der Ansprache der Datenbank durch die Applikation auf: Caused by: org.postgresql.util.PSQLException: ERROR: operator does not exist: bigint ~~ bigint at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1512) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1297) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:437) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:257) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92) … 2 more Zunächst vermutete ich ein JDBC Treiber-Problem, jedoch konnte der Fehler nach etwas Recherche und Debugging…

Session Handling in Grails

Dieser Artikel soll einen Überblick über das Session Objekt in Grails geben und Lösungsmöglichkeiten bei Anwendungsfehlern aufzeigen. Die allgegenwärtige Session In allen Controllern ist die Session bereits standardmäßig im Application-Scope und wartet gebrauchsfertig mit dem Namen „session“ auf Verwendung. Das Objekt implementiert im wesentlichen die Standardfunktionalität der javax.servlet.HttpSession und hält ergänzend die Zugriffsmöglichkeiten einer GroovyMap bereit. session.username = ‚John Doe‘ println…

Grails Projekte mit Eclipse entwickeln

Auf der offiziellen Grails Homepage gibt es bereits ein sehr gutes How-To für die Integration von Grails in Eclipse. Da die Konfiguration aber nicht immer reibungslos verläuft und vor allem das Einbinden bestehender Grails Projekte in die IDE nach wie vor Probleme bereiten kann, sollen nachfolgend noch einmal die wichtigsten Schritte und Stolpersteine erläutert werden. Groovy Plugin Basis für die…

Maven 2 Multi-Modules Project Site

Mithilfe des Site-Plugins ist es möglich ohne großen Aufwand eine Projekt Homepage mit allen wichtigen Informationen zu erstellen. Neben generierten Code Audits, Unit-Test Reports oder SourceCode Reviews können auch eigene Inhalte problemlos mit eingebunden werden, was die Projektsite zu einer universellen Informationsplattform für Entwickler macht. Leider gibt es bei Projekten mit mehrenen Modulen häufig Probleme in der Verlinkung der generierten…