PageRenderTime 57ms CodeModel.GetById 34ms RepoModel.GetById 0ms app.codeStats 0ms

/hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/StringValueDeserializer.java

https://gitlab.com/zouxc/dubbo
Java | 130 lines | 61 code | 19 blank | 50 comment | 6 complexity | 5ef97e2855c8d5803b6bdd511704ced4 MD5 | raw file
  1. /*
  2. * Copyright (c) 2001-2004 Caucho Technology, Inc. All rights reserved.
  3. *
  4. * The Apache Software License, Version 1.1
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted provided that the following conditions
  8. * are met:
  9. *
  10. * 1. Redistributions of source code must retain the above copyright
  11. * notice, this list of conditions and the following disclaimer.
  12. *
  13. * 2. Redistributions in binary form must reproduce the above copyright
  14. * notice, this list of conditions and the following disclaimer in
  15. * the documentation and/or other materials provided with the
  16. * distribution.
  17. *
  18. * 3. The end-user documentation included with the redistribution, if
  19. * any, must include the following acknowlegement:
  20. * "This product includes software developed by the
  21. * Caucho Technology (http://www.caucho.com/)."
  22. * Alternately, this acknowlegement may appear in the software itself,
  23. * if and wherever such third-party acknowlegements normally appear.
  24. *
  25. * 4. The names "Hessian", "Resin", and "Caucho" must not be used to
  26. * endorse or promote products derived from this software without prior
  27. * written permission. For written permission, please contact
  28. * info@caucho.com.
  29. *
  30. * 5. Products derived from this software may not be called "Resin"
  31. * nor may "Resin" appear in their names without prior written
  32. * permission of Caucho Technology.
  33. *
  34. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  35. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  36. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  37. * DISCLAIMED. IN NO EVENT SHALL CAUCHO TECHNOLOGY OR ITS CONTRIBUTORS
  38. * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
  39. * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
  40. * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
  41. * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  42. * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
  43. * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
  44. * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  45. *
  46. * @author Scott Ferguson
  47. */
  48. package com.alibaba.com.caucho.hessian.io;
  49. import java.io.IOException;
  50. import java.lang.reflect.Constructor;
  51. /**
  52. * Deserializing a string valued object
  53. */
  54. public class StringValueDeserializer extends AbstractDeserializer {
  55. private Class _cl;
  56. private Constructor _constructor;
  57. public StringValueDeserializer(Class cl)
  58. {
  59. try {
  60. _cl = cl;
  61. _constructor = cl.getConstructor(new Class[] { String.class });
  62. } catch (Exception e) {
  63. throw new RuntimeException(e);
  64. }
  65. }
  66. public Class getType()
  67. {
  68. return _cl;
  69. }
  70. public Object readMap(AbstractHessianInput in)
  71. throws IOException
  72. {
  73. String value = null;
  74. while (! in.isEnd()) {
  75. String key = in.readString();
  76. if (key.equals("value"))
  77. value = in.readString();
  78. else
  79. in.readObject();
  80. }
  81. in.readMapEnd();
  82. Object object = create(value);
  83. in.addRef(object);
  84. return object;
  85. }
  86. public Object readObject(AbstractHessianInput in, String []fieldNames)
  87. throws IOException
  88. {
  89. String value = null;
  90. for (int i = 0; i < fieldNames.length; i++) {
  91. if ("value".equals(fieldNames[i]))
  92. value = in.readString();
  93. else
  94. in.readObject();
  95. }
  96. Object object = create(value);
  97. in.addRef(object);
  98. return object;
  99. }
  100. private Object create(String value)
  101. throws IOException
  102. {
  103. if (value == null)
  104. throw new IOException(_cl.getName() + " expects name.");
  105. try {
  106. return _constructor.newInstance(new Object[] { value });
  107. } catch (Exception e) {
  108. throw new IOExceptionWrapper(e);
  109. }
  110. }
  111. }