diff --git a/src/main/java/com/nexacro/spring/view/NexacroView.java b/src/main/java/com/nexacro/spring/view/NexacroView.java index 67ca789..6286210 100644 --- a/src/main/java/com/nexacro/spring/view/NexacroView.java +++ b/src/main/java/com/nexacro/spring/view/NexacroView.java @@ -155,11 +155,10 @@ public class NexacroView extends AbstractView { private void sendFirstRowData(PlatformData platformData, NexacroFirstRowHandler firstRowHandler, boolean isCallEndMethod) throws PlatformException { + setFirstRowStatusDataSet(platformData); + removeTransferData(firstRowHandler, platformData); - // add first row status DataSet - platformData.addDataSet(NexacroUtil.createFirstRowStatusDataSet(NexacroConstants.ERROR.DEFAULT_ERROR_CODE, null)); - if(logger.isDebugEnabled()) { logger.debug("response platformdata=[{}]", new Debugger().detail(platformData)); } @@ -168,6 +167,21 @@ public class NexacroView extends AbstractView { NexacroFirstRowAccessor.end(firstRowHandler); } } + + private void setFirstRowStatusDataSet(PlatformData platformData){ + + Variable errorCodeVariable = platformData.getVariable(NexacroConstants.ERROR.ERROR_CODE); + if(errorCodeVariable != null && errorCodeVariable.getInt() < 0) { + // error status + Variable errorMsgVariable = platformData.getVariable(NexacroConstants.ERROR.ERROR_MSG); + platformData.addDataSet(NexacroUtil.createFirstRowStatusDataSet(errorCodeVariable.getInt(), errorMsgVariable != null? errorMsgVariable.getString(): null)); + } else { + // success status + platformData.addDataSet(NexacroUtil.createFirstRowStatusDataSet(NexacroConstants.ERROR.DEFAULT_ERROR_CODE, null)); + } + + } + /** * Statements diff --git a/src/test/java/com/nexacro/spring/data/NexacroFirstRowHandlerTest.java b/src/test/java/com/nexacro/spring/data/NexacroFirstRowHandlerTest.java index 7aee5a9..9dae0db 100644 --- a/src/test/java/com/nexacro/spring/data/NexacroFirstRowHandlerTest.java +++ b/src/test/java/com/nexacro/spring/data/NexacroFirstRowHandlerTest.java @@ -17,6 +17,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.nexacro.xapi.data.DataSet; import com.nexacro.xapi.data.PlatformData; import com.nexacro.xapi.data.Variable; +import com.nexacro.xapi.data.datatype.PlatformDataType; import com.nexacro.xapi.tx.DataDeserializer; import com.nexacro.xapi.tx.DataSerializerFactory; import com.nexacro.xapi.tx.PlatformException; @@ -33,9 +34,6 @@ import com.nexacro.xapi.tx.PlatformType; @ContextConfiguration(locations = { "classpath*:spring/context-*.xml" } ) public class NexacroFirstRowHandlerTest { -// @Autowired -// private LargeDataService largeService; - @Before public void setUp() throws Exception { } @@ -44,6 +42,54 @@ public class NexacroFirstRowHandlerTest { public void tearDown() throws Exception { } + public void testSendDataSet() { + + FirstRowTrackableServletOutputStream outputStream = new FirstRowTrackableServletOutputStream(); + NexacroFirstRowHandler firstRowHandler = createFirstRowHandler(outputStream); + + String sendDataSetName = "ds1"; + DataSet ds = new DataSet(sendDataSetName); + ds.addColumn("column1", PlatformDataType.INT); + ds.addColumn("column2", PlatformDataType.STRING); + + int dataCount = 1000; + for(int i=0; i