diff --git a/src/main/java/com/docus/soap/api/EnableSoapAPIClient.java b/src/main/java/com/docus/soap/api/EnableSoapAPIClient.java new file mode 100644 index 0000000..4686209 --- /dev/null +++ b/src/main/java/com/docus/soap/api/EnableSoapAPIClient.java @@ -0,0 +1,14 @@ +package com.docus.soap.api; + +import org.springframework.context.annotation.AdviceMode; +import org.springframework.context.annotation.Import; + +import java.lang.annotation.*; + +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Import(EnableSoapAPIClientSelector.class) +@Inherited +public @interface EnableSoapAPIClient { + AdviceMode mode() default AdviceMode.PROXY; +} diff --git a/src/main/java/com/docus/soap/api/EnableSoapAPIClientSelector.java b/src/main/java/com/docus/soap/api/EnableSoapAPIClientSelector.java new file mode 100644 index 0000000..202b558 --- /dev/null +++ b/src/main/java/com/docus/soap/api/EnableSoapAPIClientSelector.java @@ -0,0 +1,14 @@ +package com.docus.soap.api; + +import org.springframework.context.annotation.AdviceMode; +import org.springframework.context.annotation.AdviceModeImportSelector; + +public class EnableSoapAPIClientSelector extends AdviceModeImportSelector { + + @Override + protected String[] selectImports(AdviceMode adviceMode) { + if (adviceMode != AdviceMode.PROXY) + throw new IllegalStateException("@EnableSoapAPIClient only support PROXY advice mode."); + return new String[]{SoapAPIConfig.class.getName()}; + } +} diff --git a/src/main/java/com/docus/soap/api/request/complain/GetTableByIdDateRequest.java b/src/main/java/com/docus/soap/api/request/complain/GetTableByIdDateRequest.java old mode 100644 new mode 100755 index d82ce9d..2c7b3ca --- a/src/main/java/com/docus/soap/api/request/complain/GetTableByIdDateRequest.java +++ b/src/main/java/com/docus/soap/api/request/complain/GetTableByIdDateRequest.java @@ -5,6 +5,9 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; +/** + * @author nicle.lin + */ @XmlRootElement(name = "SOF_GetQRCodeBySys", namespace = "http://webservice.qrcode.pki.jhsec.com.cn/") @XmlAccessorType(XmlAccessType.FIELD) public class GetTableByIdDateRequest { diff --git a/src/main/java/com/docus/soap/api/response/complain/ComplaintListResult.java b/src/main/java/com/docus/soap/api/response/complain/ComplaintListResult.java old mode 100644 new mode 100755 index 7847dbf..33b6a1e --- a/src/main/java/com/docus/soap/api/response/complain/ComplaintListResult.java +++ b/src/main/java/com/docus/soap/api/response/complain/ComplaintListResult.java @@ -3,39 +3,43 @@ package com.docus.soap.api.response.complain; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; -import java.util.ArrayList; -import java.util.List; - +/** + * @author nicle.lin + */ @XmlAccessorType(XmlAccessType.FIELD) public class ComplaintListResult { - @XmlElement(name = "DataItem") - private final List dataItem = new ArrayList<>(); + @XmlElement(name = "data") + private DataItem data; + + @XmlElement(name = "code") + private String code; - @XmlElement(name = "totalpage") - private int totalPage; + @XmlElement(name = "msg") + private String msg; - @XmlElement(name = "totalrecord") - private int totalRecord; + public DataItem getData() { + return data; + } - public List getDataItem() { - return dataItem; + public void setData(DataItem data) { + this.data = data; } - public int getTotalPage() { - return totalPage; + public String getCode() { + return code; } - public void setTotalPage(int totalPage) { - this.totalPage = totalPage; + public void setCode(String code) { + this.code = code; } - public int getTotalRecord() { - return totalRecord; + public String getMsg() { + return msg; } - public void setTotalRecord(int totalRecord) { - this.totalRecord = totalRecord; + public void setMsg(String msg) { + this.msg = msg; } } diff --git a/src/main/java/com/docus/soap/api/response/complain/GetComplaintListExResponse.java b/src/main/java/com/docus/soap/api/response/complain/GetComplaintListExResponse.java index 3edad76..a508800 100644 --- a/src/main/java/com/docus/soap/api/response/complain/GetComplaintListExResponse.java +++ b/src/main/java/com/docus/soap/api/response/complain/GetComplaintListExResponse.java @@ -1,22 +1,21 @@ package com.docus.soap.api.response.complain; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.*; +import java.util.List; -@XmlRootElement(name = "SOF_GetQRCodeBySysResponse", namespace = "http://webservice.qrcode.pki.jhsec.com.cn/") +@XmlRootElement(name = "SOF_GetQRCodeBySysResponse") @XmlAccessorType(XmlAccessType.FIELD) public class GetComplaintListExResponse { - @XmlElement(name = "return") - private String result; + @XmlAnyElement + public List results; - public String getResult() { - return result; + + public List getResults() { + return results; } - public void setResult(String result) { - this.result = result; + public void setResults(List results) { + this.results = results; } } diff --git a/src/main/java/com/docus/soap/api/response/complain/GetTableByIdDateResponse.java b/src/main/java/com/docus/soap/api/response/complain/GetTableByIdDateResponse.java old mode 100644 new mode 100755 index 1391a0d..783c0ba --- a/src/main/java/com/docus/soap/api/response/complain/GetTableByIdDateResponse.java +++ b/src/main/java/com/docus/soap/api/response/complain/GetTableByIdDateResponse.java @@ -2,21 +2,25 @@ package com.docus.soap.api.response.complain; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlAnyElement; import javax.xml.bind.annotation.XmlRootElement; +import java.util.List; -@XmlRootElement(name = "GetTableByIdDateResponse") +/** + * @author nicle.lin + */ +@XmlRootElement(name = "SOF_GetQRCodeBySysResponse") @XmlAccessorType(XmlAccessType.FIELD) public class GetTableByIdDateResponse { + @XmlAnyElement + public List results; - @XmlElement(name = "GetTableByIdDateResult") - private String result; - public String getResult() { - return result; + public List getResults() { + return results; } - public void setResult(String result) { - this.result = result; + public void setResults(List results) { + this.results = results; } } diff --git a/src/main/java/com/docus/soap/api/service/ComplaintAPIService.java b/src/main/java/com/docus/soap/api/service/ComplaintAPIService.java index ffb47fc..220af01 100644 --- a/src/main/java/com/docus/soap/api/service/ComplaintAPIService.java +++ b/src/main/java/com/docus/soap/api/service/ComplaintAPIService.java @@ -1,18 +1,20 @@ package com.docus.soap.api.service; +import com.docus.core.util.json.JSON; import com.docus.soap.api.SoapAPIClient; import com.docus.soap.api.SoapAPISettings; import com.docus.soap.api.request.complain.GetTableByIdDateRequest; -import com.docus.soap.api.response.complain.GetComplaintListExResponse; -import com.docus.soap.api.response.complain.GetTableByIdDateResult; +import com.docus.soap.api.response.complain.ComplaintListResult; +import com.docus.soap.api.response.complain.GetTableByIdDateResponse; +import com.sun.org.apache.xerces.internal.dom.ElementNSImpl; public class ComplaintAPIService { private SoapAPIClient soapAPIClient; - public GetTableByIdDateResult getTableByIdDate(GetTableByIdDateRequest targetRequest, SoapAPISettings soapAPISettings) { - GetComplaintListExResponse o = (GetComplaintListExResponse) soapAPIClient.soapCall(targetRequest, soapAPISettings.getAction(), soapAPISettings.getUri()); - System.out.println("1"); - return null; + public ComplaintListResult getTableByIdDate(GetTableByIdDateRequest targetRequest, SoapAPISettings soapAPISettings) { + GetTableByIdDateResponse response = (GetTableByIdDateResponse) soapAPIClient.soapCall(targetRequest, soapAPISettings.getAction(), soapAPISettings.getUri()); + ComplaintListResult complaintListResult = JSON.fromJSON((((ElementNSImpl) response.getResults().get(0)).getFirstChild().getTextContent()), ComplaintListResult.class); + return complaintListResult; } public void setWebServiceClient(SoapAPIClient webServiceClient) { diff --git a/src/test/java/com/docus/soap/api/ComplaintAPIServiceTest.java b/src/test/java/com/docus/soap/api/ComplaintAPIServiceTest.java index 2b63560..7e94f78 100644 --- a/src/test/java/com/docus/soap/api/ComplaintAPIServiceTest.java +++ b/src/test/java/com/docus/soap/api/ComplaintAPIServiceTest.java @@ -2,7 +2,7 @@ package com.docus.soap.api; import com.docus.core.util.AssertUtils; import com.docus.soap.api.request.complain.GetTableByIdDateRequest; -import com.docus.soap.api.response.complain.GetTableByIdDateResult; +import com.docus.soap.api.response.complain.ComplaintListResult; import com.docus.soap.api.service.ComplaintAPIService; import org.junit.Test; import org.junit.runner.RunWith; @@ -33,7 +33,7 @@ public class ComplaintAPIServiceTest { public void getTableByIdDateTest() { GetTableByIdDateRequest request = new GetTableByIdDateRequest(); request.setSys("JSScan"); - GetTableByIdDateResult result = complaintAPIService.getTableByIdDate(request, getTableByIdDateSettings()); + ComplaintListResult result = complaintAPIService.getTableByIdDate(request, getTableByIdDateSettings()); AssertUtils.assertNotNull(result, "not null"); }