/*
* Copyright 2013 Robert von Burg <eitch@eitchnet.ch>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package li.strolch.rest.model;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import li.strolch.service.api.ServiceResult;
import li.strolch.utils.helper.StringHelper;
/**
* @author Robert von Burg <eitch@eitchnet.ch>
*/
@XmlRootElement(name = "Result")
@XmlAccessorType(XmlAccessType.NONE)
public class Result {
@XmlAttribute(name = "msg")
private String msg;
@XmlAttribute(name = "exceptionMsg")
private String exceptionMsg;
public Result(String msg) {
this.msg = msg;
}
public Result(Exception e) {
this.msg = StringHelper.isEmpty(e.getMessage()) ? e.getClass().getName() : e.getMessage();
this.exceptionMsg = StringHelper.formatExceptionMessage(e);
}
public Result(ServiceResult svcResult) {
if (svcResult.isOk()) {
this.msg = StringHelper.DASH;
} else {
this.msg = svcResult.getMessage();
Throwable t = svcResult.getThrowable();
if (t != null)
this.exceptionMsg = StringHelper.formatExceptionMessage(t);
}
}
public Result() {
this.msg = StringHelper.DASH;
}
public String getMsg() {
return this.msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getExceptionMsg() {
return exceptionMsg;
}
public void setExceptionMsg(String exceptionMsg) {
this.exceptionMsg = exceptionMsg;
}
public static Response toResponse(ServiceResult svcResult) {
Result result = new Result(svcResult);
if (svcResult.isOk())
return Response.ok(result, MediaType.APPLICATION_JSON).build();
return Response.serverError().type(MediaType.APPLICATION_JSON).entity(result).build();
}
}