@Override public MessageType deserialize(JsonParser parser, DeserializationContext context) throws IOException { String value = StringDeserializer.instance.deserialize(parser, context); if (value != null) { value = value.toUpperCase(); } else { return MessageType.OTHER; } if (value.contains("MSG")) { value = "MESSAGE"; } if (value.equals("SESSIONLINK") || value.equals("CONNECT")) { value = "CONNECT"; } try { return MessageType.valueOf(value); } catch (IllegalArgumentException e) { ErrorHandler.logError(e); return MessageType.OTHER; } }
@Override public JsonDeserializer<?> createContextual(DeserializationContext ctx, BeanProperty property) throws JsonMappingException { if (property != null && property.getMember().getAnnotation(JsonRawValue.class) != null) { return this; } return new StringDeserializer(); }
@Override public Long deserialize(JsonParser parser, DeserializationContext context) throws IOException { String value = StringDeserializer.instance.deserialize(parser, context); try { return Double.valueOf(value).longValue(); } catch (NumberFormatException e1) { try { DateFormat dateFormat = new ISO8601DateFormat(); return dateFormat.parse(value).getTime(); } catch (ParseException e2) { return 0L; } } }
public JsonDeserializer<?> findDefaultDeserializer(DeserializationContext paramDeserializationContext, JavaType paramJavaType, BeanDescription paramBeanDescription) { Class localClass = paramJavaType.getRawClass(); String str = localClass.getName(); if ((localClass.isPrimitive()) || (str.startsWith("java."))) { if (localClass == CLASS_OBJECT) return UntypedObjectDeserializer.instance; if ((localClass == CLASS_STRING) || (localClass == CLASS_CHAR_BUFFER)) return StringDeserializer.instance; if (localClass == CLASS_ITERABLE) { TypeFactory localTypeFactory = paramDeserializationContext.getTypeFactory(); JavaType localJavaType; if (paramJavaType.containedTypeCount() > 0) localJavaType = paramJavaType.containedType(0); else localJavaType = TypeFactory.unknownType(); return createCollectionDeserializer(paramDeserializationContext, localTypeFactory.constructCollectionType(Collection.class, localJavaType), paramBeanDescription); } JsonDeserializer localJsonDeserializer1 = NumberDeserializers.find(localClass, str); Object localObject = localJsonDeserializer1; if (localJsonDeserializer1 == null) { JsonDeserializer localJsonDeserializer2 = DateDeserializers.find(localClass, str); localObject = localJsonDeserializer2; if (localJsonDeserializer2 == null) localObject = JdkDeserializers.find(localClass, str); } return localObject; } if (str.startsWith("com.fasterxml.")) return JacksonDeserializers.find(localClass); return null; }
@Override public Long deserialize(JsonParser parser, DeserializationContext context) throws IOException { String value = StringDeserializer.instance.deserialize(parser, context); return UUID.fromString(value).getMostSignificantBits(); }
@Override public void runConversion(int numberOfAttributes, int lengthOfAttribute) { int assignmentsTotal, progress = 0; assignmentsConverted = submissionsConverted = submissionsFailed = assignmentsFailed = 0; SimpleModule module = new SimpleModule().addDeserializer(String.class, new StdDeserializer<String>(String.class) { @Override public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException { String str = StringDeserializer.instance.deserialize(p, ctxt); if (StringUtils.isBlank(str)) return null; return str; } }); // woodstox xml parser defaults we don't allow values smaller than the default if (numberOfAttributes < ReaderConfig.DEFAULT_MAX_ATTRIBUTES_PER_ELEMENT) numberOfAttributes = ReaderConfig.DEFAULT_MAX_ATTRIBUTES_PER_ELEMENT; if (lengthOfAttribute < ReaderConfig.DEFAULT_MAX_ATTRIBUTE_LENGTH) lengthOfAttribute = ReaderConfig.DEFAULT_MAX_ATTRIBUTE_LENGTH; log.info("<===== Assignments conversion xml parser limits: number of attributes={}, attribute size={} =====>", numberOfAttributes, lengthOfAttribute); XMLInputFactory xmlInputFactory = XMLInputFactory.newFactory(); xmlInputFactory.setProperty(WstxInputProperties.P_MAX_ATTRIBUTES_PER_ELEMENT, numberOfAttributes); xmlInputFactory.setProperty(WstxInputProperties.P_MAX_ATTRIBUTE_SIZE, lengthOfAttribute); xmlMapper = new XmlMapper(xmlInputFactory); xmlMapper.registerModule(new Jdk8Module()); xmlMapper.registerModule(module); String configValue = "org.sakaiproject.assignment.api.model.Assignment,org.sakaiproject.assignment.api.model.AssignmentSubmission"; String currentValue = serverConfigurationService.getConfig(AssignableUUIDGenerator.HIBERNATE_ASSIGNABLE_ID_CLASSES, null); if (StringUtils.isNotBlank(currentValue)) { configValue = configValue + "," + currentValue; } ServerConfigurationService.ConfigItem configItem = BasicConfigItem.makeConfigItem( AssignableUUIDGenerator.HIBERNATE_ASSIGNABLE_ID_CLASSES, configValue, AssignmentConversionServiceImpl.class.getName(), true); serverConfigurationService.registerConfigItem(configItem); List<String> preAssignments = dataProvider.fetchAssignmentsToConvert(); List<String> postAssignments = assignmentRepository.findAllAssignmentIds(); List<String> convertAssignments = new ArrayList<>(preAssignments); convertAssignments.removeAll(postAssignments); assignmentsTotal = convertAssignments.size(); log.info("<===== Assignments pre 12 [{}] and post 12 [{}] to convert {} =====>", preAssignments.size(), postAssignments.size(), assignmentsTotal); for (String assignmentId : convertAssignments) { try { convert(assignmentId); } catch (Exception e) { log.warn("Assignment conversion exception for {}", assignmentId, e); } int percent = new Double(((assignmentsConverted + assignmentsFailed) / (double) assignmentsTotal) * 100).intValue(); if (progress != percent) { progress = percent; log.info("<===== Assignments conversion completed {}% =====>", percent); } } configItem = BasicConfigItem.makeConfigItem( AssignableUUIDGenerator.HIBERNATE_ASSIGNABLE_ID_CLASSES, StringUtils.trimToEmpty(currentValue), AssignmentConversionServiceImpl.class.getName()); serverConfigurationService.registerConfigItem(configItem); log.info("<===== Assignments converted {} =====>", assignmentsConverted); log.info("<===== Submissions converted {} =====>", submissionsConverted); log.info("<===== Assignments that failed to be converted {} =====>", assignmentsFailed); log.info("<===== Submissions that failed to be converted {} =====>", submissionsFailed); }