/** * Converts JSON string to instance of specified class. If {@code value} is {@code null} or empty, tries to create * new instance of specified class. If it fails returns {@code null} * * @param value * JSON string * @param clazz * specified class * @return new instance or {@code null} if a new instance cannot be created */ public <T extends Serializable> T deserializeOrCreateNew(String value, Class<T> clazz) { if (StringUtils.isEmpty(value)) { T instance; try { instance = clazz.newInstance(); } catch (Exception ex) { instance = null; } return instance; } else { return SerializationFactory.getDeserializer().deserialize(value, clazz); } }
@SuppressWarnings("unchecked") private static ActionReturnValue deserializeReturnValue(String payload, String className) { if (className == null) { return null; } Class<Serializable> retValueClass = (Class<Serializable>) ReflectionUtils.getClassFor(className); return (ActionReturnValue) SerializationFactory.getDeserializer().deserialize(payload, retValueClass); }
@SuppressWarnings("unchecked") private static ActionParametersBase deserializeParameters(String payload, String className) { if (className == null) { return null; } Class<Serializable> actionParamsClass = (Class<Serializable>) ReflectionUtils.getClassFor(className); return (ActionParametersBase) SerializationFactory.getDeserializer().deserialize(payload, actionParamsClass); }
private AdditionalProperties mapAdditionalProperties(ResultSet rs, Provider<?> entity) throws SQLException { switch (entity.getType()) { case EXTERNAL_NETWORK: case OPENSTACK_NETWORK: OpenstackNetworkProviderProperties networkProperties = new OpenstackNetworkProviderProperties(); mapOpenStackProperties(rs, networkProperties); networkProperties.setReadOnly(rs.getBoolean("read_only")); networkProperties.setAutoSync(rs.getBoolean("auto_sync")); networkProperties.setPluginType(rs.getString("plugin_type")); networkProperties.setAgentConfiguration(SerializationFactory.getDeserializer() .deserialize(rs.getString("agent_configuration"), AgentConfiguration.class)); return networkProperties; case OPENSTACK_IMAGE: OpenStackImageProviderProperties imageProperties = new OpenStackImageProviderProperties(); mapOpenStackProperties(rs, imageProperties); return imageProperties; case OPENSTACK_VOLUME: OpenStackVolumeProviderProperties volumeProperties = new OpenStackVolumeProviderProperties(); mapOpenStackProperties(rs, volumeProperties); return volumeProperties; case VMWARE: return SerializationFactory.getDeserializer().deserialize(rs.getString("additional_properties"), VmwareVmProviderProperties.class); case KVM: return SerializationFactory.getDeserializer().deserialize(rs.getString("additional_properties"), KVMVmProviderProperties.class); case XEN: return SerializationFactory.getDeserializer().deserialize(rs.getString("additional_properties"), XENVmProviderProperties.class); default: return null; } }
private void checkJson(String json) { @SuppressWarnings("unchecked") final Map<String, Boolean> map = new JsonObjectDeserializer().deserialize(json, HashMap.class); assertTrue(map.get("success")); }
@Test public void testParameterMapDeserialization() { StringBuilder buf = new StringBuilder(""); buf.append("{"); buf.append("\"NEXT_COMMAND_TYPE\" : [ \"org.ovirt.engine.core.common.action.ActionType\", \"DestroyImage\" ]"); buf.append("}"); Map<String, Serializable> data = new JsonObjectDeserializer().deserialize(buf.toString(), HashMap.class); assertNotNull(data); assertEquals(ActionType.DestroyImage, data.get("NEXT_COMMAND_TYPE")); }
@Override @SuppressWarnings("unchecked") public Provider<?> mapRow(ResultSet rs, int index) throws SQLException { Provider<AdditionalProperties> entity = new Provider<>(); entity.setId(getGuidDefaultEmpty(rs, "id")); entity.setName(rs.getString("name")); entity.setDescription(rs.getString("description")); entity.setUrl(rs.getString("url")); entity.setType(ProviderType.valueOf(rs.getString("provider_type"))); entity.setRequiringAuthentication(rs.getBoolean("auth_required")); entity.setUsername(rs.getString("auth_username")); entity.setPassword(DbFacadeUtils.decryptPassword(rs.getString("auth_password"))); entity.setCustomProperties(SerializationFactory.getDeserializer() .deserialize(rs.getString("custom_properties"), HashMap.class)); entity.setAdditionalProperties(mapAdditionalProperties(rs, entity)); entity.setAuthUrl(rs.getString("auth_url")); entity.setIsUnmanaged(rs.getBoolean("is_unmanaged")); return entity; }
entity.setBridged(rs.getBoolean("bridged")); entity.setQos(hostNetworkQosDao.get(entity.getId())); entity.setLabels(SerializationFactory.getDeserializer().deserialize(rs.getString("labels"), HashSet.class)); entity.setAdPartnerMac(rs.getString("ad_partner_mac"));
@Test public void testEnumDeserialization() { Color color = new JsonObjectDeserializer().deserialize("\"RED\"", Color.class); assertEquals(Color.RED, color); }
@Test public void testEnumDeserializationLiteralDoesNotExist() { Kind kind = new JsonObjectDeserializer().deserialize("\"RED\"", Kind.class); assertNull(kind); }
@Test public void testNullSerialize() { assertNull(new JsonObjectDeserializer().deserialize(null, JsonSerializablePojo.class)); }
@Test public void testDeserializeVdcActionParameters() { assertThrows(SerializationException.class, () -> new JsonObjectDeserializer().deserialize(getVdcActionParamsJson(), ActionParametersBase.class)); }
@Test public void testSerialize() { JsonSerializablePojo serializablePojo = new JsonSerializablePojo(); assertEquals(serializablePojo, new JsonObjectDeserializer().deserialize( serializablePojo.toJsonForm(false), JsonSerializablePojo.class)); }
@Test public void serializable() { String serialized = new JsonObjectSerializer().serialize(vm); VM deserialized = new JsonObjectDeserializer().deserialize(serialized, VM.class); assertEquals(vm, deserialized); } }
@Test public void serializeCreateSnapshotForVmParametersMap() { Map<Guid, Guid> diskToImageIds = new HashMap<>(); diskToImageIds.put(Guid.newGuid(), Guid.newGuid()); CreateSnapshotForVmParameters params = new CreateSnapshotForVmParameters( Guid.newGuid(), "Test", false, new TreeSet<>(diskToImageIds.keySet())); params.setDiskToImageIds(diskToImageIds); JsonObjectSerializer serializer = new JsonObjectSerializer(); String json = serializer.serialize(params); assertTrue(json.length() > 0); JsonObjectDeserializer deserializer = new JsonObjectDeserializer(); CreateSnapshotForVmParameters deserializedParams = deserializer.deserialize(json, CreateSnapshotForVmParameters.class); assertEquals(params.getDiskIds(), deserializedParams.getDiskIds()); }
@Test public void serializeCreateSnapshotForVmParametersMapFailure() { Map<Guid, Guid> diskToImageIds = new HashMap<>(); diskToImageIds.put(Guid.newGuid(), Guid.newGuid()); CreateSnapshotForVmParameters params = new CreateSnapshotForVmParameters( Guid.newGuid(), "Test", false, diskToImageIds.keySet()); params.setDiskToImageIds(diskToImageIds); JsonObjectSerializer serializer = new JsonObjectSerializer(); String json = serializer.serialize(params); assertTrue(json.length() > 0); JsonObjectDeserializer deserializer = new JsonObjectDeserializer(); assertThrows(SerializationException.class, () -> deserializer.deserialize(json, CreateSnapshotForVmParameters.class)); }
@ParameterizedTest @MethodSource("data") public void serializeAndDesrializeEntity(BusinessEntity<?> entity) { String serializedEntity = new JsonObjectSerializer().serialize(entity); assertNotNull(serializedEntity); Serializable deserializedEntity = new JsonObjectDeserializer().deserialize(serializedEntity, entity.getClass()); assertNotNull(deserializedEntity); assertEquals(entity, deserializedEntity); }
@Test public void serializeCollectionsSingletonList() { ManageNetworkClustersParameters params = new ManageNetworkClustersParameters( Collections.singletonList(new NetworkCluster( Guid.newGuid(), Guid.newGuid(), NetworkStatus.NON_OPERATIONAL, false, false, false, false, false, false))); JsonObjectSerializer serializer = new JsonObjectSerializer(); String json = serializer.serialize(params); assertTrue(json.length() > 0); ManageNetworkClustersParameters deserializedParams = new JsonObjectDeserializer().deserialize( json, ManageNetworkClustersParameters.class); assertEquals(params.getExecutionReason(), deserializedParams.getExecutionReason()); }
@Test public void serializeCollectionsSingleton() { ManageNetworkClustersParameters params = new ManageNetworkClustersParameters( Collections.singleton(new NetworkCluster( Guid.createGuidFromString("f455686a-79cc-11e6-8c65-54ee755c6cc7"), Guid.createGuidFromString("f970c5f6-79cc-11e6-bc8f-54ee755c6cc7"), NetworkStatus.NON_OPERATIONAL, false, false, false, false, false, false))); JsonObjectSerializer serializer = new JsonObjectSerializer(); String json = serializer.serialize(params); assertTrue(json.length() > 0); ManageNetworkClustersParameters deserializedParams = new JsonObjectDeserializer().deserialize( json, ManageNetworkClustersParameters.class); assertEquals(params.getExecutionReason(), deserializedParams.getExecutionReason()); }
@Test public void serializeCollectionsSingletonMap() { MoveOrCopyParameters params = new MoveOrCopyParameters(Guid.newGuid(), Guid.newGuid()); params.setImageToDestinationDomainMap( Collections.singletonMap(Guid.createGuidFromString("9edb6526-7ab5-11e6-b829-54ee755c6cc7"), Guid.createGuidFromString("c097a788-7ab5-11e6-849b-54ee755c6cc7"))); JsonObjectSerializer serializer = new JsonObjectSerializer(); String json = serializer.serialize(params); assertTrue(json.length() > 0); MoveOrCopyParameters deserializedParams = new JsonObjectDeserializer().deserialize( json, MoveOrCopyParameters.class); assertEquals(params.getContainerId(), deserializedParams.getContainerId()); assertEquals(params.getExecutionReason(), deserializedParams.getExecutionReason()); }