Friday, April 29, 2011

Using Eclipse snippets for faster JUnit test creation (with Mockito!)

I'm using this snippet to create a template of new unit test method supporting BDD mockito tests. This is a good example for adding static imports to a class from snippets.

@${testType:newType(org.junit.Test)}
public void should${testname}() {
 ${staticImport:importStatic('org.mockito.BDDMockito.*', 'org.mockito.Matchers.*', 'org.mockito.Mockito.*', 'org.junit.Assert.*')}// given

    // when
    ${cursor}
    // then

}

The result is astonishing ;)

import static org.mockito.BDDMockito.*;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
import static org.junit.Assert.*;


(...)

 @Test
    public void shouldTestSomething() {
        // given

        // when
        CURSOR_LANDS_HERE
        // then

    }

Friday, April 22, 2011

Spring security authentication-success-handler-ref and authentication-failure-handler-ref does not work with KerberosServiceAuthenticationProvider

I'm using SpringSecurity with KerberosServiceAuthenticationProvider which is Kerberos security extension. You can read how to use it on extension author's blog.
But you cannot use handler on form-login to catch authorization result. It's because of inner construction of authorization filter chain calls. Maybe it can be considered a bug?
The workaround is to implement ApplicationListener<AuthenticationSuccessEvent> and ApplicationListener<AbstractAuthenticationFailureEvent> to catch proper events.

package pl.touk.app.fe.server.security;

import org.springframework.context.ApplicationListener;
import org.springframework.security.authentication.event.AuthenticationSuccessEvent;

public class UserSuccessfulLoginLogger implements ApplicationListener<AuthenticationSuccessEvent> {

    @Override
    public void onApplicationEvent(AuthenticationSuccessEvent event) {
        //do something here
    }
}

package pl.touk.app.fe.server.security;

import org.springframework.context.ApplicationListener;
import org.springframework.security.authentication.event.AbstractAuthenticationFailureEvent;

public class UserFailedLoginLogger implements ApplicationListener<AbstractAuthenticationFailureEvent> {

    @Override
    public void onApplicationEvent(AbstractAuthenticationFailureEvent event) {
       //do something here
   }
}

Then you init beans in Spring configuration
<bean id="userSuccessLoginLogger" class="pl.touk.app.fe.server.security.UserSuccessfulLoginLogger" />

<bean id="userFailedLoginLogger" class="pl.touk.app.fe.server.security.UserFailedLoginLogger" />


A drawback is that one cannot have access to request and response as could have when using authentication-success-handler-ref and authentication-failure-handler-ref.
But in my case I didn't need that.

Tip! If you cannot receive AuthenticationEvents look at this page.

Магистраль M1, WTF?!

Google maps ma nazwy ulic i miejscowości w języku natywnym danego kraju. Luz. Ale czemu kurza stopa u nas są po rusku?! Skrzyżowanie Połczyńskiej i Powstańcow Śląskich w Warszawie. Do zobaczenia na google maps.



Tuesday, April 19, 2011

Rozpoczeliśmy Call for papers na Confitura 2011 (dawniej Javarsovia)

Dzisiaj w samo południe opublikowaliśmy posta z zaproszeniem do zgłaszania się z prezentacjami na Confitura 2011. W dwanaście godzin później mamy już 11 zgłoszonych prelegentów! Nie chcę przesadzać, ale... sukces mamy gwarantowany ;)
Nie mogę nic zdradzać, ale widzę same dobre i rozpoznawalne w środowisku nazwiska, co gwarantuje, że prezentacje będą na wysokim poziomie.

Ustaliliśmy deadline na 8go maja. Dużo to i mało, bo do tego czasu należy zgłosić abstrakt prezentacji, na tyle atrakcyjny i czytelny, aby stworzył szanse na kwalifikację do konferencji.

Wyboru dokona grono niezależnych ekspertów czyli Kapituła Confitura 2011 :)

Sunday, April 17, 2011

We wtorek (19 04 2011) dowiemy się co dobrego można znaleźć w JDK7.

Na Warszawa JUG, we wtorek, 19go kwietnia 2011, o godz 18, wystąpi Maciek Próchniak. Z Maćkiem pracuję już prawie pół roku i bardzo go cenię za wiedzę i chęć dzielenia się tym co potrafi. Bardzo zachęcam do przybycia na spotkanie. Spotykamy się na MIMUW, Banacha 2, sala 5440.

Oficjalna zapowiedź:


