@Override /* Parser */ public UrlEncodingParserSession createSession(ParserSessionArgs args) { return new UrlEncodingParserSession(this, args); }
@Override /* ReaderParserSession */ protected <K,V> Map<K,V> doParseIntoMap(ParserPipe pipe, Map<K,V> m, Type keyType, Type valueType) throws Exception { try (UonReader r = getUonReader(pipe, true)) { if (r.peekSkipWs() == '?') r.read(); m = parseIntoMap2(r, m, getClassMeta(Map.class, keyType, valueType), null); return m; } }
@Override /* ParserSession */ protected <T> T doParse(ParserPipe pipe, ClassMeta<T> type) throws Exception { try (UonReader r = getUonReader(pipe, true)) { return parseAnything(type, r, getOuter()); } }
eType = (ClassMeta<T>)object(); PojoSwap<T,Object> swap = (PojoSwap<T,Object>)eType.getPojoSwap(this); BuilderSwap<T,Object> builder = (BuilderSwap<T,Object>)eType.getBuilderSwap(this); parseIntoMap2(r, m, getClassMeta(Map.class, String.class, Object.class), outer); if (m.containsKey("_value")) o = m.get("_value"); else o = cast(m, null, eType); } else if (sType.isMap()) { Map m = (sType.canCreateNewInstance() ? (Map)sType.newInstance() : new ObjectMap(this)); o = parseIntoMap2(r, m, sType, m); } else if (builder != null) { BeanMap m = toBeanMap(builder.create(this, eType)); m = parseIntoBeanMap(r, m); o = m == null ? null : builder.build(this, m.getBean(), eType); } else if (sType.canCreateNewBean(outer)) { BeanMap m = newBeanMap(outer, sType.getInnerClass()); m = parseIntoBeanMap(r, m); o = m == null ? null : m.getBean(); } else if (sType.isCollection() || sType.isArray() || sType.isArgs()) { parseIntoMap2(r, m, sType, c2); c2.addAll(m.values()); if (sType.isArray()) parseIntoMap2(r, m, getClassMeta(Map.class, String.class, Object.class), outer); if (m.containsKey(getBeanTypePropertyName(eType))) o = cast(m, null, eType);
mark(); try { while (c != -1) { mark(); currAttr = parseAttrName(r, true); if (currAttr == null) // Value was '%00' return null; if (! currAttr.equals(getBeanTypePropertyName(m.getClassMeta()))) { BeanPropertyMeta pMeta = m.getPropertyMeta(currAttr); if (pMeta == null) { onUnknownProperty(currAttr, m); unmark(); } else { unmark(); setCurrentProperty(pMeta); if (cm.canCreateNewInstance()) pMeta.set(m, currAttr, cm.newInstance()); setCurrentProperty(null); state = S1; } else { if (! currAttr.equals(getBeanTypePropertyName(m.getClassMeta()))) { BeanPropertyMeta pMeta = m.getPropertyMeta(currAttr); if (pMeta == null) { onUnknownProperty(currAttr, m); unmark();
private <K,V> Map<K,V> parseIntoMap2(UonReader r, Map<K,V> m, ClassMeta<?> type, Object outer) throws Exception { ClassMeta<K> keyType = (ClassMeta<K>)(type.isArgs() || type.isCollectionOrArray() ? getClassMeta(Integer.class) : type.getKeyType()); return m; r.unread(); Object attr = parseAttr(r, true); currAttr = attr == null ? null : convertAttrToType(m, trim(attr.toString()), keyType); state = S2; c = 0; // Avoid isInEscape if c was '\' if (c == -1 || c == '\u0001') { ClassMeta<V> valueType = (ClassMeta<V>)(type.isArgs() ? type.getArg(argIndex++) : type.isCollectionOrArray() ? type.getElementType() : type.getValueType()); V value = convertAttrToType(m, "", valueType); m.put(currAttr, value); if (c == -1)
/** * Returns <jk>true</jk> if the specified bean property should be expanded as multiple key-value pairs. * * @param pMeta The metadata on the bean property. * @return <jk>true</jk> if the specified bean property should be expanded as multiple key-value pairs. */ public final boolean shouldUseExpandedParams(BeanPropertyMeta pMeta) { ClassMeta<?> cm = pMeta.getClassMeta().getSerializedClassMeta(this); if (cm.isCollectionOrArray()) { if (isExpandedParams()) return true; if (pMeta.getBeanMeta().getClassMeta().getExtendedMeta(UrlEncodingClassMeta.class).isExpandedParams()) return true; } return false; }
eType = (ClassMeta<T>)object(); PojoSwap<T,Object> swap = (PojoSwap<T,Object>)eType.getPojoSwap(this); BuilderSwap<T,Object> builder = (BuilderSwap<T,Object>)eType.getBuilderSwap(this); parseIntoMap2(r, m, getClassMeta(Map.class, String.class, Object.class), outer); if (m.containsKey("_value")) o = m.get("_value"); else o = cast(m, null, eType); } else if (sType.isMap()) { Map m = (sType.canCreateNewInstance() ? (Map)sType.newInstance() : new ObjectMap(this)); o = parseIntoMap2(r, m, sType, m); } else if (builder != null) { BeanMap m = toBeanMap(builder.create(this, eType)); m = parseIntoBeanMap(r, m); o = m == null ? null : builder.build(this, m.getBean(), eType); } else if (sType.canCreateNewBean(outer)) { BeanMap m = newBeanMap(outer, sType.getInnerClass()); m = parseIntoBeanMap(r, m); o = m == null ? null : m.getBean(); } else if (sType.isCollection() || sType.isArray() || sType.isArgs()) { parseIntoMap2(r, m, sType, c2); c2.addAll(m.values()); if (sType.isArray()) parseIntoMap2(r, m, getClassMeta(Map.class, String.class, Object.class), outer); if (m.containsKey(getBeanTypePropertyName(eType))) o = cast(m, null, eType);
mark(); try { while (c != -1) { mark(); currAttr = parseAttrName(r, true); if (currAttr == null) // Value was '%00' return null; if (! currAttr.equals(getBeanTypePropertyName(m.getClassMeta()))) { BeanPropertyMeta pMeta = m.getPropertyMeta(currAttr); if (pMeta == null) { onUnknownProperty(currAttr, m); unmark(); } else { unmark(); setCurrentProperty(pMeta); if (cm.canCreateNewInstance()) pMeta.set(m, currAttr, cm.newInstance()); setCurrentProperty(null); state = S1; } else { if (! currAttr.equals(getBeanTypePropertyName(m.getClassMeta()))) { BeanPropertyMeta pMeta = m.getPropertyMeta(currAttr); if (pMeta == null) { onUnknownProperty(currAttr, m); unmark();
private <K,V> Map<K,V> parseIntoMap2(UonReader r, Map<K,V> m, ClassMeta<?> type, Object outer) throws Exception { ClassMeta<K> keyType = (ClassMeta<K>)(type.isArgs() || type.isCollectionOrArray() ? getClassMeta(Integer.class) : type.getKeyType()); return m; r.unread(); Object attr = parseAttr(r, true); currAttr = attr == null ? null : convertAttrToType(m, trim(attr.toString()), keyType); state = S2; c = 0; // Avoid isInEscape if c was '\' if (c == -1 || c == '\u0001') { ClassMeta<V> valueType = (ClassMeta<V>)(type.isArgs() ? type.getArg(argIndex++) : type.isCollectionOrArray() ? type.getElementType() : type.getValueType()); V value = convertAttrToType(m, "", valueType); m.put(currAttr, value); if (c == -1)
/** * Returns <jk>true</jk> if the specified bean property should be expanded as multiple key-value pairs. * * @param pMeta The metadata on the bean property. * @return <jk>true</jk> if the specified bean property should be expanded as multiple key-value pairs. */ public final boolean shouldUseExpandedParams(BeanPropertyMeta pMeta) { ClassMeta<?> cm = pMeta.getClassMeta().getSerializedClassMeta(this); if (cm.isCollectionOrArray()) { if (isExpandedParams()) return true; if (pMeta.getBeanMeta().getClassMeta().getExtendedMeta(UrlEncodingClassMeta.class).isExpandedParams()) return true; } return false; }
eType = (ClassMeta<T>)object(); PojoSwap<T,Object> swap = (PojoSwap<T,Object>)eType.getPojoSwap(this); BuilderSwap<T,Object> builder = (BuilderSwap<T,Object>)eType.getBuilderSwap(this); parseIntoMap2(r, m, getClassMeta(Map.class, String.class, Object.class), outer); if (m.containsKey("_value")) o = m.get("_value"); else o = cast(m, null, eType); } else if (sType.isMap()) { Map m = (sType.canCreateNewInstance() ? (Map)sType.newInstance() : new ObjectMap(this)); o = parseIntoMap2(r, m, sType, m); } else if (builder != null) { BeanMap m = toBeanMap(builder.create(this, eType)); m = parseIntoBeanMap(r, m); o = m == null ? null : builder.build(this, m.getBean(), eType); } else if (sType.canCreateNewBean(outer)) { BeanMap m = newBeanMap(outer, sType.getInnerClass()); m = parseIntoBeanMap(r, m); o = m == null ? null : m.getBean(); } else if (sType.isCollection() || sType.isArray() || sType.isArgs()) { parseIntoMap2(r, m, sType, c2); c2.addAll(m.values()); if (sType.isArray()) parseIntoMap2(r, m, getClassMeta(Map.class, String.class, Object.class), outer); if (m.containsKey(getBeanTypePropertyName(eType))) o = cast(m, null, eType);
mark(); try { while (c != -1) { mark(); currAttr = parseAttrName(r, true); if (currAttr == null) // Value was '%00' return null; if (! currAttr.equals(getBeanTypePropertyName(m.getClassMeta()))) { BeanPropertyMeta pMeta = m.getPropertyMeta(currAttr); if (pMeta == null) { onUnknownProperty(currAttr, m); unmark(); } else { unmark(); setCurrentProperty(pMeta); if (cm.canCreateNewInstance()) pMeta.set(m, currAttr, cm.newInstance()); setCurrentProperty(null); state = S1; } else { if (! currAttr.equals(getBeanTypePropertyName(m.getClassMeta()))) { BeanPropertyMeta pMeta = m.getPropertyMeta(currAttr); if (pMeta == null) { onUnknownProperty(currAttr, m); unmark();
private <K,V> Map<K,V> parseIntoMap2(UonReader r, Map<K,V> m, ClassMeta<?> type, Object outer) throws Exception { ClassMeta<K> keyType = (ClassMeta<K>)(type.isArgs() || type.isCollectionOrArray() ? getClassMeta(Integer.class) : type.getKeyType()); return m; r.unread(); Object attr = parseAttr(r, true); currAttr = attr == null ? null : convertAttrToType(m, trim(attr.toString()), keyType); state = S2; c = 0; // Avoid isInEscape if c was '\' if (c == -1 || c == '\u0001') { ClassMeta<V> valueType = (ClassMeta<V>)(type.isArgs() ? type.getArg(argIndex++) : type.isCollectionOrArray() ? type.getElementType() : type.getValueType()); V value = convertAttrToType(m, "", valueType); m.put(currAttr, value); if (c == -1)
@Override /* ParserSession */ protected <T> T doParse(ParserPipe pipe, ClassMeta<T> type) throws Exception { try (UonReader r = getUonReader(pipe, true)) { return parseAnything(type, r, getOuter()); } }
@Override /* ReaderParserSession */ protected <K,V> Map<K,V> doParseIntoMap(ParserPipe pipe, Map<K,V> m, Type keyType, Type valueType) throws Exception { try (UonReader r = getUonReader(pipe, true)) { if (r.peekSkipWs() == '?') r.read(); m = parseIntoMap2(r, m, getClassMeta(Map.class, keyType, valueType), null); return m; } }
@Override /* Parser */ public UrlEncodingParserSession createSession(ParserSessionArgs args) { return new UrlEncodingParserSession(this, args); }
/** * Returns <jk>true</jk> if the specified bean property should be expanded as multiple key-value pairs. * * @param pMeta The metadata on the bean property. * @return <jk>true</jk> if the specified bean property should be expanded as multiple key-value pairs. */ public final boolean shouldUseExpandedParams(BeanPropertyMeta pMeta) { ClassMeta<?> cm = pMeta.getClassMeta().getSerializedClassMeta(this); if (cm.isCollectionOrArray()) { if (isExpandedParams()) return true; if (pMeta.getBeanMeta().getClassMeta().getExtendedMeta(UrlEncodingClassMeta.class).isExpandedParams()) return true; } return false; }
@Override /* ParserSession */ protected <T> T doParse(ParserPipe pipe, ClassMeta<T> type) throws Exception { try (UonReader r = getUonReader(pipe, true)) { return parseAnything(type, r, getOuter()); } }
@Override /* ReaderParserSession */ protected <K,V> Map<K,V> doParseIntoMap(ParserPipe pipe, Map<K,V> m, Type keyType, Type valueType) throws Exception { try (UonReader r = getUonReader(pipe, true)) { if (r.peekSkipWs() == '?') r.read(); m = parseIntoMap2(r, m, getClassMeta(Map.class, keyType, valueType), null); return m; } }