List of usage examples for com.fasterxml.jackson.databind.module SimpleModule SimpleModule
public SimpleModule()
From source file:org.pentaho.pdi.engine.serializers.DataEventSerializer.java
public DataEventSerializer() { super(DataEvent.class); SimpleModule module = new SimpleModule(); module.addSerializer(DataEvent.class, new JsonSerializer<DataEvent>() { @Override/* ww w. j a v a 2s. co m*/ public void serialize(DataEvent dataEvent, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeStartObject(); Rows rows = (Rows) dataEvent.getData(); jsonGenerator.writeStringField("model-id", dataEvent.getSource().getId()); jsonGenerator.writeStringField("type", rows.getType().toString()); jsonGenerator.writeStringField("state", rows.getState().toString()); jsonGenerator.writeArrayFieldStart("rows"); for (Row row : rows) { jsonGenerator.writeStartObject(); jsonGenerator.writeArrayFieldStart("names"); for (String name : row.getColumnNames()) { jsonGenerator.writeString(name); } jsonGenerator.writeEndArray(); jsonGenerator.writeArrayFieldStart("objects"); for (Object obj : row.getObjects().get()) { jsonGenerator.writeStartObject(); if (obj == null) { jsonGenerator.writeStringField("type", "Null"); jsonGenerator.writeEndObject(); continue; } switch (obj.getClass().getSimpleName()) { case "String": jsonGenerator.writeStringField("type", "String"); jsonGenerator.writeStringField("obj", obj.toString()); break; case "Date": jsonGenerator.writeStringField("type", "Date"); jsonGenerator.writeStringField("obj", DATE_TIME_INSTANCE.format((Date) obj)); break; case "Integer": jsonGenerator.writeStringField("type", "Integer"); jsonGenerator.writeNumberField("obj", (Integer) obj); break; case "Long": jsonGenerator.writeStringField("type", "Long"); jsonGenerator.writeNumberField("obj", (Long) obj); break; case "Double": jsonGenerator.writeStringField("type", "Double"); jsonGenerator.writeNumberField("obj", (Double) obj); break; case "BigDecimal": jsonGenerator.writeStringField("type", "BigDecimal"); jsonGenerator.writeStringField("obj", obj.toString()); break; case "Boolean": jsonGenerator.writeStringField("type", "Boolean"); jsonGenerator.writeBooleanField("obj", (Boolean) obj); break; case "byte[]": jsonGenerator.writeStringField("type", "byte[]"); jsonGenerator.writeStringField("obj", new String(((byte[]) obj), "UTF-8")); break; default: if (obj instanceof Serializable) { jsonGenerator.writeStringField("type", "Object"); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream); objectOutputStream.writeObject(obj); objectOutputStream.close(); outputStream.close(); byte[] bytes = outputStream.toByteArray(); jsonGenerator.writeStringField("obj", Base64.encodeBase64String(bytes)); } } jsonGenerator.writeEndObject(); } jsonGenerator.writeEndArray(); jsonGenerator.writeEndObject(); } jsonGenerator.writeEndArray(); jsonGenerator.writeEndObject(); } }); module.addDeserializer(DataEvent.class, new StdNodeBasedDeserializer<DataEvent>(DataEvent.class) { @Override public DataEvent convert(JsonNode jsonNode, DeserializationContext deserializationContext) throws IOException { Rows.TYPE type = Rows.TYPE.valueOf(jsonNode.get("type").asText()); Rows.STATE state = Rows.STATE.valueOf(jsonNode.get("state").asText()); List<Row> rows = new ArrayList<>(); JsonNode json_rows = jsonNode.get("rows"); for (JsonNode row : json_rows) { List<Class> types = new ArrayList<>(); List<String> names = new ArrayList<>(); for (JsonNode name : row.get("names")) { names.add(name.asText()); } List<Object> objects = new ArrayList<>(); for (JsonNode obj : row.get("objects")) { JsonNode t = obj.get("type"); JsonNode rawObject = obj.get("obj"); Object object = null; String objType = t.asText(); switch (objType) { case "Null": types.add(Void.class); break; case "String": types.add(String.class); object = rawObject.asText(); break; case "Integer": types.add(Integer.class); object = rawObject.asInt(); break; case "Long": types.add(Long.class); object = rawObject.asLong(); break; case "Date": types.add(Date.class); try { object = DATE_TIME_INSTANCE.parse(rawObject.asText()); } catch (ParseException e) { e.printStackTrace(); } break; case "Double": types.add(Double.class); object = rawObject.asDouble(); break; case "BigDecimal": types.add(BigDecimal.class); object = new BigDecimal(rawObject.asText()); break; case "Boolean": types.add(Boolean.class); object = rawObject.asBoolean(); break; case "byte[]": types.add(byte[].class); object = rawObject.asText().getBytes("UTF-8"); break; case "Object": try { types.add(Object.class); object = new ObjectInputStream( new ByteArrayInputStream(Base64.decodeBase64(rawObject.asText()))) .readObject(); } catch (ClassNotFoundException e) { e.printStackTrace(); } break; } objects.add(object); } Row r = new DeserializedRow(names, types, objects); rows.add(r); } Rows rowsObj = new Rows(rows, type, state); return new DataEvent(new RemoteSource(jsonNode.get("model-id").asText()), rowsObj); } }); mapper.registerModule(module); }
From source file:es.logongas.ix3.web.json.impl.JsonReaderImplEntityJackson.java
public JsonReaderImplEntityJackson(Class clazz) { this.clazz = clazz; objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true); SimpleModule module = new SimpleModule(); module.addDeserializer(java.util.Date.class, new DateDeserializer()); objectMapper.registerModule(module); }
From source file:com.youtube.processor.YoutubeTypeConverterTest.java
@Before public void setup() { objectMapper = StreamsJacksonMapper.getInstance(); SimpleModule simpleModule = new SimpleModule(); simpleModule.addDeserializer(Video.class, new YoutubeVideoDeserializer()); objectMapper.registerModule(simpleModule); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); youtubeTypeConverter = new YoutubeTypeConverter(); youtubeTypeConverter.prepare(null);// w w w . j a va 2 s. c o m }
From source file:com.youtube.serializer.YoutubeVideoSerDeTest.java
@Before public void setup() { objectMapper = StreamsJacksonMapper.getInstance(); SimpleModule simpleModule = new SimpleModule(); simpleModule.addDeserializer(Video.class, new YoutubeVideoDeserializer()); objectMapper.registerModule(simpleModule); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); youtubeActivityUtil = new YoutubeActivityUtil(); }
From source file:de.avpptr.umweltzone.utils.ContentProvider.java
@SuppressWarnings("unchecked") // for Collections.EMPTY_LIST @NonNull//from w w w. j a v a 2s . c o m private static <T> List<T> getContent(final Context context, final String fileName, final String folderName, Class<T> contentType) { int rawResourceId = getResourceId(context, fileName, folderName); InputStream inputStream = context.getResources().openRawResource(rawResourceId); SimpleModule module = new SimpleModule(); module.addDeserializer(Circuit.class, new CircuitDeserializer()); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.registerModule(module); String datePattern = context.getString(R.string.config_zone_number_since_date_format); objectMapper.setDateFormat(new SimpleDateFormat(datePattern, Locale.getDefault())); try { TypeFactory typeFactory = objectMapper.getTypeFactory(); CollectionType collectionType = typeFactory.constructCollectionType(List.class, contentType); return objectMapper.readValue(inputStream, collectionType); } catch (IOException e) { // TODO Aware that app will crash when JSON is mis-structured. e.printStackTrace(); } Log.e(ContentProvider.class.getName(), "Failure parsing zone data for: " + fileName); return Collections.EMPTY_LIST; }
From source file:net.udidb.server.driver.ServerModule.java
@Override protected void configure() { // JSON configuration SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(ExpressionValue.class, new ExpressionValueSerializer()); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.addMixInAnnotations(VoidResult.class, VoidResultMixIn.class); objectMapper.addMixInAnnotations(DeferredResult.class, DeferredResultMixIn.class); objectMapper.addMixInAnnotations(TableResult.class, TableResultMixIn.class); objectMapper.addMixInAnnotations(ValueResult.class, ValueResultMixIn.class); objectMapper.addMixInAnnotations(TableRow.class, TableRowMixIn.class); objectMapper.registerModule(simpleModule); bind(ObjectMapper.class).toInstance(objectMapper); // REST API configuration Vertx vertx = new VertxFactoryImpl().vertx(); bind(Vertx.class).toInstance(vertx); // Engine configuration bind(String[].class).annotatedWith(Names.named("OP_PACKAGES")) .toInstance(new String[] { "net.udidb.engine.ops.impls" }); bind(DebuggeeContextManager.class).to(DebuggeeContextManagerImpl.class); bind(HelpMessageProvider.class).asEagerSingleton(); bind(UdiProcessManager.class).toInstance(new UdiProcessManagerImpl()); bind(BinaryReader.class).toInstance(new CrossPlatformBinaryReader()); bind(ExpressionCompiler.class).toInstance(new ExpressionCompilerDelegate()); bind(SourceLineRowFactory.class).toInstance(new InMemorySourceLineRowFactory()); bind(ServerEngine.class).to(ServerEngineImpl.class); bind(OperationResultVisitor.class).to(OperationEngine.class); bind(ServerEventDispatcher.class).asEagerSingleton(); bind(EventPump.class).asEagerSingleton(); bind(EventSink.class).to(ServerEventDispatcher.class); WampRouter wampRouter = configureWampRouter(); bind(WampRouter.class).toInstance(wampRouter); bind(WampClient.class).toInstance(configureWampClient(wampRouter)); }
From source file:com.strandls.alchemy.webservices.common.json.ExceptionObjectMapperModule.java
/** * Binding for throwable exception mapper. * * @param mapper//from www. j a v a 2 s .c om * @return */ @Provides @Singleton @ThrowableObjectMapper @Inject public ObjectMapper getExceptionObjectMapper(final ObjectMapper mapper, final RestInterfaceAnalyzer restInterfaceAnalyzer, final JavaTypeQueryHandler typeQueryHandler) { // can't copy owing to bug - // https://github.com/FasterXML/jackson-databind/issues/245 final ObjectMapper exceptionMapper = mapper; exceptionMapper.registerModule(new SimpleModule() { /** * The serial version id. */ private static final long serialVersionUID = 1L; /* * (non-Javadoc) * @see * com.fasterxml.jackson.databind.module.SimpleModule#setupModule * (com.fasterxml.jackson.databind.Module.SetupContext) */ @Override public void setupModule(final SetupContext context) { // find exceptions thrown by webservices final Set<Class<?>> serviceClasses = typeQueryHandler.getTypesAnnotatedWith(ALCHEMY_SERVICE_PACKAGE, Path.class); final Set<Class<?>> exceptionsUsed = new HashSet<Class<?>>(); for (final Class<?> serviceClass : serviceClasses) { // get hold of all rest methods and hence exception try { final Set<Method> restMethods = restInterfaceAnalyzer.analyze(serviceClass) .getMethodMetaData().keySet(); for (final Method method : restMethods) { for (final Class<?> exceptionClass : method.getExceptionTypes()) { exceptionsUsed.add(exceptionClass); } } } catch (final NotRestInterfaceException e) { log.error("Error geting exception classes for methods from {}", serviceClass); throw new RuntimeException(e); } } // add the mixin to all jaxrs classes as well. exceptionsUsed .addAll(typeQueryHandler.getSubTypesOf(JAVAX_WS_RS_PACKAGE, WebApplicationException.class)); for (final Class<?> exceptionClass : exceptionsUsed) { // add a mixin to prevent server stack trace from showing up // to the client. log.debug("Applied mixin mask to {}", exceptionClass); context.setMixInAnnotations(exceptionClass, ThrowableMaskMixin.class); } } }); exceptionMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); return exceptionMapper; }
From source file:com.logsniffer.config.BeanConfigFactoryManager.java
@SuppressWarnings("unchecked") @PostConstruct/* w ww .j ava2s .c om*/ private void initJsonMapper() { final SimpleModule module = new SimpleModule(); module.setDeserializerModifier(new BeanDeserializerModifier() { @Override public JsonDeserializer<?> modifyDeserializer(final DeserializationConfig config, final BeanDescription beanDesc, final JsonDeserializer<?> deserializer) { if (ConfiguredBean.class.isAssignableFrom(beanDesc.getBeanClass())) { return new ConfiguredBeanDeserializer(deserializer); } return deserializer; } }); jsonMapper.registerModule(module); if (postConstructors != null) { for (final BeanPostConstructor<?> bpc : postConstructors) { mappedPostConstrucors.put(bpc.getClass(), bpc); } } // Register sub beans final ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider( false); final AssignableTypeFilter filter4configBenas = new AssignableTypeFilter(ConfiguredBean.class); scanner.addIncludeFilter(filter4configBenas); for (final BeanDefinition bd : scanner.findCandidateComponents("com.logsniffer")) { try { final Class<? extends ConfiguredBean> clazz = (Class<? extends ConfiguredBean>) Class .forName(bd.getBeanClassName()); final JsonTypeName jsonNameAnnotation = clazz.getAnnotation(JsonTypeName.class); final List<String> names = new ArrayList<String>(); configBeanNames.put(clazz, names); if (jsonNameAnnotation != null) { names.add(jsonNameAnnotation.value()); if (jsonNameAnnotation.deprecated() != null) { for (final String dep : jsonNameAnnotation.deprecated()) { names.add(dep); } } } names.add(clazz.getSimpleName()); logger.debug("Registered JSON type {} for following names: {}", clazz, names); } catch (final ClassNotFoundException e) { logger.warn("Failed to register JSON type name for " + bd.getBeanClassName(), e); } } }
From source file:org.restexpress.serialization.json.JacksonJsonProcessor.java
public JacksonJsonProcessor(String format, boolean shouldOutboundEncode) { super(format); this.shouldOutboundEncode = shouldOutboundEncode; SimpleModule module = new SimpleModule(); initializeModule(module);/*ww w . ja va 2 s . c om*/ }
From source file:com.virtlink.commons.configuration2.jackson.JacksonConfiguration.java
/** * Initializes a new instance of the {@link JacksonConfiguration} class. * * @param factory The Jackson factory to use. * @param config The configuration whose nodes to copy into this configuration. *///from www. jav a2 s. c o m protected JacksonConfiguration(final JsonFactory factory, final HierarchicalConfiguration<ImmutableNode> config) { super(config); Preconditions.checkNotNull(factory); this.module = new SimpleModule(); this.mapper = new ObjectMapper(factory); this.mapper.registerModule(this.module); }