/contrib-imola/cics-bc/jbi4cics/src/test/java/it/imolinfo/jbi4cics/test/mapping/commarea/NestedCommareaMappingTest.java

https://bitbucket.org/ssteinmetz/openesb-components · Java · 158 lines · 109 code · 25 blank · 24 comment · 0 complexity · 6d441abf63573db131264b7d165ff833 MD5 · raw file

  1. /*******************************************************************************
  2. * Copyright (c) 2005, 2006 Imola Informatica.
  3. * All rights reserved. This program and the accompanying materials
  4. * are made available under the terms of the LGPL License v2.1
  5. * which accompanies this distribution, and is available at
  6. * http://www.gnu.org/licenses/lgpl.html
  7. *******************************************************************************/
  8. package it.imolinfo.jbi4cics.test.mapping.commarea;
  9. import it.imolinfo.jbi4cics.messageformat.commarea.CommareaBeanMappingDescriptor;
  10. import it.imolinfo.jbi4cics.messageformat.commarea.CommareaFormatter;
  11. import it.imolinfo.jbi4cics.service.ServiceContext;
  12. import it.imolinfo.jbi4cics.typemapping.cobol.CobolType;
  13. import it.imolinfo.jbi4cics.typemapping.cobol.CobolTypeDescriptor;
  14. import it.imolinfo.jbi4cics.typemapping.cobol.HexDump;
  15. import junit.framework.TestCase;
  16. import org.apache.commons.lang.builder.EqualsBuilder;
  17. import org.apache.commons.lang.builder.HashCodeBuilder;
  18. import org.apache.commons.lang.builder.ReflectionToStringBuilder;
  19. import org.apache.commons.logging.Log;
  20. import org.apache.commons.logging.LogFactory;
  21. public class NestedCommareaMappingTest extends TestCase {
  22. private static Log log = LogFactory.getLog(NestedCommareaMappingTest.class);
  23. public static final String DeafultHostCodePage = "CP1144";
  24. public NestedCommareaMappingTest(String arg) {
  25. super(arg);
  26. }
  27. /**
  28. * questo metodo testa la seguente commarea
  29. *
  30. * 01 PIPPO PICX(10)
  31. * 01 NESTED
  32. * 02 PLUTO PICX(10)
  33. *
  34. */
  35. public final void testOneNest() {
  36. try {
  37. // inizializzazione del cobolTypeDescriptor
  38. CobolTypeDescriptor cobolTypeDescriptor = new CobolTypeDescriptor();
  39. cobolTypeDescriptor.setType(CobolType.STRING);
  40. cobolTypeDescriptor.setStringLength(10);
  41. cobolTypeDescriptor.setPadCharacter(" ");
  42. cobolTypeDescriptor.setCodePage(DeafultHostCodePage);
  43. // inizializzazione del CommareaBeanMappingDescriptor External
  44. CommareaBeanMappingDescriptor commareaBeanMappingDescriptorExternal = new CommareaBeanMappingDescriptor();
  45. commareaBeanMappingDescriptorExternal.addFieldMapping("pippo", "PIPPO", cobolTypeDescriptor);
  46. commareaBeanMappingDescriptorExternal.setBeanClass(ExternalBean.class);
  47. // inizializzazione del CommareaBeanMappingDescriptor Internal
  48. CommareaBeanMappingDescriptor commareaBeanMappingDescriptorInternal = new CommareaBeanMappingDescriptor();
  49. commareaBeanMappingDescriptorInternal.addFieldMapping("pluto", "PLUTO", cobolTypeDescriptor);
  50. commareaBeanMappingDescriptorInternal.setBeanClass(InternalBean.class);
  51. // creo il field descriptor per l'internal mapping descriptor
  52. CobolTypeDescriptor cobolTypeDescriptorInternal = new CobolTypeDescriptor();
  53. cobolTypeDescriptorInternal.setType(CobolType.NESTED_COMMAREA);
  54. cobolTypeDescriptorInternal.setNestedCommarea(commareaBeanMappingDescriptorInternal);
  55. commareaBeanMappingDescriptorExternal.addFieldMapping("nested", "NESTED", cobolTypeDescriptorInternal);
  56. //inizializzazione CommareaFormatter
  57. CommareaFormatter commareaFormatter=new CommareaFormatter();
  58. //inizializzazione bean
  59. InternalBean internalBean=new InternalBean();
  60. internalBean.setPluto("pluto");
  61. ExternalBean externalBean=new ExternalBean();
  62. externalBean.setNested(internalBean);
  63. externalBean.setPippo("pippo");
  64. //inizializzazione del service context
  65. ServiceContext serviceContext=new ServiceContext();
  66. serviceContext.setInputMappingDescriptor(commareaBeanMappingDescriptorExternal);
  67. serviceContext.setOutputMappingDescriptor(commareaBeanMappingDescriptorExternal);
  68. serviceContext.setInputBean(externalBean);
  69. // conversione in input
  70. long millis1=System.currentTimeMillis();
  71. commareaFormatter.mapInputBeanToInputMessage(serviceContext);
  72. Object inputMessage=serviceContext.getInputMessage();
  73. long millis2=System.currentTimeMillis();
  74. log.debug("buffer dopo il format in esadecimale: ["+HexDump.toHex((byte[])inputMessage)+"]");
  75. log.debug("conversion time1="+(millis2-millis1)+" millis");
  76. serviceContext.setOutputMessage(inputMessage);
  77. //conversione in output
  78. millis1=System.currentTimeMillis();
  79. commareaFormatter.mapOutputMessageToOutputBean(serviceContext);
  80. Object outputBean=serviceContext.getOutputBean();
  81. millis2=System.currentTimeMillis();
  82. log.debug("bean ottenuto: ["+outputBean+"]");
  83. log.debug("conversion time2="+(millis2-millis1)+" millis");
  84. assertEquals("oggetti non uguali dopo la doppia conversione",externalBean,outputBean);
  85. } catch (Exception e) {
  86. e.printStackTrace();
  87. fail(e.getMessage());
  88. }
  89. }
  90. public static class InternalBean {
  91. private String pluto;
  92. public String getPluto() {
  93. return pluto;
  94. }
  95. public void setPluto(String pluto) {
  96. this.pluto = pluto;
  97. }
  98. public String toString() {
  99. return ReflectionToStringBuilder.toString(this);
  100. }
  101. public boolean equals(Object obj) {
  102. return EqualsBuilder.reflectionEquals(this, obj);
  103. }
  104. public int hashCode() {
  105. return HashCodeBuilder.reflectionHashCode(this);
  106. }
  107. }
  108. public static class ExternalBean {
  109. private String pippo;
  110. private InternalBean nested;
  111. public InternalBean getNested() {
  112. return nested;
  113. }
  114. public void setNested(InternalBean nested) {
  115. this.nested = nested;
  116. }
  117. public String getPippo() {
  118. return pippo;
  119. }
  120. public void setPippo(String pippo) {
  121. this.pippo = pippo;
  122. }
  123. public String toString() {
  124. return ReflectionToStringBuilder.toString(this);
  125. }
  126. public boolean equals(Object obj) {
  127. return EqualsBuilder.reflectionEquals(this, obj);
  128. }
  129. public int hashCode() {
  130. return HashCodeBuilder.reflectionHashCode(this);
  131. }
  132. }
  133. }