Posts

Showing posts with the label Framework

Spring is like onion - about layers

Image
Spring has a lot of standards and share knowledge about good practice for using it. One of these is chop your application for layers. Three layers of your application The good practices tell us, we should create three or more layers of our enterprise application. Those layers are controllers, services and repositories. In my opinion, this is very good practices, because we are separate three things communication with client, business logic and communication with other systems. I think this is a reason why spring promote this solution. If you want a proof that spring prefer a layers take a look at the specific annotation for the components we have three predefined: @Service, @Controller and @Repository. This is the same like @Component, but we have a marker for that. This is ok, but... This is very problematic, when we use this solution without thinking. We can put all services in one package. A lot of tutorials do that. If you do that you will have a problem with relations between ...

Przydatne narzędzie - vt-password

Image
Spotkaliście się kiedyś z polityką haseł? Na pewno jeżeli próbowaliście pobawić się autoryzacją w Waszych projektach. Często robi się to samemu lub ściąga gotowca. Najlepszym jednak sposobem jest wykorzystanie framework'a do tego stworzonego. Dzisiaj przedstawię mam vt-password. Do czego to służy? Jest to pomocna biblioteczka do walidacji polityki haseł. Posiada ona już wbudowane swoje polityki, ale można tworzyć własne po rozszerzeniu odpowiedniej klasy lub implementacji odpowiedniego interfejsu. Prosta w użyciu? Jest ona bardzo prosta w obsłudze, polega na tworzeniu listy ról do spełnienia oraz zaznaczeniu ile z nich powinno zostać co najmniej poprawnych. Przykładowy kod poniżej: public static boolean validatePassword(String pass) { List < Rule > ruleList = new ArrayList < Rule > ( ) ; ruleList . add ( new LengthRule ( 8 , 16 ) ) ; ruleList . add ( new WhitespaceRule ( ) ) ; CharacterCharacteristicsRule charRule = new CharacterCharacteristicsRu...

Biblioteki codziennego użytku Java - JodaTime

Image
Chciałbym przedstawić Wam użyteczną bibliotekę do projektów pisanych w języku Java. Operację na czasie i datach w standardowej Javie jest bardzo ciężka (zwłaszcza do Javy 7, ponieważ w Javie 8 JodaTime stała się standardem do działania na datach). Z ratunkiem przychodzą twórcy biblioteki JodaTime, która pozwala na łatwe przetwarzanie dat oraz czasu w naszym projekcie. JodaTime Biblioteka, która zastępuje standardowe klasy dat i czasów Javy na lepsze obiekty. Używając je możemy robić operacje dodawania, odejmowania, porównania, wyciągania ostatniego i pierwszego dnia miesiąca, roku itd.. Jednakże nie ogranicza się jedynie do konkretnego czasu. Dodaje też możliwość operacji na okresach czasu oraz interwałach czasowych. I tutaj jej użyteczność jest na wysokim poziomie. Okresy czasowe możemy dodawać oraz odejmować. Interwały weryfikować czy się opierają na siebie lub nachodzą na siebie. Wyciągnąć interwał czasowy pomiędzy dwoma interwałami itp.. Dodatkowe zalety Jedną z najlepszych rze...

Mockito w akcji, czyli wykorzystanie frameworka do lifetimera

Napiszemy sobie serwis do obsługi czasu, będziemy go dodawać do repozytorium. Nie zdecydowałem jeszcze jaki nośnik pamięci to będzie dlatego do wytestowania wykorzystamy framework Mockito. Jednocześnie niektóre czasy będą się składały na czasy ogólniejsze. Zacznijmy od stworzenia atrapy obiektu interfejsu Repository. Interfejs na razie jest pusty ponieważ nie wiem jakie metody będziemy potrzebować. Wykorzystamy do tego adnotację @Mock, ktory działa na zasadzie Dependency Injection. Następnie utworzymy obiekt naszego serwisu. Obiekty tego typu z założenia nie powinny przechowywać stanu wewnętrznego. Wykorzystując to stworzymy jeden obiekt dla wszystkich testów. Potrzebujemy jednocześnie, żeby stworzony w teście Mock został wstrzyknięty do naszej klasy serwisowej. Używamy do tej czynności adnotacji @InjectMocks. Ok. Mamy już stworzone puste obiekty. Chcielibyśmy jednak, aby coś one robiły. Bierzmy się więc do roboty. Napiszmy test, że wraz z użyciem w serwisie metody "add"...

Mockito - popularny framework do tworzenia atrap obiektów

Co to jest Mockito? Mockito to framework stworzony dla testów jednostkowych Javy. Stosuje się go do utworzenia atrapy obiektu (Mock'a) w celu zaślepienia funkcji lub weryfikacji zdarzeń na nim wykonanych. Dlaczego stosuje się mocki? Testy pisane z atrapami są czytelniejsze i przyjemniejsze do debugowania. Jednocześnie łatwiejsze do napisania, ponieważ autor testu nie musi znać implementacji funkcji aktualnie nietestowanej, która wykorzystywana jest w testowanym fragmencie kodu. Przeznaczamy, dzięki temu, mniej czasu na przygotowanie danych wejściowych i dostajemy gwarancje, że zmiana kodu innej funkcji nie zepsuje stworzonych testów. Na co pozwala Mockito? Pierwszą czynnością, którą możemy zrobić to stworzenie atrap obiektów. Pozwala nam to na używanie obiektów jeszcze niezaimplementowanych. Alternatywą tego zastosowania byłoby stworzenie pustej klasy, ale to nie jest ładne rozwiązanie, ani przyjemne, ani wydajne. Drugą funkcjonalnością jest przypisanie do poszczególnych meto...