Permalink
Browse files

Adaptation to Confluence 4

  • Loading branch information...
1 parent fd2b66b commit 7d7b420417a0a7eaf808c4cefd64ee28700a6417 @adutra committed Mar 12, 2012
@@ -0,0 +1,43 @@
+package fr.xebia.confluence2wordpress.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.Scanner;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+import org.apache.commons.codec.binary.Base64InputStream;
+import org.apache.commons.codec.binary.Base64OutputStream;
+import org.apache.commons.io.output.ByteArrayOutputStream;
+
+public class CodecUtils {
+
+ private static final String REGEX = "\\A";
+
+ private static final String UTF_8 = "UTF-8";
+
+ public static String compressAndEncode(String text) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ GZIPOutputStream gzos = new GZIPOutputStream(new Base64OutputStream(baos, true, 0, null));
+ try {
+ gzos.write(text.getBytes(UTF_8));
+ } finally {
+ gzos.close();
+ }
+ return new String(baos.toByteArray(), UTF_8);
+ }
+
+ public static String decodeAndExpand(String encoded) throws IOException {
+ GZIPInputStream gzis =
+ new GZIPInputStream(
+ new Base64InputStream(
+ new ByteArrayInputStream(
+ encoded.getBytes(UTF_8)), false, 0, null));
+ try {
+ String decoded = new Scanner(gzis, UTF_8).useDelimiter(REGEX).next();
+ return decoded;
+ } finally {
+ gzis.close();
+ }
+ }
+}
@@ -0,0 +1,41 @@
+/**
+ * Copyright 2011 Alexandre Dutra
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package fr.xebia.confluence2wordpress.util;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerationException;
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.codehaus.jackson.map.ObjectMapper;
+
+/**
+ * @author Alexandre Dutra
+ *
+ */
+public class JsonUtils {
+
+ private static final ObjectMapper mapper = new ObjectMapper();
+
+ public static <T> T unmarshal(String json, Class<T> clazz) throws JsonParseException, JsonMappingException, IOException {
+ return mapper.readValue(json, clazz);
+ }
+
+ public static <T> String marshal(T bean) throws JsonGenerationException, JsonMappingException, IOException {
+ return mapper.writeValueAsString(bean);
+ }
+
+}
@@ -0,0 +1,17 @@
+package fr.xebia.confluence2wordpress.util;
+import java.io.IOException;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class CodecUtilsTest {
+
+ private String text = "azertyuiopqsdfghjklmù&é\"'(-è_çà)=";
+
+ @Test
+ public void test() throws IOException {
+ String encoded = CodecUtils.compressAndEncode(text);
+ String actual = CodecUtils.decodeAndExpand(encoded);
+ Assert.assertEquals(text, actual);
+ }
+}

0 comments on commit 7d7b420

Please sign in to comment.