JDK7 - czy na pewno nic nowego?
W lipcu ma ukazać się długo (od ponad 4 lat...) oczekiwana nowa wersja Javy. Oczekiwanie były duże, a wyszło... No właśnie? Jak wyszło? Nie będzie domknięć, nie będzie modularności, a co zostało? O tym chciałbym trochę opowiedzieć.
Może nie będzie to takie fascynujące jak JBison, Hadoop czy SpringSecurity, ale czasami chyba warto wrócić 'do podstaw'.  Ponieważ jest już dostępna wersja 'Developer Preview' oraz dostępne jest wsparcie naszych ulubionych IDE, to pewnie także trochę pokodujemy.


Maciek Próchniak jest matematykiem, od 5ciu lat zajmuje się szeroko pojętym JEE - najpierw w Javatech, a od prawie 2ch lat w TouK. Obecne zainteresowania to integracja (Servicemix, Drools, BPM), GWT oraz (po dłuższej przerwie...) programowanie funkcyjne. Jest oficjalnym kontrybutorem projektu Activiti.
Ostatnio wziął się za pisanie własnego bloga.

Monday, April 11, 2011

Po 33rd degree

W minionym tygodniu odbyła się konferencja 33rd degree. Bardzo mi się podobała, bo zostało na nią zaproszone wielu znakomitych prelegentów. Sama forma - zapraszanie prelegentów, zamiast Call for papers (prośba o składanie propozycji prezentacji), to fajny pomysł. Udało się złowić sporo gwiazd.
W sieci jest mnóstwo relacji. Ja jestem zbyt zmęczony i leniwy żeby to robić. Napiszę tylko swoją ocenę, również z perspektywy organizatora największej bezpłatnej konferencji w Polsce, poświęconej około-jvm, agile i rzemiosłu programistycznemu (to chyba najdłuższy link-reklama).

Dobre
* prezentacje ciekawe, poza kilkoma nudnymi, np. pan Freeman, który pokazał kilka tabelek, albo prezentacje sponsorskie o PRowskim sposobie prezentowania - np Tieto, przedstawiło problem (to fajne) i jako rozwiązanie podało zewnętrznych konsultantów (to niefajne).
* o'reilly z książkami -40% cieszył się zainteresowaniem
* konkursy z nagrodami, w tym iLoop, który zrobił zabawę z geekowymi zagadkami i to mnie bardzo wciągnęło. Oczywiście to nie zasługa konferencji, tylko twórczych ludzi z iLoop, ale akurat tam miałem okazję wziąć udział w zabawie.
* 4 równoległe sesje - było w czym wybierać. Aż żal było nie pójść na pozostałe.
* miałem szczęście być wylosowanym i dostałem książkę o Groovym, a że autor (Venkat Subramaniam) właśnie siedział obok mnie, to dostałem nawet dedykację!

Słabe
* wifi nie dawało rady. Net był oparty o APki hotelowe, a ty przyjechało 200+ geeków z technologiami mobilnymi na kolanach. Na Javarsovii miewaliśmy własne AP, bo spodziewaliśmy się ruchu w sieci (BTW. na JV raz widziałem gościa, który oglądał mecz piłki nożnej podczas prezentacji Pawła Lipińskiego...)
* brak nagrywania. Rozmawiałem z Grzegorzem Dudą (organizatorem) i wiem, że to było zbyt kosztowne i kłopotliwe. Znowu, Javarsovia miała nagrywane, choć do dziś nie wszystkie zostały opublikowane, właśnie z powodu ogromnego kłopotu z obróbką, czego Grzegorz chciał uniknąć.
* brak mleczka do kawy ;) tu trochę się czepiam i to spaprał catering, ale serio na 5 stolikach bywało rzadko, a kawa szła jak woda przy takiej dawce wiedzy...

Udało mi się w końcu poznać Bartka Bańkowskiego i Szczepana Fabera, jednych z twórców Mockito. Poznałem też Oliviera White'a z Zeroturnaround, z którym korespondowałem tydzień wcześniej w sprawie licencji JRebel dla prelegentów WJUG.
Jednym ze sponsorów był TouK i prezentował się Jakub Nabrdalik.

Na końcu chciałbym przekazać moje uznanie dla Grzegorza Dudy, bo konferencję zorganizował sam. W Confiturze mamy kilka osób. W prawdzie my to robimy za darmo, więc z czego innego czerpiemy motywację, ale to nie zmienia faktu, że zorganizowanie tak dużej, trzydniowej, konferencji to kawał roboty. Dobrej roboty.

Dzięki Grzesiek i widzimy się za rok!

PS. Za miesiąc GeeCON, też w Krakowie (a ja cały czas myślałem, że w Poznaniu!) i obiecałem sobie, że tym razem pójdę na zapiekankę na Kazimierz :-D