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.