Mało znany ficzer GWT
Mało znany, bo nie wymieniany w książkach. Mianowicie kto używa adnotacji @RemoteServiceRelativePath, khe? Pewno niewielu z was. Co daje nam ta adnotacja? Otóż w tradycyjnym sposobie tworzenia połączenia wykorzystujemy rzutowanie na ServiceDefTarget i wywołanie metody ServiceDefTarget#setServiceEntryPoint(java.lang.String). Przykładowy kod wygląda zatem tak:
Listing 1. Klasycznie tworzony serwis
public static HttpSessionAccessorAsync makeHttpSessionAccessorAsync() {
HttpSessionAccessorAsync httpSessionAccessorAsync = GWT.create(HttpSessionAccessor.class);
ServiceDefTarget endpoint = (ServiceDefTarget) httpSessionAccessorAsync;
endpoint.setServiceEntryPoint(GWT.getHostPageBaseURL() + "security/admin/SessionAdminService");
return httpSessionAccessorAsync;
}
Jeżeli jednak w naszym interfejsie HttpSessionAccessor dokonamy małej poprawki:
Listing 2. Poprawiony interfejs
import java.util.List;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
/**
* The Interface HttpSessionAccessor.
*/
@RemoteServiceRelativePath("security/admin/SessionAdminService")
public interface HttpSessionAccessor extends RemoteService {
/**
* Destroy session.
*
* @param httpSessionDTO
* the http session dto
*/
public void destroySession(HttpSessionDTO httpSessionDTO);
/**
* Destroy session.
*
* @param id
* the id
*/
public void destroySession(String id);
/**
* Gets the session by id.
*
* @param id
* the id
*
* @return the session by id
*/
public HttpSessionDTO getSessionById(String id);
/**
* Gets the sessions.
*
* @return the sessions
*/
public List<httpsessiondto> getSessions();
}</httpsessiondto>
Dodając adnotację to nasz kod metody fabrykującej znacząco się uprości:
Listing 3. Nowa wersja kodu
public static HttpSessionAccessorAsync makeHttpSessionAccessorAsync() {
return GWT.create(HttpSessionAccessor.class); ;
}
Od razu lepiej prawda? Oczywiście tradycyjna droga nadpisze wartość z adnotacji, ale to jest akurat rozsądne.
Kod jest dostępny na licencji MIT. Jednak niektóre rozwiązania mogą być objęte inną licencją. W takim przypadku jest, to zaznaczone. Artykuły są dostępne na licencji CC-BY.
Jeżeli spodobał ci się ten wpis, to podziel się nim z innymi lub wesprzyj autora.