Spring 3.0 RC3 + Maven

Właśnie wyłapałem na Twitterze, że Spring 3.0 RC3 został wydany. Dla tych, którzy chcieli by pobrać nową wersję do swojego projektu opartego o Mavena drobna informacja - repozytorium z tymi artefaktami znajduje się pod adresem http://maven.springframework.org/milestone. Miejmy nadzieję, że będzie to repozytorium które się nie zmieni po 3 miesiącach na inne. W razie problemów - można zawsze skorzystać z repozytorium utrzymywanego na serwerze Code-House.

December 1, 2009 · 1 min · splatch

GWT oraz implementacje MVC

GWT, czyli Google Web Toolkit to nic innego jak zbiór komponentów, które można użyć podczas tworzenia aplikacji. GWT jest łatwe, kod tworzy się szybko i łatwo uruchamia chociażby z poziomu Mavena, jednakże największym problemem nie jest to jak stworzyć okienko, ale jak zorganizować projekt. W tym poście postaram się przedstawić kilka gotowych bibliotek, z którymi się zetknąłem podczas swych bojów z budowaniem sporej aplikacji. Ilość implementacji MVC dla GWT jest dosyć duża a temat był poruszany na zagranicznych blogach już nie jeden raz, wystarczy zajrzeć na poniższe strony: ...

November 5, 2009 · 3 min · splatch

Instalowanie oprogramowania Atlassian cz. 1

Kilka dni temu trafiłem na informacje o tym, że firma Atlassian uruchomiła “promocję” w której wyprzedaje licencje startowe na swoje produkty za 10$. Tym oto sposobem za równowartość dobrego obuwia (niecałe 175 zł) wszedłem w posiadanie sześciu licencji na Crowd, Jira, GreenHopper, Confluence, Fisheye i Bamboo. W poście tym krótki opis instalacji na Tomcat 6.x pierwszych czterech. Przygotowania Uprzedzam, że instrukcja jest pisana z pamięci więc mogą pojawić się jakieś braki. W przypadku gdy instrukcja nie zadziała proszę o komentarz, a postaram się pomóc i uzupełnić wpis tak by był kompletny. Aby ułatwić sobie życie i zaoszczędzić pamięć na serwerze wszystkie produkty będzie obsługiwała jedna instancja Tomcat i PostgreSQL. Niestety Fisheye i Bamboo są dostępne tylko w wersji standalone, stąd proces ich instalacji będzie nieco inny. Zanim ruszymy z całością pobieramy od producenta oprogramowanie. Przeskakujemy na zakładkę Linux i następnie klikamy w prawym górnym rogu i pobieramy wersję standalone. Wykonujemy polecenie [bash]tar -xvzf atlassian-crowd-2.0.2.tar.gz[/bash] ...

October 16, 2009 · 5 min · splatch

Typy generyczne od teraz są mniej anonimowe

Do tej pory tworząc kod z użyciem typów generycznych zawsze borykałem się z problemem - jak dobrać się do klasy na podstawie któregoś parametru. Rozwiązanie znalazłem przeglądając w internecie kod jakieś przykładowej aplikacji. Ot znowu kilka linii które uporządkują kod i zmniejszą ilość powtórzeń. :-) Dbanie o porządek w kodzie to obowiązek każdego programisty. Stąd podział aplikacji na warstwy, wyodrębnianie wspólnego kodu do typów abstrakcyjnych i tak dalej. Są jednak miejsca, których do tej pory nie potrafiłem uporządkować dobrze - były to wszelkiego rodzaju DAO, które zawsze wyglądały podobnie. Interfejs, klasa abstrakcyjna, pochodna wywołująca chroniony konstruktor. Wszystko po to by w klasie abstrakcyjnej móc zdefiniować metodę readById. Oto przykład takiego kodu: [java]// Ogólny interfejs dostępu do danych // T to typ encji, K to typ klucza w danej encji. public interface GenericDAO<T, K> { void save(T instance); void create(T newInstance); void update(T existingInstance); boolean delete(T instance); T readById(K id); List getAll(); } // Implementacja oparta o mechanizmy Springa public abstract class AbstractDAO<T extends BaseEntity, K> extends JpaDaoSupport implements GenericDAO<T, K> { private Class typeClass; protected AbstractDAO(Class typeClass) { this.typeClass = typeClass; } // pobranie obiektu na bazie id public T readById(K id) { return getJpaTemplate().find(typeClass, id); } } ...

