public String convertArrayToString(Object[] sourceObject, QName schemaType) throws ConversionException { StringBuilder returnStringBuilder = new StringBuilder(); for (int i = 0, listSize = sourceObject.length; i < listSize; i++) { Object next = sourceObject[i]; if (i > 0) { returnStringBuilder.append(' '); } returnStringBuilder.append((String)convertObject(next, String.class, schemaType)); } return returnStringBuilder.toString(); }
public ConversionManager getConversionManager() { // Lazy init for serialization. if (conversionManager == null) { //Clone the default to allow customers to easily override the conversion manager conversionManager = (XMLConversionManager)XMLConversionManager.getDefaultXMLManager().clone(); } return conversionManager; }
public static XMLConversionManager getDefaultXMLManager() { if (defaultXMLManager == null) { defaultXMLManager = new XMLConversionManager(); } return defaultXMLManager; }
public Calendar convertStringToCalendar(String sourceString, QName schemaTypeQName) { XMLGregorianCalendar xmlGregorianCalender = convertStringToXMLGregorianCalendar(sourceString, schemaTypeQName); if(xmlGregorianCalender == null) { return null; } return toCalendar(xmlGregorianCalender); }
protected java.sql.Date convertObjectToSQLDate(Object sourceObject, QName schemaTypeQName) { if (sourceObject instanceof String) { Date date = convertStringToDate((String) sourceObject, schemaTypeQName); return new java.sql.Date((date.getTime() / 1000) * 1000); } return convertObjectToDate(sourceObject); }
String typeStr = param.getType(); XMLConversionManager mgr = new XMLConversionManager(); mgr.setLoader(helper.getClassLoader()); Class typeClass = mgr.convertClassNameToClass(typeStr); Object parameterValue = mgr.convertObject(valueStr, typeClass); parameters.add(parameterValue); parameterTypes.add(typeClass);
private void addChoiceElementMapping(XMLField xmlField, String className){ if (xmlField.getLastXPathFragment().nameIsText()) { XMLDirectMapping xmlMapping = new XMLDirectMapping(); xmlMapping.setAttributeAccessor(temporaryAccessor); Class theClass = XMLConversionManager.getDefaultXMLManager().convertClassNameToClass(className); xmlMapping.setAttributeClassification(theClass); xmlMapping.setField(xmlField); this.choiceElementMappings.put(xmlField, xmlMapping); } else { XMLCompositeObjectMapping xmlMapping = new XMLCompositeObjectMapping(); xmlMapping.setAttributeAccessor(temporaryAccessor); if(!className.equals("java.lang.Object")){ xmlMapping.setReferenceClassName(className); } xmlMapping.setField(xmlField); this.choiceElementMappings.put(xmlField, xmlMapping); } }
/** * Return a Map of user-defined properties. The List of properties (from * xml) will be merged with the given Map (from annotations). In the * case of a conflict, xml will win. * * Note that this intended to be used when processing type-level user * properties, as at the property-level, xml completely replaces any * properties set via annotation. * * Typically the key will be a String (property name) and the value a * String or some other simple type that was converted by * ConversionManager, i.e. numerical, boolean, temporal. * * @param propList * @return */ private Map mergeUserPropertyMap(List<XmlProperty> propList, Map existingMap) { Map propMap = existingMap; for (XmlProperty prop : propList) { Object pvalue = prop.getValue(); if (prop.isSetValueType()) { pvalue = XMLConversionManager.getDefaultXMLManager().convertObject( prop.getValue(), XMLConversionManager.getDefaultXMLManager().convertClassNameToClass(prop.getValueType())); } propMap.put(prop.getName(), pvalue); } return propMap; }
private String stringFromSQLTime(Time sourceTime) { XMLGregorianCalendar xgc = getDatatypeFactory().newXMLGregorianCalendar(); Calendar cal = Calendar.getInstance(getTimeZone()); cal.setTime(sourceTime); xgc.setHour(cal.get(Calendar.HOUR_OF_DAY)); xgc.setMinute(cal.get(Calendar.MINUTE)); xgc.setSecond(cal.get(Calendar.SECOND)); String string= xgc.toXMLFormat(); string = appendMillis(string, sourceTime.getTime()); return appendTimeZone(string, sourceTime); }
private Object convertToSimpleTypeIfPresent(Object objectToAdd, AbstractRecord nestedRow, AbstractSession executionSession){ String stringValue = null; Element theElement = ((Element) ((DOMRecord)nestedRow).getDOM()); Node textchild = theElement.getFirstChild(); if ((textchild != null) && (textchild.getNodeType() == Node.TEXT_NODE)) { stringValue = ((Text) textchild).getNodeValue(); if(stringValue != null && getKeepAsElementPolicy() != UnmarshalKeepAsElementPolicy.KEEP_UNKNOWN_AS_ELEMENT && getKeepAsElementPolicy()!=UnmarshalKeepAsElementPolicy.KEEP_ALL_AS_ELEMENT){ objectToAdd = stringValue; } } if ((stringValue == null) || stringValue.length() == 0 ) { return objectToAdd; } String type = theElement.getAttributeNS(XMLConstants.SCHEMA_INSTANCE_URL, XMLConstants.SCHEMA_TYPE_ATTRIBUTE); if ((null != type) && type.length() > 0) { XPathFragment typeFragment = new XPathFragment(type); String namespaceURI = ((DOMRecord)nestedRow).resolveNamespacePrefix(typeFragment.getPrefix()); typeFragment.setNamespaceURI(namespaceURI); QName schemaTypeQName = new QName(namespaceURI, typeFragment.getLocalName()); Class theClass = (Class) XMLConversionManager.getDefaultXMLTypes().get(schemaTypeQName); if (theClass != null) { objectToAdd = ((XMLConversionManager) executionSession.getDatasourcePlatform().getConversionManager()).convertObject(stringValue, theClass, schemaTypeQName); } } return objectToAdd; }
return toCalendar(getXMLConversionManager().convertStringToDuration(dateString), locale); XMLGregorianCalendar xgc = getXMLConversionManager().convertStringToXMLGregorianCalendar(dateString); Calendar cal; if (xgc.getTimezone() == DatatypeConstants.FIELD_UNDEFINED) { cal = xgc.toGregorianCalendar(getXMLConversionManager().getTimeZone(), locale, null); cal.clear(Calendar.ZONE_OFFSET); } else {
private Map<Object, Object> createUserPropertiesMap(XmlProperty[] properties) { Map<Object, Object> propMap = new HashMap<Object, Object>(); for (XmlProperty prop : properties) { Object pvalue = prop.value(); if (!(prop.valueType() == String.class)) { pvalue = XMLConversionManager.getDefaultXMLManager().convertObject(prop.value(), prop.valueType()); } propMap.put(prop.name(), pvalue); } return propMap; }
/** * The platform holds its own instance of conversion manager to allow customization. */ public ConversionManager getConversionManager() { // For XML we need an XMLConversionManager instance if (isDOMRecordSupported()) { // Lazy init for serialization. if (xmlConversionManager == null) { // Clone the default to allow customers to easily override the conversion manager xmlConversionManager = (XMLConversionManager) XMLConversionManager.getDefaultXMLManager().clone(); xmlConversionManager.setLoader(super.getConversionManager().getLoader()); } return xmlConversionManager; } // For non-XML, return the ConversionManager instance from DatasourcePlatform return super.getConversionManager(); }
/** * This method returns a dateTime string representing a given * java.util.Date. * * BC dates (sourceDate.getTime() < YEAR_ONE_AD_TIME) are handled * as follows: '2007 BC' --> '-2006 AD' * * @param sourceDate * @return */ private String stringFromDate(java.util.Date sourceDate) { GregorianCalendar cal = new GregorianCalendar(getTimeZone()); cal.setTime(sourceDate); XMLGregorianCalendar xgc = getDatatypeFactory().newXMLGregorianCalendar(cal); String string = xgc.toXMLFormat(); string = truncateMillis(string); return string; }
public java.util.Date convertStringToDate(String sourceString, QName schemaType) { XMLGregorianCalendar xmlGregorianCalender = convertStringToXMLGregorianCalendar(sourceString, schemaType); if (schemaType == null) { schemaType = xmlGregorianCalender.getXMLSchemaType(); } XMLGregorianCalendar defaults = getDatatypeFactory().newXMLGregorianCalendar(); defaults.setTimezone(getTimeZone().getRawOffset()/60000); GregorianCalendar cal; if(xmlGregorianCalender.getTimezone() == DatatypeConstants.FIELD_UNDEFINED){ cal = xmlGregorianCalender.toGregorianCalendar(getTimeZone(), null, null); }else{ cal = xmlGregorianCalender.toGregorianCalendar(); } cal.setGregorianChange(new Date(Long.MAX_VALUE)); Date returnDate= cal.getTime(); return returnDate; }
/** * @since EclipseLink 2.6.0 * @param javaType The type you want to find a corresponding schema type for. * @return the schema type for the Java class. */ @Override public QName schemaType(Class<?> javaType) { return (QName) getDefaultJavaTypes().get(javaType); }
private String stringFromSQLTime(Time sourceTime) { XMLGregorianCalendar xgc = getDatatypeFactory().newXMLGregorianCalendar(); GregorianCalendar cal = new GregorianCalendar(getTimeZone()); cal.setGregorianChange(new Date(Long.MIN_VALUE)); cal.setTime(sourceTime); xgc.setHour(cal.get(Calendar.HOUR_OF_DAY)); xgc.setMinute(cal.get(Calendar.MINUTE)); xgc.setSecond(cal.get(Calendar.SECOND)); String string= xgc.toXMLFormat(); return appendTimeZone(string); }
/** * INTERNAL * Return the class for a given qualified XML Schema type * @param qname The qualified name of the XML Schema type to use as a key in the lookup * @return The class corresponding to the specified schema type, if no corresponding match found returns null */ public Class getJavaClass(QName qname) { return getJavaClass(qname, XMLConversionManager.getDefaultXMLManager()); }
private String stringFromSQLDate(java.sql.Date sourceDate) { XMLGregorianCalendar xgc = getDatatypeFactory().newXMLGregorianCalendar(); Calendar cal = Calendar.getInstance(getTimeZone()); cal.setTime(sourceDate); if(cal.get(Calendar.ERA) == GregorianCalendar.BC){ xgc.setYear(-cal.get(Calendar.YEAR)); }else{ xgc.setYear(cal.get(Calendar.YEAR)); } xgc.setMonth(cal.get(Calendar.MONTH)+1); xgc.setDay(cal.get(Calendar.DAY_OF_MONTH)); return xgc.toXMLFormat(); }
/** * Ensures that XSD dateTimes will always be unmarshalled as XMLGregorianCalendars, and never * as GregorianCalendars. CALENDAR entries are removed from the default XMLConversionManager, * and replaced with XML_GREGORIAN_CALENDAR. */ private static void fixDateTimeConversion(DynamicJAXBContext ctx) { XMLConversionManager conversionManager = (XMLConversionManager) ctx.getXMLContext().getSession().getDatasourcePlatform().getConversionManager(); Map defaultXmlTypes = conversionManager.getDefaultXMLTypes(); defaultXmlTypes.remove(Constants.DATE_TIME_QNAME); defaultXmlTypes.put(Constants.DATE_TIME_QNAME, CoreClassConstants.XML_GREGORIAN_CALENDAR); Map defaultJavaTypes = conversionManager.getDefaultJavaTypes(); defaultJavaTypes.remove(CoreClassConstants.CALENDAR); defaultJavaTypes.put(CoreClassConstants.XML_GREGORIAN_CALENDAR, Constants.DATE_TIME_QNAME); }