JABBuffer.java
上传用户:xfwatch
上传日期:2020-12-14
资源大小:872k
文件大小:5k
源码类别:

中间件编程

开发平台:

Java

  1. /*
  2.  * JBoss, Home of Professional Open Source
  3.  * Copyright 2008, Red Hat, Inc., and others contributors as indicated
  4.  * by the @authors tag. All rights reserved.
  5.  * See the copyright.txt in the distribution for a
  6.  * full listing of individual contributors.
  7.  * This copyrighted material is made available to anyone wishing to use,
  8.  * modify, copy, or redistribute it subject to the terms and conditions
  9.  * of the GNU Lesser General Public License, v. 2.1.
  10.  * This program is distributed in the hope that it will be useful, but WITHOUT A
  11.  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  12.  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  13.  * You should have received a copy of the GNU Lesser General Public License,
  14.  * v.2.1 along with this distribution; if not, write to the Free Software
  15.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  16.  * MA  02110-1301, USA.
  17.  */
  18. package org.jboss.blacktie.jatmibroker.jab.factory;
  19. import java.util.HashMap;
  20. import java.util.Map;
  21. import java.util.Vector;
  22. /**
  23.  * The JABBuffer is a map of parameters that are passed to/returned from a
  24.  * remote XATMI service.
  25.  * 
  26.  * @see JABResponse
  27.  */
  28. public class JABBuffer {
  29. /**
  30.  * Any array data types are stored here
  31.  */
  32. private Map<String, Vector<Object>> arrays = new HashMap<String, Vector<Object>>();
  33. /**
  34.  * Any individual items are stored here
  35.  */
  36. private Map<String, Object> items = new HashMap<String, Object>();
  37. /**
  38.  * Get the size of the data
  39.  * 
  40.  * @param key
  41.  *            The type of the data to look for
  42.  * @return The size
  43.  */
  44. public synchronized int size(String key) {
  45. int toReturn = 0;
  46. Vector<Object> vector = arrays.get(key);
  47. if (vector != null) {
  48. toReturn = vector.size();
  49. }
  50. return toReturn;
  51. }
  52. /**
  53.  * Get the value of a certain index of the data
  54.  * 
  55.  * @param key
  56.  *            The type of the data
  57.  * @param index
  58.  *            The index to check for
  59.  * @return The value
  60.  */
  61. public synchronized Object getValue(String key, int index) {
  62. Object toReturn = null;
  63. Vector<Object> vector = arrays.get(key);
  64. if (vector != null) {
  65. toReturn = vector.get(index);
  66. }
  67. return toReturn;
  68. }
  69. /**
  70.  * Get the value of a certain type of data
  71.  * 
  72.  * @param key
  73.  *            The type of the data
  74.  * @return The value
  75.  */
  76. public synchronized Object getValue(String key) {
  77. return items.get(key);
  78. }
  79. /**
  80.  * Set the value of the data at a certain index
  81.  * 
  82.  * @param key
  83.  *            The key to change
  84.  * @param index
  85.  *            The index to alter
  86.  * @param value
  87.  *            The value to set it to
  88.  */
  89. public synchronized void setValue(String key, int index, Object value) {
  90. Vector<Object> vector = arrays.get(key);
  91. if (vector == null) {
  92. vector = new Vector<Object>();
  93. }
  94. if (vector.size() < index) {
  95. vector.setSize(index);
  96. }
  97. vector.set(index, value);
  98. }
  99. /**
  100.  * Set the value of an item
  101.  * 
  102.  * @param key
  103.  *            The item name
  104.  * @param value
  105.  *            The value to use
  106.  */
  107. public synchronized void setValue(String key, Object value) {
  108. items.put(key, value);
  109. }
  110. void setArrayValue(String key, byte[] array) {
  111. for (int i = 0; i < array.length; i++) {
  112. setValue(key, i, array[i]);
  113. }
  114. }
  115. void setArrayValue(String key, short[] array) {
  116. for (int i = 0; i < array.length; i++) {
  117. setValue(key, i, array[i]);
  118. }
  119. }
  120. void setArrayValue(String key, int[] array) {
  121. for (int i = 0; i < array.length; i++) {
  122. setValue(key, i, array[i]);
  123. }
  124. }
  125. void setArrayValue(String key, double[] array) {
  126. for (int i = 0; i < array.length; i++) {
  127. setValue(key, i, array[i]);
  128. }
  129. }
  130. void setArrayValue(String key, float[] array) {
  131. for (int i = 0; i < array.length; i++) {
  132. setValue(key, i, array[i]);
  133. }
  134. }
  135. byte[] getByteArray(String key) {
  136. byte[] toReturn = new byte[size(key)];
  137. for (int i = 0; i < toReturn.length; i++) {
  138. toReturn[i] = (Byte) getValue(key, i);
  139. }
  140. return toReturn;
  141. }
  142. short[] getShortArray(String key) {
  143. short[] toReturn = new short[size(key)];
  144. for (int i = 0; i < toReturn.length; i++) {
  145. toReturn[i] = (Short) getValue(key, i);
  146. }
  147. return toReturn;
  148. }
  149. int[] getIntArray(String key) {
  150. int[] toReturn = new int[size(key)];
  151. for (int i = 0; i < toReturn.length; i++) {
  152. toReturn[i] = (Integer) getValue(key, i);
  153. }
  154. return toReturn;
  155. }
  156. double[] getDoubleArray(String key) {
  157. double[] toReturn = new double[size(key)];
  158. for (int i = 0; i < toReturn.length; i++) {
  159. toReturn[i] = (Double) getValue(key, i);
  160. }
  161. return toReturn;
  162. }
  163. float[] getFloatArray(String key) {
  164. float[] toReturn = new float[size(key)];
  165. for (int i = 0; i < toReturn.length; i++) {
  166. toReturn[i] = (Float) getValue(key, i);
  167. }
  168. return toReturn;
  169. }
  170. }