/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the Common Development
* and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at
* src/com/vodafone360/people/VODAFONE.LICENSE.txt or
* http://github.com/360/360-Engine-for-Android
* See the License for the specific language governing permissions and
* limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each file and
* include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt.
* If applicable, add the following below this CDDL HEADER, with the fields
* enclosed by brackets "[]" replaced with your own identifying information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
* Copyright 2010 Vodafone Sales & Services Ltd. All rights reserved.
* Use is subject to license terms.
*/
package com.vodafone360.people.service.utils.hessian;
import java.io.IOException;
import java.io.InputStream;
import com.vodafone360.people.utils.CloseUtils;
public class HessianUtils {
private static final int MAX_SIZE = 1200;
public static String getInHessian(InputStream is, boolean isRequest) throws IOException {
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer();
int readBytes = 0;
int tag = 0;
try {
while (((tag = is.read()) != -1) && (readBytes++ < MAX_SIZE)) {
char hessChar = ((char)tag);
if (((hessChar >= 'a') && (hessChar <= 'z'))
|| ((hessChar >= 'A') && (hessChar <= 'Z'))
|| ((hessChar >= '0') && (hessChar <= '9'))) {
sb1.append(" " + hessChar + " ");
} else {
sb1.append(" . ");
}
if (tag < 10) {
sb2.append(" " + tag + " ");
} else if (tag < 100) {
sb2.append("" + tag + " ");
} else {
sb2.append("" + tag + " ");
}
}
} finally {
CloseUtils.close(is);
}
char preChar = ((isRequest) ? '>' : '<');
return "\n " + preChar + " " + sb1.toString() + "\n " + preChar + " "
+ sb2.toString();
}
}