/*
* Copyright 2011 Alibaba.com All right reserved. This software is the
* confidential and proprietary information of Alibaba.com ("Confidential
* Information"). You shall not disclose such Confidential Information and shall
* use it only in accordance with the terms of the license agreement you entered
* into with Alibaba.com.
*/
package com.alibaba.dubbo.governance.web.home.module.screen;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.governance.web.util.WebConstants;
import com.alibaba.dubbo.registry.common.domain.User;
import com.alibaba.fastjson.JSON;
public abstract class Restful {
@Autowired
private HttpServletResponse response;
@Autowired
HttpServletRequest request;
// @Autowired
// RegistryValidator registryService;
protected String role = null;
protected String operator = null;
protected User currentUser = null;
protected String operatorAddress = null;
protected URL url = null;
public void execute(Map<String, Object> context) throws Exception {
Result result = new Result();
if(request.getParameter("url")!=null){
url = URL.valueOf(URL.decode(request.getParameter("url")));
}
if (context.get(WebConstants.CURRENT_USER_KEY) != null) {
User user = (User) context.get(WebConstants.CURRENT_USER_KEY);
currentUser = user;
operator = user.getUsername();
role = user.getRole();
context.put(WebConstants.CURRENT_USER_KEY, user);
}
operatorAddress = (String) context.get("clientid");
if(operatorAddress==null || operatorAddress.isEmpty()){
operatorAddress = (String) context.get("request.remoteHost");
}
context.put("operator", operator);
context.put("operatorAddress", operatorAddress);
String jsonResult = null;
try {
result = doExecute(context);
result.setStatus("OK");
} catch (IllegalArgumentException t) {
result.setStatus("ERROR");
result.setCode(3);
result.setMessage(t.getMessage());
}
// catch (InvalidRequestException t) {
// result.setStatus("ERROR");
// result.setCode(2);
// result.setMessage(t.getMessage());
// }
catch (Throwable t){
result.setStatus("ERROR");
result.setCode(1);
result.setMessage(t.getMessage());
}
response.setContentType("application/javascript");
ServletOutputStream os = response.getOutputStream();
try {
jsonResult = JSON.toJSONString(result);
os.print(jsonResult);
} catch (Exception e) {
response.setStatus(500);
os.print(e.getMessage());
}finally{
os.flush();
}
}
protected abstract Result doExecute(Map<String, Object> context) throws Exception;
}