@Override public Binding read(Object jsonValue, JsonReader jsonReader) { Binding binding = super.read(jsonValue, jsonReader); DataType dataType = binding.getType(); Object jsonVariableValue = binding.getValue(); if (!isParameterized // if it's parameterized, then the this.typeMapping already performed the deserialization of the value && jsonVariableValue!=null && dataType!=null) { Object objectVariableValue = jsonReader.readObject(jsonVariableValue, dataType.getValueType()); binding.setValue(objectVariableValue); } return binding; } }
/** Returns a list of bindings from the extension elements with the given name. */ @Override public <T> List<Binding<T>> readBindings(String localPart) { if (currentXml==null) { return null; } List<Binding<T>> bindings = new ArrayList<>(); for (XmlElement element: currentXml.removeElements(EFFEKTIF_URI, localPart)) { Binding binding = new Binding(); String value = element.getAttribute(EFFEKTIF_URI, "value"); String typeName = element.getAttribute(EFFEKTIF_URI, "type"); startElement(element); XmlElement metadataElement = readElementEffektif("metadata"); Map<String, Object> metadata = null; if (metadataElement != null) { startElement(metadataElement); metadata = readSimpleProperties(); endElement(); } endElement(); DataType type = convertType(typeName); binding.setValue(parseText(value, (Class<Object>) type.getValueType())); binding.setExpression(element.getAttribute(EFFEKTIF_URI, "expression")); binding.setMetadata(metadata); bindings.add(binding); } return bindings; }
private <T> Binding<T> readBindingFromCurrentElement() { if (currentXml != null) { Binding binding = new Binding(); String value = currentXml.getAttribute(EFFEKTIF_URI, "value"); String typeName = currentXml.getAttribute(EFFEKTIF_URI, "type"); XmlElement metadataElement = readElementEffektif("metadata"); Map<String, Object> metadata = null; if (metadataElement != null) { startElement(metadataElement); metadata = readSimpleProperties(); endElement(); } DataType type = convertType(typeName); binding.setValue(parseText(value, (Class<Object>) type.getValueType())); binding.setExpression(currentXml.getAttribute(EFFEKTIF_URI, "expression")); binding.setMetadata(metadata); return binding; } return null; }