Funkcje w Guavie i dekoratory

Najprostszy do zaimplementowania wzorzec obiektowy, poza singletonem, w programowaniu z użyciem Function i Guavy, czyli dekorator. Dlaczego najprostszy? Ponieważ jest to podstawa działania funkcji wyższego rzędu (ang. High Order Function), które znowuż są podstawą tworzenia trochę bardziej zaawansowanych zabawek. Motywacja klasycznym przykładem dekoratora jest budowanie GUI gdzie kolejne elementy staramy się „udekorować” pewnymi dodatkami. W […]

Warsjawa 2014, czyli Koziołek strikes back

W tym roku po raz pierwszy od dawien dawna wybrałem się na Warsjawę. I to w podwójnej roli jako uczestnik i jako prelegent/prowadzący warsztat. Mój warsztat Zacznę od mojego warsztatu. No nie wyszło… poszło do dupy 🙂 Brak wprawy ale jak Venkat stwierdził First three times sucks Wnioski zostaną wyciągnięte i przeanalizowane. Poprawki wprowadzone, a […]

Strażnicy, czyli coś czego mi brakuje w Javie

W sumie brakuje mi dobrej implementacji tego rozwiązania, bo można taką funkcjonalność mieć z wykorzystaniem np. AspectJ czy Type Annotations. Jednak o co chodzi? Guardians of Erlang Erlang posiada bardzo fajną konstrukcję zwaną strażnikami (guardians). Cóż to jest? Otóż mając jakąś funkcję możemy walidować argumenty w deklaratywny sposób. Nie wywołujemy żadnego wywołania czy też nie […]

Suplement do Suppliera

Na ostatnim spotkaniu wrocławskiego JUGa padło pytanie co do Suppliera z poprzedniego wpisu dotyczące tego jak należy zamykać BufferedReader. Trochę się niestety zamotałem i nie byłem wstanie udzielić dobrej odpowiedzi na to pytanie, ale po spokojnym przemyśleniu sprawy rzecz jest bardziej niż prosta. Błogosławione niech będą rzeczy nowe w Javie 7 Dokładnie zaś konstrukcja try-with-resource, […]

Supplier z Guavy jako narzędzie odczytu plików

Interfejs Supplier opisałem już pewien czas temu. Dziś chciałbym przedstawić pewne specyficzne zastosowanie tego interfejsu. Mianowicie stworzymy klasę, która będzie w oparciu o ten interfejs odczytywać pliki. Prawie leniwe czytanie plików Generalnie w Javie da się czytać pliki w sposób leniwy. Bierzemy sobie BufferedReader i wpinamy go w jakiś listener. Następnie uderzamy zdarzeniem „następna linia” […]

Funkcja niezmieniająca i konsumenci w Guavie

W poprzednim wpisie poświęconym Guavie wspomniałem, że przyjrzymy się sprawie wywołania loggera w naszym if-potworku. Listing 1. If-potworek for (ReportRunHistory reportRunHistory : reportRunsHistory) { LOG.info(reportRunHistory.toString()); if (reportRunHistory.status.equals(CANCELED.getStatusText()) || reportRunHistory.status.equals(FAILED.getStatusText()) || reportRunHistory.status.equals(COMPLETED.getStatusText())){ // … } } Sprawę ifów mamy już rozwiązaną. Czas przyjrzeć się temu co można zrobić z pierwszą linijką. Tak naprawdę to co tu […]