October 2, 2009 · 3 min · splatch

XML i Adnotacje - kod ogólnego przeznaczenia i JPA

W poprzednim wpisie przedstawiłem sposób na redukcję kodu w encjach przy pomocy dziedziczenia i adnotacji @MappedSuperclass. Rozwiązanie to możemy również stosować aby tworzyć kod bardziej przenośny, który niewielkim kosztem można użyć w innych projektach. Większość aplikacji webowych stosuje autoryzację opartą o role (ang. Role Based Access Control), w takich wypadkach mamy zazwyczaj encję User oraz Role, pierwszą odpowiedzialną za przetrzymywanie informacji o użytkowniku a druga nazwy ról. O ile role są obszarem stałym - zawsze mają nazwę - o tyle użytkownicy często mają różne wariacje i relacje. Ot choćby powiązanie konta użytkownika z firmą. [sourcecode lang=“java”] // Copyright (C) 2009 Code-House // All rights reserved package org.code_house.security.domain; ...

October 1, 2009 · 2 min · splatch

Dwie klasy redukujące ilość kodu w encjach JPA

Z pewnością nie jest to odkrycie godne podziwu czy też coś, co może realizować z nowinkami JPA 2.0, nie mniej jest to kod bez którego żaden projekt obejść się nie może - mianowicie identyfikacja encji. Borykałem się z problemem dosyć pospolitym, mianowicie pozbyciem się z każdej encji kodu: [sourcecode lang=“java”]@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; [/sourcecode] Nic dziwnego, 40 encji to aż 120 powtórzonych, niepotrzebnie powielonych linii. Nie są obce mi wzorce dziedziczenia, które Martin Fowler opisywał w swojej książce, w tym przypadku chodzi o dziedziczenie mapowanych pól a nie fizyczne odwzorowanie tej hierarchii, czyli zagrywka czysto techniczna. ...

September 4, 2009 · 2 min · splatch

ServiceMix IDE integration

Jakiś czas temu zapraszaliśmy na tym blogu zainteresowanych na Warszawski Eclipse DemoCamp Galileo 2009. Jest nam niezmiernie miło ogłosić, że temat poruszany na tym spotkaniu przez Code-House Software został kontynuowany. Wsparcie dla Apache ServiceMix w oparciu o Spring IDE zainteresowało społeczność jak i organizacje skupione wokół projektu, między innymi FUSE Source. Nie będzie to oczywiście alternatywa dla narzędzi oferowanych przez tą firmę a raczej dopełnienie funkcjonalności, których w tej chwili trudno szukać. Strona projektu znajduje się na razie na wiki bug trackera Code-House i jest na nim kilka informacji odnośnie celów projektu i nawet parę zadań. :-) Na pytanie kiedy pojawi się działająca wersja ciężko nam odpowiedzieć ponieważ w obecnej chwili siły przerobowe naszej firmy oprócz zaangażowania w kontrakt muszą podołać przygotowaniu akcji marketingowej w prasie oraz internecie. Miejmy nadzieję, że przed końcem wakacji pojawi się działająca wersja. Oczywiście nie jest to jedyny sposób w jaki Code-House wspiera społeczność projektu Apache ServiceMix, w planach mamy wspomaganie paru komponentów które wzbogacą funkcjonalność magistrali. ...

July 7, 2009 · 3 min · splatch

Javarsovia 2009

