@POST @Produces(MediaType.APPLICATION_JSON) @Path("/v2/tables") public Response createNewTable(String tableConfiguration) { CombinedConfig config = null; try { config = Deserializer.deserializeFromString(CombinedConfig.class, tableConfiguration); } catch (Exception e) { LOGGER.warn("Caught exception while deserializing the table configuration", e); return Response.serverError().entity(e.getMessage()).type(MediaType.TEXT_PLAIN_TYPE).build(); } if (config == null) { LOGGER.warn("Failed to deserialize the table configuration: {}", tableConfiguration); return Response.serverError().entity("Failed to deserialize the table configuration") .type(MediaType.TEXT_PLAIN_TYPE).build(); } if (config.getSchema() != null) { _resourceManager.addOrUpdateSchema(config.getSchema()); } if (config.getOfflineTableConfig() != null) { _resourceManager.addTable(config.getOfflineTableConfig()); } if (config.getRealtimeTableConfig() != null) { _resourceManager.addTable(config.getRealtimeTableConfig()); } return Response.ok().build(); }
config = Deserializer.deserializeFromString(CombinedConfig.class, tableConfiguration); } catch (Exception e) { LOGGER.warn("Caught exception while deserializing the table configuration", e);
@Test public void testConfigRoundtrip() throws Exception { // Load the config and check it CombinedConfig combinedConfig = CombinedConfigLoader .loadCombinedConfig(new File(getClass().getClassLoader().getResource("test-table-config.conf").getFile())); TableConfig config = combinedConfig.getOfflineTableConfig(); validateLoadedConfig(config); // Shallow serialization (to a map of objects): serialize to a map of objects, deserialize and check config final Map<String, ?> serialize = Serializer.serialize(config); TableConfig newConfig = Deserializer.deserialize(TableConfig.class, serialize, ""); Assert.assertEquals(config, newConfig); validateLoadedConfig(newConfig); // Serialization to a string (which could be written to a file): serialize to a string, deserialize and check config String configAsString = Serializer.serializeToString(config); TableConfig newConfigFromString = Deserializer.deserializeFromString(TableConfig.class, configAsString); if (!config.equals(newConfigFromString)) { System.out.println("Serialized config is = " + configAsString); System.out.println("Expected a config that contains: " + config); } Assert.assertEquals(config, newConfigFromString); validateLoadedConfig(newConfigFromString); }