2011-09-01 20 views
5

Estoy tratando de crear un ValueProxy que contenga información básica acerca de una búsqueda que está realizando un usuario. Por algún motivo, GWT quiere que sea un EntityProxy pero no veo por qué (ni tiene sentido que esta clase sea un EntityProxy).No se puede crear un ValueProxy

// FilterProxy extends ValueProxy 
@ProxyFor(DayFilter.class) 
public interface DayFilterProxy extends FilterProxy { 

    void setFilterValue(Date day); 
    Date getFilterValue(); 
} 

public class DayFilter extends Filter { 

    public DayFilter() { 
     setOperator(FilterOperator.GREATER_THAN_OR_EQUAL); 
     setField("dateRequested"); 
    } 

    public void setFilterValue(Date date) { 
     this.value = date; 
    } 

    public Date getFilterValue() { 
     return value; 
    } 
} 

public interface PaginationRequest<T> extends RequestContext { 

    Request<List<T>> paginate(int offset, int limit, String sortColumn, 
      boolean isSortAscending, List<FilterProxy> filters); 

    Request<Integer> count(List<FilterProxy> filters); 
} 

@Service(value=TripService.class, locator=SchedgyServiceLocator.class) 
public interface TripRequest extends PaginationRequest<TripProxy> { 

    Request<TripProxy> save(TripProxy trip); 
} 

Dentro de la actividad que está enviando esta vuelta al servidor:

// Request is a TripRequest 
DayFilterProxy filter = request.create(DayFilterProxy.class); 

Esto se traduce en:

java.lang.AssertionError: com.schedgy.trip.dao.filter.trip.proxy.DayFilterProxy is not an EntityProxy type 
    at com.google.web.bindery.requestfactory.shared.impl.IdFactory.asEntityProxy(IdFactory.java:66) 
    at com.google.web.bindery.requestfactory.shared.impl.IdFactory.createId(IdFactory.java:229) 
    at com.google.web.bindery.requestfactory.shared.impl.IdFactory.allocateId(IdFactory.java:41) 
    at com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext.create(AbstractRequestContext.java:478) 
    at com.schedgy.trip.client.activity.TripsActivity.getFilters(TripsActivity.java:56) 

¿Alguna idea? Tiene que ser algo obvio que estoy pasando por alto ya que tengo ValueProxies trabajando en otro lugar del código.

Respuesta

10

¿Podría ser que su DayFilterProxy no esté referenciado en absoluto desde RequestContext?

+0

Sí, creo que ese es el caso. Solo estoy haciendo referencia al tipo de FilterProxy base en RequestContext. Pensé que con GWT 2.4 podríamos tener parámetros polimórficos en fábrica de solicitud. – Brad

+5

Tiene que agregar una anotación '@ ExtraTypes' haciendo referencia a ellos, a continuación: http://code.google.com/p/google-web-toolkit/wiki/RequestFactory_2_4#Polymorphism_support –

+0

¡Impresionante! ¡Gracias! – Brad

Cuestiones relacionadas