W najbliższy weekend odbędzie się największa warszawska, darmowa, konferencja poświęcona Javie. Nasza firma wsparła przedsięwzięcie niewielką kwotą stąd też zapraszamy do wzięcia udziału w konferencji. :) Tematy zostały podzielone na trzy kategorie: Java - technologicznie, czyli o nowinkach i bibliotekach (7 prezentacji) Java - pragmatycznie, optymalizacja, testy (8 prezentacji) Java - koncepcyjnie, niezwiązane bezpośrednio z kodem (3 prezentacje) Jak widać jest wiele tematów do wyboru. Nowością jest dodatkowa ścieżka warsztatowa, podczas której odbędzie się tylko 1 prezentacja. Dla tych, którzy nie będą mogli pojawić się na konferencji niespodzianka - organizatorzy będą starać się nagrywać wszystkie sesje tak by nic nie uciekło. Całość będzie naturalnie dostępna później, najprawdopodobniej na Parleys. ...

June 29, 2009 · 1 min · splatch

Materiały z Eclipse DemoCamp

Zgodnie z obietnicą z poprzedniego postu zamieszczam materiały z prezentacji którą wczoraj przeprowadziłem w ramach Warszawskiego Eclipse DemoCamp Galileo 2009. Celem prezentacji było dodanie obsługi nowej (niestandardowej) przestrzeni nazw w Spring IDE. Jako dobry przykład rozbudowanej przestrzeni nazw wybrałem konfigurację komponentu servicemix-file. Jako że nie udało mi się przed prezentacją zmusić Apache XBean do pracy wewnątrz Eclipse musiałem stworzyć własny namespace handler. Dopiero wczoraj, późno w nocy stworzyłem patch który umożliwia podpięcie normalnego handlera. Jakkolwiek przykład dla spójności pozostał ze starym kodem. ...

June 3, 2009 · 1 min · splatch

Warszawski Eclipse DemoCamp Galileo 2009

W dniu 2 czerwca 2009 odbędzie się Warszawski Eclipse DemoCamp Galileo 2009, nasza firma wspiera to wydarzenie merytorycznie oraz finansowo. Głównym sponsorem jest fundacja Eclipse. Działanie to doskonale wpisuje się w profil naszej firmy, której celem jest współpraca ze społecznością oraz promowanie rozwiązań Open Source - Spring IDE - o którym będzie mowa to projekt z otwartym kodem źródłowym rozwijanym w dużej mierze przez SpringSource. Tematy które będą prezentowane: 18:00-18:15 Spring IDE, czyli o wsparciu dla Springa wewnątrz IDE. Łukasz Dywicki 18:20-18:35 Wyślij swoją myszę na urlop, czyli o skrótach i szablonach w Eclipse. Wojciech Erbetowski 18:40-18:55 Wtyczka do Eclipse w 5 … no może 15 minut. Mateusz Zięba 19:00-19:15 Rozszerzanie JDT dzięki Equinox Aspects i AJDT weaving service. Michał “migi” Grzejszczak 19:20-19:35 Z Eclipsem w chmurach w 15 minut, czyli jak użyć GoogleApp Engine wraz z pluginem do Eclipse, aby uruchomić aplikację w 15 minut. Łukasz Lenart 19:40-19:55 Oracle JRockit Mission Control, czyli demonstracja profilowania i diagnostyki aplikacji Java przy użyciu Eclipse. Waldemar Kot Pierwsza pogrubiona prezentacja to nasza :-). Co kryje się w podtytule wsparcie dla Springa wewnątrz IDE? Głownie obszary związane z edycja kontekstu zapisanego w XML, co dokładnie? Tego dowiecie się już na prezentacji. Materiały jak i przykłady zostaną opublikowane na tym blogu po wtorku. Raz jeszcze serdecznie zapraszam na świętowanie nowego wydania. :) ...

May 30, 2009 · 2 min · splatch