blob: d30760730920f4402cb4d0392356dc275209f902 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Roman Grigoriadi
******************************************************************************/
package org.eclipse.persistence.json.bind.defaultmapping.specific;
import org.eclipse.persistence.json.bind.TestTypeToken;
import org.junit.Test;
import javax.json.bind.Jsonb;
import javax.json.bind.JsonbBuilder;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.assertEquals;
/**
* Tests calling JSONB with {@link java.util.stream.Stream} and {@link Readable}
*
* @author Roman Grigoriadi
*/
public class JsonStreamsTest {
private static final String CHARSET = "UTF8";
private Jsonb jsonb = JsonbBuilder.create();
@Test
public void testUnmarshall() throws Exception {
String json = "{\"key1\":\"value1\",\"key2\":\"value2\"}";
Map<String, String> result = jsonb.fromJson(new InputStreamReader(new ByteArrayInputStream(json.getBytes(CHARSET)), Charset.forName(CHARSET)), new TestTypeToken<HashMap<String, String>>(){}.getType());
assertMapValues(result);
result = jsonb.fromJson(new ByteArrayInputStream(json.getBytes(CHARSET)), new TestTypeToken<HashMap<String, String>>() {}.getType());
assertMapValues(result);
}
@Test
public void testMarshall() throws Exception {
String expected = "{\"key1\":\"value1\",\"key2\":\"value2\"}";
int len = expected.getBytes(CHARSET).length;
Map<String, String> strMap = new HashMap<>();
strMap.put("key1", "value1");
strMap.put("key2", "value2");
ByteArrayOutputStream baos = new ByteArrayOutputStream(len);
jsonb.toJson(strMap, baos);
assertEquals(expected, baos.toString(CHARSET));
baos = new ByteArrayOutputStream(len);
OutputStreamWriter writer = new OutputStreamWriter(baos, Charset.forName(CHARSET));
jsonb.toJson(strMap, writer);
writer.close();
assertEquals(expected, baos.toString(CHARSET));
}
private void assertMapValues(Map<String, String> result) {
assertEquals(2, result.size());
assertEquals("value1", result.get("key1"));
assertEquals("value2", result.get("key2"));
}
}