You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Patrick Haggood <co...@email.com> on 2006/11/19 17:33:50 UTC
Null exception using Beanutils.copyproperties on POJO and
JSONDynabean
I have a JSONOBject I've turned into a Dynabean, then I'm trying to
populate the related POJO on the server side, but I keep getting a
NullpointerException.
Function, POJO (and it's base hierarchy) and the stacktrace are below:
/*****************************************************
/* JSONObject
*****************************************************/
jsob.ToString() = "{\"today\":{\"month\":10,\"day\":0,\"year\":106,
\"seconds\":59,\"time\":1.163953559956E12,\"date\":19,\"timezoneOffset
\":300,\"hours\":11,\"minutes\":25},\"phonenumber\":\"313.555.1212\",
\"type\":\"net.codezilla.unitycore.sample.AddressBookEntry\",\"address
\":\"123 Main\",\"email\":\"nate@wayne.edu\",\"docname\":\"\",\"docURL
\":\"\",\"name\":\"Johnson, Nate\",\"fullname\":\"Johnson, Nate\",\"id
\":91}"
/*****************************************************
/* Function using BeanUtils.copyProperties
*****************************************************/
// If I have the objectKey, this must be an edit so just retrieve the
existing
// persistance wrapper (UBO) and update the beans.
private int putJSONUnityObject(int okey, JSONObject jsob){
int rval = 0;
try {
// get the token for this object
int tokenkey = getObjectTokenID(okey);
// retrieve the subclass of UBO for this token
UnityBaseObject ubo =
getGenericService().getObject(tokenkey);
// Turn jsonobject into Dynabean
Object mybean = JSONObject.toBean(jsob);
BeanUtils mb = new BeanUtils();
mb.copyProperties(ubo,mybean);
//ubo.setId(okey);
int cFolder = this.getCurrentFolderID();
rval = this.storeUnityObject(ubo,cFolder);
} catch (Exception e) {
e.printStackTrace();
}
return rval;
}
/*****************************************************
/* My POJO
*****************************************************/
public class AddressBookEntry extends UnityDocument {
private String fullname, address, phonenumber, email;
/** Creates a new instance of AddressBookEntry */
public AddressBookEntry(String fname, String addr, String phone,
String em) {
fullname=fname;
address=addr;
phonenumber=phone;
email =em;
}
public AddressBookEntry(){
}
public String getName(){
return getFullname();
}
public boolean validate(){
return isValid;
}
public String getFullname() {
return fullname;
}
public void setFullname(String fname) {
this.fullname = fname;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhonenumber() {
return phonenumber;
}
public void setPhonenumber(String phonenumber) {
this.phonenumber = phonenumber;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
/*****************************************************
/*** POJO Base Objects
*****************************************************/
package net.codezilla.unitycore.base;
import java.util.Vector;
/**
*
* @author pbh
*/
public class UnityDocument extends UnityBaseObject {
private String docName;
private String docURL;
public UnityDocument(){
}
/** Creates a new instance of UnityDocument */
public UnityDocument( String dname) {
this.setDocname(dname);
}
public String getName(){
return this.getDocname();
}
public boolean validate(){
return isValid;
}
public String getType(){
return this.getClass().getName();
}
public String getDocname() {
return docName;
}
public void setDocname(String docname) {
this.docName = docname;
}
public String getDocURL() {
return docURL;
}
public void setDocURL(String docURL) {
this.docURL = docURL;
}
}
/*****************************************************
//******* Base Doc
*****************************************************/
package net.codezilla.unitycore.base;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
*
* @author pbh
*/
public abstract class UnityBaseObject {
int id = -1;
protected boolean isValid=false;
/** Creates a new instance of UnityBaseObject */
public UnityBaseObject() {
}
/** Assign the persistant store id from the key generator
* @param dbcon A database controller object
*/
public void setId(int oid){
id = oid;
}
/** Retrieve the persistant store id from the key generator
* @param dbcon A database controller object
*/
public int getId() {
return id;
}
public Date getToday(){
return new Date();
}
/** Stub to return whatever function the extending object uses to
identify itself in a list
*/
public abstract String getName();
public abstract String getType();
/** Stub for the object's custom validation process
*/
public abstract boolean validate(); // is object ready for storage?
}
/*****************************************************
* Stacktrace
*****************************************************/
java.lang.NullPointerException
at
org.apache.commons.beanutils.BeanUtilsBean.copyProperties(BeanUtilsBean.java:232)
at
org.apache.commons.beanutils.BeanUtils.copyProperties(BeanUtils.java:114)
at
net.codezilla.unitycore.renderbot.gwt.UnityJSONServiceManager.putJSONUnityObject(UnityJSONServiceManager.java:308)
at
net.codezilla.unitycore.renderbot.gwt.UnityJSONServiceManager.putJSONUnityObject(UnityJSONServiceManager.java:376)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
com.metaparadigm.jsonrpc.JSONRPCBridge.call(JSONRPCBridge.java:1122)
at
com.metaparadigm.jsonrpc.JSONRPCServlet.service(JSONRPCServlet.java:163)
at
GWTApplication.server.UnityServlet.service(UnityServlet.java:45)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
com.google.gwt.dev.shell.GWTShellServlet.service(GWTShellServlet.java:216)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol
$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool
$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org