@Override public AckArgs deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { List<Object> args = new ArrayList<Object>(); AckArgs result = new AckArgs(args); ObjectMapper mapper = (ObjectMapper) jp.getCodec(); JsonNode root = mapper.readTree(jp); AckCallback<?> callback = currentAckClass.get(); Iterator<JsonNode> iter = root.iterator(); int i = 0; while (iter.hasNext()) { Object val; Class<?> clazz = callback.getResultClass(); if (callback instanceof MultiTypeAckCallback) { MultiTypeAckCallback multiTypeAckCallback = (MultiTypeAckCallback) callback; clazz = multiTypeAckCallback.getResultClasses()[i]; } JsonNode arg = iter.next(); if (arg.isTextual() || arg.isBoolean()) { clazz = Object.class; } val = mapper.treeToValue(arg, clazz); args.add(val); i++; } return result; }
@Override public LatLng deserialize(JsonParser jp, DeserializationContext _any) throws IOException { TreeNode node = jp.getCodec().readTree(jp); double lat = ((NumericNode) node.get(0)).doubleValue(); double lng = ((NumericNode) node.get(1)).doubleValue(); return new LatLng(lat, lng); }
@Override public Event deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ObjectMapper mapper = (ObjectMapper) jp.getCodec(); String eventName = jp.nextTextValue(); EventKey ek = new EventKey(namespaceClass.get(), eventName); if (!eventMapping.containsKey(ek)) { ek = new EventKey(Namespace.DEFAULT_NAME, eventName); if (!eventMapping.containsKey(ek)) { return new Event(eventName, Collections.emptyList()); } } List<Object> eventArgs = new ArrayList<Object>(); Event event = new Event(eventName, eventArgs); List<Class<?>> eventClasses = eventMapping.get(ek); int i = 0; while (true) { JsonToken token = jp.nextToken(); if (token == JsonToken.END_ARRAY) { break; } if (i > eventClasses.size() - 1) { log.debug("Event {} has more args than declared in handler: {}", eventName, null); break; } Class<?> eventClass = eventClasses.get(i); Object arg = mapper.readValue(jp, eventClass); eventArgs.add(arg); i++; } return event; }
@Override public Member deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { JsonNode node = jp.getCodec().readTree(jp); String key = node.get("key").textValue(); Member result = memberRepository.findOneByKey(key); return result; }
@Override public Rectangle2D deserialize( final JsonParser parser, final DeserializationContext context) throws IOException, JsonProcessingException { final JsonNode tree = parser.getCodec().readTree(parser); return new Rectangle2D.Double( tree.get("X").asDouble(), tree.get("Y").asDouble(), tree.get("Width").asDouble(), tree.get("Height").asDouble()); }
protected ReturnType parseReturnType(final JsonParser jp, final String elementName) throws IOException { ReturnType returnType; if (elementName.equals(((FromXmlParser) jp).getStaxReader().getLocalName())) { returnType = new ReturnType(); returnType.setType(jp.nextTextValue()); } else { jp.nextToken(); returnType = jp.getCodec().readValue(jp, ReturnType.class); } return returnType; }
@Override public Cookie deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ObjectMapper mapper = (ObjectMapper) jp.getCodec(); JsonNode jsonNode = mapper.readTree(jp); Cookie cookie = new Cookie( readJsonNode(jsonNode, "name").asText(), readJsonNode(jsonNode, "value").asText()); cookie.setComment(readJsonNode(jsonNode, "comment").asText()); cookie.setDomain(readJsonNode(jsonNode, "domain").asText()); cookie.setMaxAge(readJsonNode(jsonNode, "maxAge").asInt(-1)); cookie.setSecure(readJsonNode(jsonNode, "secure").asBoolean()); cookie.setVersion(readJsonNode(jsonNode, "version").asInt()); cookie.setPath(readJsonNode(jsonNode, "path").asText()); cookie.setHttpOnly(readJsonNode(jsonNode, "httpOnly").asBoolean()); return cookie; }
@Override public Volumes deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { List<Volume> volumes = new ArrayList<Volume>(); ObjectCodec oc = jsonParser.getCodec(); JsonNode node = oc.readTree(jsonParser); for (Iterator<Map.Entry<String, JsonNode>> it = node.fields(); it.hasNext(); ) { Map.Entry<String, JsonNode> field = it.next(); if (!field.getValue().equals(NullNode.getInstance())) { String path = field.getKey(); Volume volume = new Volume(path); volumes.add(volume); } } return new Volumes(volumes.toArray(new Volume[0])); }
@Override protected ReferentialConstraintRole doDeserialize( final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException { final ReferentialConstraintRole refConstRole = new ReferentialConstraintRole(); for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) { final JsonToken token = jp.getCurrentToken(); if (token == JsonToken.FIELD_NAME) { if ("Role".equals(jp.getCurrentName())) { refConstRole.setRole(jp.nextTextValue()); } else if ("PropertyRef".equals(jp.getCurrentName())) { jp.nextToken(); refConstRole.getPropertyRefs().add(jp.getCodec().readValue(jp, PropertyRef.class)); } } } return refConstRole; }
@Override public Policy deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { JsonNode node = jp.getCodec().readTree(jp); Policy policy = new Policy(); node.fieldNames() .forEachRemaining( field -> { JsonNode subNode = node.findValue(field); policy.setName(field); policy.setConfiguration(subNode.toString()); System.out.println(field); }); /* policy.setName(node.get("policy").asText()); policy.setConfiguration(node.getget("configuration").toString()); */ return policy; }
// TODO - See 'Can't create HyperLogLogPlus sketches in JSON' @Override public HyperLogLogPlus deserialize( final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException, JsonProcessingException { final TreeNode treeNode = jsonParser.getCodec().readTree(jsonParser); final TreeNode coreHyperLogLogPlusObject = treeNode.get("hyperLogLogPlus"); if (coreHyperLogLogPlusObject != null) { final TextNode jsonNodes = (TextNode) coreHyperLogLogPlusObject.get( HyperLogLogPlusJsonConstants.HYPER_LOG_LOG_PLUS_SKETCH_BYTES_FIELD); final byte[] nodeAsString = jsonNodes.binaryValue(); final HyperLogLogPlus hyperLogLogPlus = HyperLogLogPlus.Builder.build(nodeAsString); return hyperLogLogPlus; } else { throw new IllegalArgumentException("Recieved null or empty HyperLogLogPlus sketch"); } }
@Override public TroubleReportTemplate deserialize( JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { JsonNode jsonNode = jsonParser.getCodec().readTree(jsonParser); JsonNode troubleReportTemplate = jsonNode.get("troubleReportTemplate"); ServiceProblemId serviceProblemId = new ServiceProblemId(troubleReportTemplate.get("serviceProblemId").asLong()); String troubleReportId = troubleReportTemplate.get("troubleReportId").asText(); String appointmentReference = troubleReportTemplate.get("appointmentReference").asText(); boolean twentyFourHourAccess = troubleReportTemplate.get("twentyFourHourAccess").asBoolean(); String earliestAccessDate = troubleReportTemplate.get("earliestAccessDate").asText().equals("null") ? null : troubleReportTemplate.get("earliestAccessDate").asText(); String latestAccessDate = troubleReportTemplate.get("latestAccessDate").asText().equals("null") ? null : troubleReportTemplate.get("latestAccessDate").asText(); String serviceTypeCode = troubleReportTemplate.get("serviceType").get("code").asText(); SnsServiceId serviceId = new SnsServiceId(troubleReportTemplate.get("serviceId").asLong()); String providerReference = troubleReportTemplate.get("providerReference").asText(); String btReference = troubleReportTemplate.get("btReference").asText(); String description = troubleReportTemplate.get("description").asText(); String accessHazards = troubleReportTemplate.get("accessHazards").asText(); String accessNotes = troubleReportTemplate.get("accessNotes").asText(); String contactName = troubleReportTemplate.get("contactName").asText(); String contactNumber = troubleReportTemplate.get("contactNumber").asText(); String secondaryContactName = troubleReportTemplate.get("secondaryContactName").asText(); String secondaryContactNumber = troubleReportTemplate.get("secondaryContactNumber").asText(); String notes = troubleReportTemplate.get("notes").asText(); String temporaryCallDiversionNumber = troubleReportTemplate.get("temporaryCallDiversionNumber").asText(); int upperTrcBand = troubleReportTemplate.get("upperTrcBand").asInt(); boolean cancelRequested = troubleReportTemplate.get("cancelRequested").asBoolean(); boolean amendRequested = troubleReportTemplate.get("amendRequested").asBoolean(); boolean confirmEquipmentDisconnectedRequested = troubleReportTemplate.get("confirmEquipmentDisconnectedRequested").asBoolean(); boolean broadbandFault = troubleReportTemplate.get("broadbandFault").asBoolean(); boolean coopCallRequested = troubleReportTemplate.get("coopCallRequested").asBoolean(); boolean disRequested = troubleReportTemplate.get("disRequested").asBoolean(); boolean isResponseRequired = troubleReportTemplate.get("isResponseRequired").asBoolean(); boolean intermittentProblem = troubleReportTemplate.get("intermittentProblem").asBoolean(); JsonNode symptomNode = troubleReportTemplate.get("symptom"); TroubleReportSymptomDTO symptom = new TroubleReportSymptomDTO( symptomNode.get("symptomCode").asText(), symptomNode.get("providerCode").asText(), symptomNode.get("description").asText(), symptomNode.get("mapsToNetworkFeature").asBoolean(), symptomNode.get("mapToNetworkFeatureName").asText(), symptomNode.get("mapToNetworkFeaturePin").asText()); JsonNode lineTestSummaryNode = troubleReportTemplate.get("lineTestSummary"); LineTestSummaryDTO lineTestSummary = new LineTestSummaryDTO( lineTestSummaryNode.get("lineTestReference").asText(), lineTestSummaryNode.get("performerReference").asText(), lineTestSummaryNode.get("mainFaultLocation").asText(), lineTestSummaryNode.get("isCompleted").asBoolean(), lineTestSummaryNode.get("faultReportAdvised").asBoolean(), lineTestSummaryNode.get("requiresAppointment").asBoolean()); StructuredQuestionCode structuredQuestionCode = null; if (troubleReportTemplate.hasNonNull("structuredQuestionCode")) { structuredQuestionCode = StructuredQuestionCode.valueOf( troubleReportTemplate.get("structuredQuestionCode").asText()); } TroubleReportStatus troubleReportStatus = TroubleReportStatus.New; if (troubleReportTemplate.hasNonNull("status")) { troubleReportStatus = TroubleReportStatus.valueOf(troubleReportTemplate.get("status").asText()); } TestProduct testProduct = null; if (troubleReportTemplate.hasNonNull("testProduct")) { testProduct = TestProduct.valueOf(troubleReportTemplate.get("testProduct").asText()); } return new TroubleReportTemplateBuilder() .with(serviceProblemId) .withTwentyFourHourAccess(twentyFourHourAccess) .withEarliestAccessDate(new Date()) .withAppointmentReference(appointmentReference) .withEarliestAccessDate( earliestAccessDate != null ? Date.from(ZonedDateTime.parse(earliestAccessDate).toInstant()) : null) .withLatestAccessDate( latestAccessDate != null ? Date.from(ZonedDateTime.parse(latestAccessDate).toInstant()) : null) .withServiceType(ServiceType.valueOf(serviceTypeCode)) .with(serviceId) .withProviderReference(providerReference) .withBtReference(btReference) .withDescription(description) .withAccessHazards(accessHazards) .withAccessNotes(accessNotes) .withContactName(contactName) .withContactNumber(contactNumber) .withSecondaryContactName(secondaryContactName) .withSecondaryContactNumber(secondaryContactNumber) .withNotes(notes) .withTemporaryCallDiversionNumber(temporaryCallDiversionNumber) .withCancelRequested(cancelRequested) .withAmendRequested(amendRequested) .withConfirmEquipmentDisconnectedRequested(confirmEquipmentDisconnectedRequested) .withBroadbandFault(broadbandFault) .withCoopCallRequested(coopCallRequested) .withDisRequested(disRequested) .withIsResponseRequired(isResponseRequired) .withIntermittentProblem(intermittentProblem) .withSymptom(symptom) .withLineTestSummary(lineTestSummary) .withUpperTrcBand(troubleReportTemplate.get("upperTrcBand").asInt()) .withTestProduct(testProduct) .withStructuredQuestionCode(structuredQuestionCode) .withStatus(troubleReportStatus) .withTroubleReportId(new TroubleReportId(troubleReportId)) .withUpperTrcBand(upperTrcBand) .build(); }
@Override public Point deserialize(final JsonParser parser, final DeserializationContext context) throws IOException, JsonProcessingException { final JsonNode tree = parser.getCodec().readTree(parser); return new Point(tree.get("X").asInt(), tree.get("Y").asInt()); }
@Override public ActionItem deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ObjectNode objectNode = jp.readValueAsTree(); JsonNode wrapped = objectNode.get("actionItemType"); JsonParser parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); ActionItemType actionItemType = parser.readValueAs(ActionItemType.class); wrapped = objectNode.get("actionItemId"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); Long actionItemId = parser.getValueAsLong(); wrapped = objectNode.get("actionItemCreateDate"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); Date actionItemCreateDate = new Date(parser.getValueAsLong()); wrapped = objectNode.get("actionItemName"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); String actionItemName = parser.getValueAsString(); wrapped = objectNode.get("actionItemDueDate"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); Date actionItemDueDate = new Date(parser.getValueAsLong()); wrapped = objectNode.get("discussionId"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); Long discussionId = parser.getValueAsLong(); wrapped = objectNode.get("owner"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); MmrActionItemUser owner = parser.readValueAs(MmrActionItemUser.class); wrapped = objectNode.get("assignees"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); List<MmrActionItemUser> assignees = parser.readValueAs(new TypeReference<List<MmrActionItemUser>>() {}); wrapped = objectNode.get("actionItemStatus"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); ActionItemStatus actionItemStatus = parser.readValueAs(ActionItemStatus.class); ActionItem actionItem = new UntypedActionItem(); actionItem.setActionItemType(actionItemType); actionItem.setActionItemId(actionItemId); actionItem.setActionItemStatus(actionItemStatus); actionItem.setAssignees(assignees); actionItem.setActionItemCreateDate(actionItemCreateDate); actionItem.setActionItemDueDate(actionItemDueDate); actionItem.setActionItemName(actionItemName); actionItem.setDiscussionId(discussionId); actionItem.setOwner(owner); return actionItem; }
@Override public CLAClassifier deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ObjectCodec oc = jp.getCodec(); JsonNode node = oc.readTree(jp); CLAClassifier retVal = new CLAClassifier(); retVal.alpha = node.get("alpha").asDouble(); retVal.actValueAlpha = node.get("actValueAlpha").asDouble(); retVal.learnIteration = node.get("learnIteration").asInt(); retVal.recordNumMinusLearnIteration = node.get("recordNumMinusLearnIteration").asInt(); retVal.maxBucketIdx = node.get("maxBucketIdx").asInt(); String[] steps = node.get("steps").asText().split(","); TIntList t = new TIntArrayList(); for (String step : steps) { t.add(Integer.parseInt(step)); } retVal.steps = t; String[] tupleStrs = node.get("patternNZHistory").asText().split(";"); Deque<Tuple> patterns = new Deque<Tuple>(tupleStrs.length); for (String tupleStr : tupleStrs) { String[] tupleParts = tupleStr.split("-"); int iteration = Integer.parseInt(tupleParts[0]); String pattern = tupleParts[1].substring(1, tupleParts[1].indexOf("]")).trim(); String[] indexes = pattern.split(","); int[] indices = new int[indexes.length]; for (int i = 0; i < indices.length; i++) { indices[i] = Integer.parseInt(indexes[i].trim()); } Tuple tup = new Tuple(iteration, indices); patterns.append(tup); } retVal.patternNZHistory = patterns; Map<Tuple, BitHistory> bitHistoryMap = new HashMap<Tuple, BitHistory>(); String[] bithists = node.get("activeBitHistory").asText().split(";"); for (String bh : bithists) { String[] parts = bh.split("-"); String[] left = parts[0].split(","); Tuple iteration = new Tuple(Integer.parseInt(left[0].trim()), Integer.parseInt(left[1].trim())); BitHistory bitHistory = new BitHistory(); String[] right = parts[1].split("="); bitHistory.id = right[0].trim(); TDoubleList dubs = new TDoubleArrayList(); String[] stats = right[1].substring(1, right[1].indexOf("}")).trim().split(","); for (int i = 0; i < stats.length; i++) { dubs.add(Double.parseDouble(stats[i].trim())); } bitHistory.stats = dubs; bitHistory.lastTotalUpdate = Integer.parseInt(right[2].trim()); bitHistoryMap.put(iteration, bitHistory); } retVal.activeBitHistory = bitHistoryMap; ArrayNode jn = (ArrayNode) node.get("actualValues"); List<Object> l = new ArrayList<Object>(); for (int i = 0; i < jn.size(); i++) { JsonNode n = jn.get(i); try { double d = Double.parseDouble(n.asText().trim()); l.add(d); } catch (Exception e) { l.add(n.asText().trim()); } } retVal.actualValues = l; // Go back and set the classifier on the BitHistory objects for (Tuple tuple : bitHistoryMap.keySet()) { bitHistoryMap.get(tuple).classifier = retVal; } return retVal; }
@Override public ServerConfigData deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { ObjectCodec codec = jp.getCodec(); ObjectNode serverNode = jp.readValueAsTree(); ServerConfigData data = new ServerConfigData(baseDirSupplier.get(), address, port, development, publicAddress); if (serverNode.hasNonNull("port")) { data.setPort(parsePort(serverNode.get("port"))); } if (serverNode.hasNonNull("address")) { data.setAddress(toValue(codec, serverNode.get("address"), InetAddress.class)); } if (serverNode.hasNonNull("development")) { data.setDevelopment(serverNode.get("development").asBoolean(false)); } if (serverNode.hasNonNull("threads")) { data.setThreads(serverNode.get("threads").asInt(ServerConfig.DEFAULT_THREADS)); } if (serverNode.hasNonNull("publicAddress")) { data.setPublicAddress(toValue(codec, serverNode.get("publicAddress"), URI.class)); } if (serverNode.hasNonNull("maxContentLength")) { data.setMaxContentLength( serverNode.get("maxContentLength").asInt(ServerConfig.DEFAULT_MAX_CONTENT_LENGTH)); } if (serverNode.hasNonNull("maxChunkSize")) { data.setMaxChunkSize( serverNode.get("maxChunkSize").asInt(ServerConfig.DEFAULT_MAX_CHUNK_SIZE)); } if (serverNode.hasNonNull("maxInitialLineLength")) { data.setMaxInitialLineLength( serverNode .get("maxInitialLineLength") .asInt(ServerConfig.DEFAULT_MAX_INITIAL_LINE_LENGTH)); } if (serverNode.hasNonNull("maxHeaderSize")) { data.setMaxHeaderSize( serverNode.get("maxHeaderSize").asInt(ServerConfig.DEFAULT_MAX_HEADER_SIZE)); } if (serverNode.hasNonNull("ssl")) { data.setSslContext(toValue(codec, serverNode.get("ssl"), SSLContext.class)); } if (serverNode.hasNonNull("requireClientSslAuth")) { data.setRequireClientSslAuth(serverNode.get("requireClientSslAuth").asBoolean(false)); } if (serverNode.hasNonNull("baseDir")) { throw new IllegalStateException( "baseDir value cannot be set via config, it must be set directly via ServerConfigBuilder.baseDir()"); } if (serverNode.hasNonNull("connectTimeoutMillis")) { parseOptionalIntValue("connectTimeoutMillis", serverNode.get("connectTimeoutMillis")) .ifPresent(data::setConnectTimeoutMillis); } if (serverNode.hasNonNull("maxMessagesPerRead")) { parseOptionalIntValue("maxMessagesPerRead", serverNode.get("maxMessagesPerRead")) .ifPresent(data::setMaxMessagesPerRead); } if (serverNode.hasNonNull("receiveBufferSize")) { parseOptionalIntValue("receiveBufferSize", serverNode.get("receiveBufferSize")) .ifPresent(data::setReceiveBufferSize); } if (serverNode.hasNonNull("writeSpinCount")) { parseOptionalIntValue("writeSpinCount", serverNode.get("writeSpinCount")) .ifPresent(data::setWriteSpinCount); } return data; }