converterutil.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 1,045 行 · 第 1/3 页
JAVA
1,045 行
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.axis2.databinding.utils;
import org.apache.axiom.attachments.ByteArrayDataSource;
import org.apache.axiom.attachments.utils.IOUtils;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.apache.axiom.om.util.Base64;
import org.apache.axiom.om.util.StAXUtils;
import org.apache.axis2.databinding.ADBBean;
import org.apache.axis2.databinding.i18n.ADBMessages;
import org.apache.axis2.databinding.types.*;
import javax.activation.DataHandler;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.TimeZone;
/**
* Converter methods to go from 1. simple type -> String 2. simple type -> Object 3. String ->
* simpletype 4. Object list -> array
*/
public class ConverterUtil {
private static final String POSITIVE_INFINITY = "INF";
private static final String NEGATIVE_INFINITY = "-INF";
/* String conversion methods */
public static String convertToString(int i) {
return Integer.toString(i);
}
public static String convertToString(float i) {
return Float.toString(i);
}
public static String convertToString(long i) {
return Long.toString(i);
}
public static String convertToString(double i) {
return Double.toString(i);
}
public static String convertToString(byte i) {
return Byte.toString(i);
}
public static String convertToString(char i) {
return Character.toString(i);
}
public static String convertToString(short i) {
return Short.toString(i);
}
public static String convertToString(boolean i) {
return Boolean.toString(i);
}
public static String convertToString(Date value) {
// lexical form of the date is '-'? yyyy '-' mm '-' dd zzzzzz?
// we have to serialize it with the GMT timezone
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'Z'");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
return simpleDateFormat.format(value);
}
public static String convertToString(Calendar value) {
// lexical form of the calendar is '-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
SimpleDateFormat zulu = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
zulu.setTimeZone(TimeZone.getTimeZone("GMT"));
// Sun JDK bug http://developer.java.sun.com/developer/bugParade/bugs/4229798.html
return zulu.format(value.getTime());
}
public static String convertToString(Day o) {
return o.toString();
}
public static String convertToString(YearMonth o) {
return o.toString();
}
public static String convertToString(Year o) {
return o.toString();
}
public static String convertToString(HexBinary o) {
return o.toString();
}
public static String convertToString(MonthDay o) {
return o.toString();
}
public static String convertToString(Time o) {
return o.toString();
}
public static String convertToString(Byte o) {
return o.toString();
}
public static String convertToString(BigInteger o) {
return o.toString();
}
public static String convertToString(Integer o) {
return o.toString();
}
public static String convertToString(Long o) {
return o.toString();
}
public static String convertToString(Short o) {
return o.toString();
}
public static String convertToString(UnsignedByte o) {
return o.toString();
}
public static String convertToString(UnsignedInt o) {
return o.toString();
}
public static String convertToString(UnsignedLong o) {
return o.toString();
}
public static String convertToString(QName o) {
if (o != null) {
return o.getLocalPart();
} else {
return "";
}
}
public static String convertToString(Object o) {
return o.toString();
}
public static String convertToString(Double o) {
return o.toString();
}
public static String convertToString(Duration o) {
return o.toString();
}
public static String convertToString(Float o) {
return o.toString();
}
public static String convertToString(Month o) {
return o.toString();
}
public static String convertToString(byte[] bytes) {
return Base64.encode(bytes);
}
public static String convertToString(javax.activation.DataHandler handler) {
return getStringFromDatahandler(handler);
}
/* ################################################################################ */
/* String to java type conversions
These methods have a special signature structure
<code>convertTo</code> followed by the schema type name
Say for int, convertToint(String) is the converter method
Not very elegant but it seems to be the only way!
*/
public static int convertToInt(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return Integer.parseInt(s);
}
public static BigDecimal convertToBigDecimal(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return new BigDecimal(s);
}
public static double convertToDouble(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
if (POSITIVE_INFINITY.equals(s)) {
return Double.POSITIVE_INFINITY;
} else if (NEGATIVE_INFINITY.equals(s)) {
return Double.NEGATIVE_INFINITY;
}
return Double.parseDouble(s);
}
public static BigDecimal convertToDecimal(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return new BigDecimal(s);
}
public static float convertToFloat(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
if (POSITIVE_INFINITY.equals(s)) {
return Float.POSITIVE_INFINITY;
} else if (NEGATIVE_INFINITY.equals(s)) {
return Float.NEGATIVE_INFINITY;
}
return Float.parseFloat(s);
}
public static String convertToString(String s) {
return s;
}
public static long convertToLong(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return Long.parseLong(s);
}
public static short convertToShort(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return Short.parseShort(s);
}
public static boolean convertToBoolean(String s) {
boolean returnValue = false;
if ((s != null) && (s.length() > 0)) {
if ("1".equals(s) || s.toLowerCase().equals("true")) {
returnValue = true;
} else if (!"0".equals(s) && !s.toLowerCase().equals("false")) {
throw new RuntimeException("in valid string -" + s + " for boolean value");
}
}
return returnValue;
}
public static String convertToAnySimpleType(String s) {
return s;
}
public static OMElement convertToAnyType(String s) {
try {
XMLStreamReader r = StAXUtils.createXMLStreamReader(
new ByteArrayInputStream(s.getBytes()));
StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(), r);
return builder.getDocumentElement();
} catch (XMLStreamException e) {
return null;
}
}
public static YearMonth convertToGYearMonth(String s) {
return new YearMonth(s);
}
public static MonthDay convertToGMonthDay(String s) {
return new MonthDay(s);
}
public static Year convertToGYear(String s) {
return new Year(s);
}
public static Month convertToGMonth(String s) {
return new Month(s);
}
public static Day convertToGDay(String s) {
return new Day(s);
}
public static Duration convertToDuration(String s) {
return new Duration(s);
}
public static HexBinary convertToHexBinary(String s) {
return new HexBinary(s);
}
public static javax.activation.DataHandler convertToBase64Binary(String s) {
// reusing the byteArrayDataSource from the Axiom classes
ByteArrayDataSource byteArrayDataSource = new ByteArrayDataSource(
Base64.decode(s)
);
return new DataHandler(byteArrayDataSource);
}
public static javax.activation.DataHandler convertToDataHandler(String s) {
return convertToBase64Binary(s);
}
/**
* Converts a given string into a date. Code from Axis1 DateDeserializer.
*
* @param source
* @return Returns Date.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?