Hello,
Im trying to create a Value Proxy (BrowserDetailItem ) that is formed
of a query that only returns a String(name) and a Integer(id).
The SERVER code (each class in a different files)
public class BrowserDetailItem {
private String name;
private Integer id;
public static EntityManager entityManager() {
return (new UnitPersistence()).get();
}
BrowserDetailItem() {
}
BrowserDetailItem(String name, Integer id) {
this.name = name;
this.id = id;
}
public String getName() {
if (name == null)
return "";
else
return name;
}
public Integer getId() {
if (id == null)
return null;
else
return id;
}
public static List<BrowserDetailItem> getBrowserFilterList() {
EntityManager entityManager = entityManager();
try {
List<BrowserDetailItem> tempList = new
ArrayList<BrowserDetailItem>();
Query query = entityManager
.createQuery("SELECT
s.name,
s.id FROM Song s,
Playlist p, Composer c "
+ "WHERE s.id_playlist =
p.id AND
c.id =
p.id_composer ");
tempList = query.getResultList();
tempList.size();
return tempList;
} catch (Exception e) {
return null;
} finally {
entityManager.close();
}
}
}
public class BrowserDetailItemDAO {
public void save(BrowserDetailItem browserItem) {
}
public BrowserDetailItem findById(Integer id) {
return null;
}
}
public class BrowserDetailItemLocator extends
Locator<BrowserDetailItem, Integer> {
@Override
public BrowserDetailItem create(Class<? extends BrowserDetailItem>
clazz) {
return new BrowserDetailItem();
}
@Override
public BrowserDetailItem find(Class<? extends BrowserDetailItem>
clazz,
Integer id) {
return getBrowserDetailItemDao().findById(id);
}
private BrowserDetailItemDAO getBrowserDetailItemDao() {
return new BrowserDetailItemDAO();
}
@Override
public Class<BrowserDetailItem> getDomainType() {
return BrowserDetailItem.class;
}
@Override
public Integer getId(BrowserDetailItem domainObject) {
return domainObject.getId();
}
@Override
public Class<Integer> getIdType() {
return Integer.class;
}
@Override
public Object getVersion(BrowserDetailItem domainObject) {
// return domainObject.getVersion();
return null;
}
}
The SHARED code (each class in a different files)
@ProxyFor(value = BrowserDetailItem.class, locator =
BrowserDetailItemLocator.class)
public interface BrowserDetailItemProxy extends ValueProxy {
public String getName();
public Integer getId();
}
@Service(BrowserDetailItem.class)
public interface BrowserDetailItemRequest extends RequestContext {
Request<List<BrowserDetailItemProxy>> getBrowserFilterList();
}
I did all the wiring acording to the developer guide and
http://cleancodematters.com/2011/06/04/tutorial-gwt-request-factory-part-i/
The code executes (returns the query and assigns the results to a
list) up to the return of getBrowserFilterList() then I get the
following error:
com.google.web.bindery.requestfactory.server.UnexpectedException: The
domain type java.lang.Object[] cannot be sent to the client.
What am I doing wrong? please help