Dev Mode initialized. Startup URL:
http://127.0.0.1:8888/?gwt.codesvr=127.0.0.1:9997
May 18, 2011 5:41:12 PM
com.google.web.bindery.requestfactory.server.RequestFactoryServlet
doPost
SEVERE: Unexpected error
com.google.web.bindery.requestfactory.server.UnexpectedException: The
persisted entity with id 0 has a null version
[...]
[ERROR] 500 - POST /gwtRequest (127.0.0.1) 1420 bytes
#########################
...is what I get.
my web.xml:
<servlet>
<servlet-name>requestFactoryServlet</servlet-name>
<servlet-
class>com.google.web.bindery.requestfactory.server.RequestFactoryServlet</
servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>requestFactoryServlet</servlet-name>
<url-pattern>/gwtRequest</url-pattern>
</servlet-mapping>
my server/AvailabilityLocator.java:
import com.google.web.bindery.requestfactory.shared.Locator;
import dp.verp.model.Availability;
public class AvailabilityLocator extends Locator<Availability, Long> {
@Override
public Availability create(Class<? extends Availability> aClass) {
return new Availability();
}
@Override
public Availability find(Class<? extends Availability> aClass,
Long aLong) {
return new Availability();
}
@Override
public Class<Availability> getDomainType() {
return null;
}
@Override
public Long getId(Availability availability) {
return Long.parseLong(String.valueOf(availability.getId()));
}
@Override
public Class<Long> getIdType() {
return null;
}
@Override
public Object getVersion(Availability availability) {
return null;
}
}
my server/MyServiceLocator:
import com.google.web.bindery.requestfactory.shared.ServiceLocator;
public class MyServiceLocator implements ServiceLocator {
/**
* Returns an instance of the service object.
*
* @param clazz the requested type of service object
* @return an instance of the service object
*/
@Override
public Object getInstance(Class<?> clazz) {
try {
return clazz.newInstance();
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
my shared/AvailabilityProxy.java:
import com.google.web.bindery.requestfactory.shared.EntityProxy;
import com.google.web.bindery.requestfactory.shared.ProxyFor;
import dp.verp.model.Availability;
import dp.verp.view.availability.server.AvailabilityLocator;
@ProxyFor(value = Availability.class, locator =
AvailabilityLocator.class)
public interface AvailabilityProxy extends EntityProxy {
int getId();
void setSchedule(String schedule);
String getSchedule();
}
my shard/AvailabilityRequest:
import com.google.web.bindery.requestfactory.shared.InstanceRequest;
import com.google.web.bindery.requestfactory.shared.Request;
import com.google.web.bindery.requestfactory.shared.RequestContext;
import com.google.web.bindery.requestfactory.shared.Service;
import dp.verp.model.Availability;
import dp.verp.view.availability.server.MyServiceLocator;
@Service(value = Availability.class, locator = MyServiceLocator.class)
public interface AvailabilityRequest extends RequestContext {
InstanceRequest<AvailabilityProxy, Void> persist();
}
my shared/AvailabilityRequestFactory.java:
import com.google.web.bindery.requestfactory.shared.InstanceRequest;
import com.google.web.bindery.requestfactory.shared.RequestContext;
import com.google.web.bindery.requestfactory.shared.RequestFactory;
import com.google.web.bindery.requestfactory.shared.Service;
import dp.verp.model.Availability;
public interface AvailabilityRequestFactory extends RequestFactory {
/**
* Source of request objects for the Person class.
*/
@Service(Availability.class)
interface PersonRequest extends RequestContext {
InstanceRequest<AvailabilityProxy, Void> persist();
}
AvailabilityRequest availabilityRequest();
}
my model/Availability.java:
@Entity
public class Availability {
@Id
private int id;
private String schedule;
public void persist() {
EntityManager em = Database.getEntityManager();
try {
em.persist(this);
} finally {
em.close();
}
}
public int getId() {
return id;
}
public String getSchedule() {
return schedule;
}
public void setSchedule(String schedule) {
this.schedule = schedule;
}
}
################
And here is my call from the presenter class:
EventBus eventBus = new SimpleEventBus();
AvailabilityRequestFactory requestFactory =
GWT.create(AvailabilityRequestFactory.class);
requestFactory.initialize(eventBus);
AvailabilityRequest request =
requestFactory.availabilityRequest();
AvailabilityProxy availabilityProxy =
request.create(AvailabilityProxy.class);
Request<Void> createReq =
request.persist().using(availabilityProxy);
createReq.fire(new Receiver<Void>() {
@Override
public void onSuccess(Void response) {
}
});
Btw does anybody know a working&minimalistic example that implements
the RequestFactory paradigm?
--
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-web-toolkit?hl=en.