Spring java ResponseEntity<T> with multiple parameter types -


i'm working java , spring mvc, in first version of app response responseentity<string> , haved , error returned return new responseentity<string>(httperrors.tostring(), responseheaders, httpstatus.bad_request); , when right return new responseentity<string>(loginresponse.tostring(), responseheaders, httpstatus.ok);. believe theres better way it, without using tostring() method, returning specific object according case this:

@restcontroller @requestmapping("/user") public class logincontroller {      /** login service validate user. */     @autowired     loginservice loginservice;      @requestmapping(value = "/login", method = requestmethod.post)     public @responsebody responseentity<?> validate(@requestbody final userlog login) {          webuser webuser = loginservice.getuserdetails(login.getlogin(), login.getpassword());         httpheaders responseheaders = new httpheaders();         responseheaders.setcontenttype(mediatype.application_json);          if (webuser == null) {             httperrors httperrors = new httperrors(apicommonresources.error_402, "error" + "." + apicommonresources.error_402, apicommonresources.error_402_text);             return new responseentity<httperrors>(httperrors, responseheaders, httpstatus.bad_request);         }          list<account> useraccounts = loginservice.getmerchantaccounts(webuser.getmerchantid());          // json web token builder         token = "b7d22951486d713f92221bb987347777";          loginresponse loginresponse = new loginresponse(apicommonresources.success_request_code, token);          return new responseentity<loginresponse>(loginresponse, responseheaders, httpstatus.ok);      }  } 

the question how can create class can wraps loginresponse httperrorsobject types , send in ? returning object in responseentity:

loginresponse class:

public class loginresponse{      public loginresponse(integer statuscode, string token){         this.setstatuscode(statuscode);         this.settoken(token);     }      private string token;     private integer statuscode;      public string gettoken() {         return token;     }      public void settoken(string token) {         this.token = token;     }      public integer getstatuscode() {         return statuscode;     }      public void setstatuscode(integer statuscode) {         this.statuscode = statuscode;     }      @override     public string tostring() {          stringbuilder jsonresponse = new stringbuilder();          jsonresponse.append("{");         jsonresponse.append("\"statuscode\":");         jsonresponse.append("\"" + statuscode + "\",");         jsonresponse.append("\"token\":");         jsonresponse.append("\"" + token + "\"");         jsonresponse.append("}");          return jsonresponse.tostring();     }  } 

and httperrors class:

public class httperrors {      public httperrors(){     }      public httperrors(string errorcode, string errorkey, string errormessage) {         super();         this.errorcode = errorcode;         this.errorkey = errorkey;         this.errormessage = errormessage;     }      private string errorcode;     private string errorkey;     private string errormessage;      public string geterrorcode() {         return errorcode;     }      public void seterrorcode(string errorcode) {         this.errorcode = errorcode;     }      public string geterrorkey() {         return errorkey;     }      public void seterrorkey(string errorkey) {         this.errorkey = errorkey;     }      public string geterrormessage() {         return errormessage;     }      public void seterrormessage(string errormessage) {         this.errormessage = errormessage;     }      @override     public string tostring() {          stringbuilder jsonerror = new stringbuilder();          jsonerror.append("{");         jsonerror.append("\"errorcode\":");         jsonerror.append("\"" + errorcode + "\",");         jsonerror.append("\"errorkey\":");         jsonerror.append("\"" + errorkey + "\",");         jsonerror.append("\"errormessage\":");         jsonerror.append("\"" + errormessage + "\"");         jsonerror.append("}");          return jsonerror.tostring();     }  } 

public class response<t> {     private int httpstatus;    private t data;     //getter , setter consructor      eg constructors     public restresponse(t data){     this(http_ok,data)     }      public restresponse(int httpstatus,t data){     this.httpstatus = httpstaus;     this.data = data;      } 

now use template response objects (repsone objects can pojos too)

return new restentity<loginresponse>(loginresponse,statuscode) //loginresponse object 

where loginresponse is

public class loginresponse { private string token; //getter , setter , constructors. } 

you should take time establish rest contracts (read using google :)) , follow through using basic logic. java , spring magic together. have fun.


Comments

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -