public Map readFieldsFromStream() { final Map fields = new HashMap(); reader.moveDown(); if (reader.getNodeName().equals(ELEMENT_FIELDS)) { while (reader.hasMoreChildren()) { reader.moveDown(); if (!reader.getNodeName().equals(ELEMENT_FIELD)) { throw new ConversionException("Expected <" + ELEMENT_FIELD + "/> element inside <" + ELEMENT_FIELD + "/>"); String name = reader.getAttribute(ATTRIBUTE_NAME); Class type = mapper.realClass(reader.getAttribute(ATTRIBUTE_CLASS)); Object value = context.convertAnother(result, type); fields.put(name, value); reader.moveUp(); while (reader.hasMoreChildren()) { reader.moveDown(); String name = mapper.realMember(currentType[0], reader.getNodeName()); if (mapper.shouldSerializeMember(currentType[0], name)) { String classAttribute = HierarchicalStreams.readClassAttribute(reader, mapper); Class type; Object value = context.convertAnother(result, type); fields.put(name, value); throw new ConversionException("Expected <" + ELEMENT_FIELDS + "/> or <" + ELEMENT_DEFAULT + "/> element when calling ObjectInputStream.readFields()");
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { final Map attributes; if (reader.hasMoreChildren()) { reader.moveDown(); if (!reader.getNodeName().equals("attributes")) { String classAlias = mapper.aliasForSystemAttribute("class"); attributes = new HashMap(); do { reader.moveDown(); Class type = mapper.realClass(reader.getAttribute(classAlias)); TextAttribute attribute = (TextAttribute)textAttributeConverter.fromString(reader.getNodeName()); Object value = type == Mapper.Null.class ? null : context.convertAnother(null, type); attributes.put(attribute, value); reader.moveUp(); } else { attributes = (Map)context.convertAnother(null, Map.class); reader.moveUp(); // out of </attributes> if (context.getRequiredType() == FontUIResource.class) { return new FontUIResource(font); } else {
protected Object instantiateNewInstance(HierarchicalStreamReader reader, UnmarshallingContext context) { String attributeName = mapper.aliasForSystemAttribute("resolves-to"); String readResolveValue = attributeName == null ? null : reader .getAttribute(attributeName); Object currentObject = context.currentObject(); if (currentObject != null) { return currentObject; } else if (readResolveValue != null) { return reflectionProvider.newInstance(mapper.realClass(readResolveValue)); } else { return reflectionProvider.newInstance(context.getRequiredType()); } }
protected Object instantiateNewInstance(HierarchicalStreamReader reader, UnmarshallingContext context) { String readResolveValue = reader.getAttribute(mapper.aliasForAttribute("resolves-to")); Class type = readResolveValue != null ? mapper.realClass(readResolveValue) : context.getRequiredType(); Object currentObject = context.currentObject(); if (currentObject != null) { if (type.isInstance(currentObject)) return currentObject; } return reflectionProvider.newInstance(type); }
public Object unmarshal(final HierarchicalStreamReader reader, final UnmarshallingContext context) { TreeStringBuilder builder = (TreeStringBuilder)context.get(TreeStringBuilder.class); if (builder == null) { context.put(TreeStringBuilder.class, builder = new TreeStringBuilder()); // dedup at the end final TreeStringBuilder _builder = builder; context.addCompletionCallback(new Runnable() { public void run() { _builder.dedup(); } }, 0); } return builder.intern(reader.getValue()); }
@Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { Application app = new Application(); while (reader.hasMoreChildren()) { reader.moveDown(); String nodeName = reader.getNodeName(); if (ELEM_NAME.equals(nodeName)) { app.setName(reader.getValue()); } else if (NODE_INSTANCE.equals(nodeName)) { app.addInstance((InstanceInfo) context.convertAnother(app, InstanceInfo.class)); } reader.moveUp(); } return app; } }
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { reader.moveDown(); final SortedSet sortedSet; final TreeSet result; if (reader.getNodeName().equals("comparator")) { String comparatorClass = reader.getAttribute("class"); Comparator comparator = (Comparator) context.convertAnother(null, mapper().realClass(comparatorClass)); sortedSet = new PresortedSet(comparator); result = new TreeSet(comparator); } else if (reader.getNodeName().equals("no-comparator")) { sortedSet = new PresortedSet(); result = new TreeSet(); } else { throw new ConversionException("TreeSet does not contain <comparator> element"); } reader.moveUp(); super.populateCollection(reader, context, sortedSet); result.addAll(sortedSet); // internal optimization will not call comparator return result; }
public Object doUnmarshal(final Object result, final HierarchicalStreamReader reader, final UnmarshallingContext context) { final SeenFields seenFields = new SeenFields(); Iterator it = reader.getAttributeNames(); if (result instanceof Saveable && context.get("Saveable") == null) context.put("Saveable", result); Object value = converter.fromString(reader.getAttribute(attrAlias)); if (type.isPrimitive()) { type = Primitives.box(type); throw new ConversionException("Cannot convert type " + value.getClass().getName() + " to type " + type.getName()); reflectionProvider.writeField(result, attrName, value, classDefiningField); seenFields.add(classDefiningField, attrName); while (reader.hasMoreChildren()) { reader.moveDown(); final Object value; if (fieldExistsInClass) { Field field = reflectionProvider.getField(result.getClass(),fieldName); value = unmarshalField(context, result, type, field); value = context.convertAnother(result, type); if (context.get("ReadError") != null && context.get("Saveable") == result) { OldDataMonitor.report((Saveable)result, (ArrayList<Throwable>)context.get("ReadError")); context.put("ReadError", null);
InvocationHandler handler = null; Class handlerType = null; while (reader.hasMoreChildren()) { reader.moveDown(); String elementName = reader.getNodeName(); if (elementName.equals("interface")) { interfaces.add(mapper.realClass(reader.getValue())); } else if (elementName.equals("handler")) { String attributeName = mapper.aliasForSystemAttribute("class"); if (attributeName != null) { handlerType = mapper.realClass(reader.getAttribute(attributeName)); break; throw new ConversionException("No InvocationHandler specified for dynamic proxy"); proxy = Proxy.newProxyInstance(classLoaderReference.getReference(), interfacesAsArray, DUMMY); handler = (InvocationHandler) context.convertAnother(proxy, handlerType); reader.moveUp(); if (HANDLER != null) {
Iterator it = reader.getAttributeNames(); while (it.hasNext()) { String attrAlias = (String)it.next(); reflectionProvider.writeField(result, attrName, value, classDefiningField); while (reader.hasMoreChildren()) { if (implicitCollectionMapping == null) { field = reflectionProvider.getFieldOrNull(fieldDeclaringClass, fieldName); if (field == null) { final Object key = context.convertAnother( final Object v = context.convertAnother( } else { value = context.convertAnother(result, type); : originalNodeName); value = context.convertAnother(result, type);
public void defaultReadObject() { if (serializationMembers.getSerializablePersistentFields(currentType[0]) != null) { readFieldsFromStream(); return; } if (!reader.hasMoreChildren()) { return; } reader.moveDown(); if (!reader.getNodeName().equals(ELEMENT_DEFAULT)) { throw new ConversionException("Expected <" + ELEMENT_DEFAULT + "/> element in readObject() stream"); } while (reader.hasMoreChildren()) { reader.moveDown(); String fieldName = mapper.realMember(currentType[0], reader.getNodeName()); if (mapper.shouldSerializeMember(currentType[0], fieldName)) { String classAttribute = HierarchicalStreams.readClassAttribute(reader, mapper); final Class type; if (classAttribute != null) { type = mapper.realClass(classAttribute); } else { type = mapper.defaultImplementationOf(reflectionProvider.getFieldType(result, fieldName, currentType[0])); } Object value = context.convertAnother(result, type); reflectionProvider.writeField(result, fieldName, value, currentType[0]); } reader.moveUp(); } reader.moveUp(); }
@Override public Object unmarshal(final HierarchicalStreamReader reader, final UnmarshallingContext context) { final boolean oldFormat = "custom".equals(reader.getAttribute(mapper.aliasForSystemAttribute("serialization"))); if (oldFormat) { reader.moveDown(); reader.moveDown(); final String name = oldFormat ? reader.getNodeName() : mapper.realMember(WeekFields.class, reader.getNodeName()); if ("minimalDays".equals(name)) { minimalDays = Integer.parseInt(reader.getValue()); } else if ("firstDayOfWeek".equals(name)) { firstDayOfWeek = (DayOfWeek)context.convertAnother(null, DayOfWeek.class); } else { throw new UnknownFieldException(WeekFields.class.getName(), name);
String name = null; Class type = null; while (reader.hasMoreChildren()) { reader.moveDown(); final String elementName = reader.getNodeName(); if (elementName.equals("mimeType")) { mimeType = reader.getValue(); name = reader.getValue(); } else if (elementName.equals("representationClass")) { type = (Class)context.convertAnother(null, Class.class); } else { final ConversionException exception = new ConversionException("Unknown child element"); exception.add("element", reader.getNodeName()); throw exception; throw new ConversionException(ex); } catch (final NullPointerException ex) { throw new ConversionException(ex);
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { try { boolean isMethodNotConstructor = context.getRequiredType().equals(Method.class); reader.moveDown(); String declaringClassName = reader.getValue(); Class declaringClass = (Class)javaClassConverter.fromString(declaringClassName); reader.moveUp(); throw new ConversionException(e);
public Object unmarshal(final HierarchicalStreamReader reader, final UnmarshallingContext context) { final Object result = reflectionProvider.newInstance(context.getRequiredType()); final Class resultType = result.getClass(); final Iterator it = reader.getAttributeNames(); systemAttributes.add(mapper.aliasForSystemAttribute("class")); final Class declaringClass = field.getDeclaringClass(); ConverterMatcher converter = UseAttributeForEnumMapper.isEnum(type) ? (ConverterMatcher)enumMapper.getConverterFromItemType(null, type, null) .getAttribute(attrName)); if (type.isPrimitive()) { type = Primitives.box(type); reflectionProvider.writeField(result, fieldName, value, declaringClass); if (!seenFields.add(new FastField(declaringClass, fieldName))) { throw new DuplicateFieldException(fieldName exception.add("element", reader.getNodeName()); exception.add("field", fieldName); exception.add("target type", context.getRequiredType().getName()); throw exception; final Object value = context.convertAnother(
public Object unmarshal(final HierarchicalStreamReader reader, final UnmarshallingContext context) { final Object result = instantiateNewInstance(context); final Set seenProperties = new HashSet() { public boolean add(Object e) { if (!super.add(e)) { throw new DuplicatePropertyException(((FastField)e).getName()); } return true; } }; Class resultType = result.getClass(); while (reader.hasMoreChildren()) { reader.moveDown(); String propertyName = mapper.realMember(resultType, reader.getNodeName()); if (mapper.shouldSerializeMember(resultType, propertyName)) { boolean propertyExistsInClass = beanProvider.propertyDefinedInClass(propertyName, resultType); if (propertyExistsInClass) { Class type = determineType(reader, result, propertyName); Object value = context.convertAnother(result, type); beanProvider.writeProperty(result, propertyName, value); seenProperties.add(new FastField(resultType, propertyName)); } else if (!mapper.isIgnoredElement(propertyName)) { throw new MissingFieldException(resultType.getName(), propertyName); } } reader.moveUp(); } return result; }
public Object unmarshal(final HierarchicalStreamReader reader, final UnmarshallingContext context) { final List list = new ArrayList(); while (reader.hasMoreChildren()) { reader.moveDown(); final Object item; final String className = HierarchicalStreams.readClassAttribute(reader, mapper); final Class itemType = className == null ? arrayType.getComponentType() : mapper.realClass(className); if (Mapper.Null.class.equals(itemType)) { item = null; } else { item = context.convertAnother(null, itemType); } list.add(item); reader.moveUp(); } final Object array = Array.newInstance(arrayType.getComponentType(), list.size()); for (int i = 0; i < list.size(); ++i) { Array.set(array, i, list.get(i)); } return array; }
@Override public Object unmarshal(final HierarchicalStreamReader reader, final UnmarshallingContext context) { reader.moveDown(); final ZoneId zone = (ZoneId)context.convertAnother(null, ZoneId.class); reader.moveUp(); return Clock.system(zone); } }
private void readCallback(HierarchicalStreamReader reader, UnmarshallingContext context, List callbacksToEnhance, List callbacks) { Callback callback = (Callback)context.convertAnother(null, mapper.realClass(reader .getNodeName())); callbacks.add(callback); if (callback == null) { callbacksToEnhance.add(NoOp.INSTANCE); } else { callbacksToEnhance.add(callback); } }