diff --git a/core/connector/pom.xml b/core/connector/pom.xml
index bba71270728..f574c812a3a 100644
--- a/core/connector/pom.xml
+++ b/core/connector/pom.xml
@@ -120,11 +120,6 @@
com.rometools
rome
-
- io.meeds.core
- exo.core.component.organization.api
- provided
-
io.meeds.commons
commons-component-common
diff --git a/core/core-configuration/pom.xml b/core/core-configuration/pom.xml
index 011df59f016..19e55ab6c2f 100644
--- a/core/core-configuration/pom.xml
+++ b/core/core-configuration/pom.xml
@@ -21,11 +21,6 @@
commons-component-common
runtime
-
- io.meeds.core
- exo.core.component.organization.api
- runtime
-
org.exoplatform.ecms
ecms-core-connector
diff --git a/core/services/pom.xml b/core/services/pom.xml
index 1cbac522c04..fa88e88a883 100644
--- a/core/services/pom.xml
+++ b/core/services/pom.xml
@@ -14,7 +14,7 @@
1.0
All used ecms rest endpoints
- 0.36
+ 0.35
@@ -95,7 +95,7 @@
exo.kernel.component.cache
- io.meeds.kernel
+ org.exoplatform.commons-exo
exo.kernel.component.command
diff --git a/core/services/src/main/java/org/exoplatform/services/compress/CompressData.java b/core/services/src/main/java/org/exoplatform/services/compress/CompressData.java
new file mode 100644
index 00000000000..c450b4dcd67
--- /dev/null
+++ b/core/services/src/main/java/org/exoplatform/services/compress/CompressData.java
@@ -0,0 +1,518 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.services.compress;
+
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.jar.JarEntry;
+import java.util.jar.JarOutputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+/**
+ * Created by The eXo Platform SAS Author : Chung Nguyen
+ * nguyenchung136@yahoo.com Feb 10, 2006
+ */
+public class CompressData
+{
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("exo.kernel.component.common.CompressData");
+
+ private String base_;
+
+ private List datas_ = new ArrayList();
+
+ protected static final int EOF = -1;
+
+ protected static final int BUFFER = 2048;
+
+ public CompressData()
+ {
+
+ }
+
+ public CompressData(String base)
+ {
+ base_ = base;
+ }
+
+ public String getBase()
+ {
+ return base_;
+ }
+
+ public void addFile(String entryName, File file)
+ {
+ try
+ {
+ InputStream is = new FileInputStream(file);
+ datas_.add(new InputStreamDataInstance(entryName, is));
+ }
+ catch (FileNotFoundException e)
+ {
+ LOG.error(e.getLocalizedMessage(), e);
+ }
+ }
+
+ public void addDir(File srcDir)
+ {
+ if (srcDir.isFile())
+ {
+ addFile(srcDir.getName(), srcDir);
+ }
+ else
+ {
+ datas_.add(new FileDataInstance(srcDir.getName(), srcDir));
+ }
+ // create recursive loop to go through all files in the srcDir.....
+ }
+
+ public void addInputStream(String entryName, InputStream is) throws Exception
+ {
+ datas_.add(new InputStreamDataInstance(entryName, is));
+ }
+
+ public void createZipFile(String fileName) throws Exception
+ {
+ File fileZip = new File(fileName + ".zip");
+ FileOutputStream out = new FileOutputStream(fileZip);
+ ZipOutputStream zos = new ZipOutputStream(out);
+ int size = datas_.size();
+ byte InputData[] = new byte[BUFFER];
+ if (size < 0)
+ {
+ throw new Exception("Data size is null");
+ }
+ for (int i = 0; i < size; i++)
+ {
+ DataInstance di = datas_.get(i);
+ if (di instanceof InputStreamDataInstance)
+ {
+ InputStream is = di.getInputStream();
+ zos.putNextEntry(new ZipEntry(di.getEntryName()));
+ int len;
+ while ((len = is.read(InputData)) != EOF)
+ {
+ zos.write(InputData, 0, len);
+ }
+ zos.closeEntry();
+ }
+ else if (di instanceof FileDataInstance)
+ {
+ di.getZipOut(true, zos);
+ }
+ }
+ zos.close();
+ out.close();
+ }
+
+ public void createZip(OutputStream os) throws Exception
+ {
+ int size = datas_.size();
+ ZipOutputStream zos = new ZipOutputStream(os);
+ if (size == 0)
+ throw new Exception("Data is null");
+ for (int i = 0; i < size; i++)
+ {
+ DataInstance di = datas_.get(i);
+ if (di instanceof InputStreamDataInstance)
+ {
+ InputStream is = di.getInputStream();
+ zos.putNextEntry(new ZipEntry(di.getEntryName()));
+ int len;
+ byte InputData[] = new byte[BUFFER];
+ while ((len = is.read(InputData)) != EOF)
+ {
+ zos.write(InputData, 0, len);
+ }
+ zos.closeEntry();
+ }
+ else if (di instanceof FileDataInstance)
+ {
+ di.setType("Zip");
+ InputStream is = di.getInputStream();
+ int len;
+ byte[] data = new byte[BUFFER];
+ while ((len = is.read(data)) != EOF)
+ {
+ os.write(data, 0, len);
+ }
+ is.close();
+ }
+ }
+ zos.close();
+ os.close();
+ }
+
+ public void createJarFile(String fileName) throws Exception
+ {
+ File fileZip = new File(fileName + ".jar");
+ FileOutputStream out = new FileOutputStream(fileZip);
+ JarOutputStream jos = new JarOutputStream(out);
+ int size = datas_.size();
+ if (size < 0)
+ throw new Exception("Data size is null");
+ for (int i = 0; i < size; i++)
+ {
+ DataInstance di = datas_.get(i);
+
+ if (di instanceof InputStreamDataInstance)
+ {
+ String entryName = di.getEntryName();
+ InputStream is = di.getInputStream();
+ jos.putNextEntry(new ZipEntry(entryName));
+ int len;
+ byte InputData[] = new byte[BUFFER];
+ while ((len = is.read(InputData)) != EOF)
+ {
+ jos.write(InputData, 0, len);
+ }
+ jos.closeEntry();
+ }
+ else if (di instanceof FileDataInstance)
+ {
+ di.getJarOut(true, jos);
+ }
+ }
+ jos.close();
+ out.close();
+ }
+
+ public void createJar(OutputStream os) throws Exception
+ {
+ int size = datas_.size();
+ JarOutputStream jos = new JarOutputStream(os);
+ if (size == 0)
+ throw new Exception("Data is null");
+ for (int i = 0; i < size; i++)
+ {
+ DataInstance di = datas_.get(i);
+ if (di instanceof InputStreamDataInstance)
+ {
+ InputStream is = di.getInputStream();
+
+ jos.putNextEntry(new ZipEntry(di.getEntryName()));
+ int len;
+ byte InputData[] = new byte[BUFFER];
+ while ((len = is.read(InputData)) != EOF)
+ {
+ jos.write(InputData, 0, len);
+ }
+ jos.closeEntry();
+ is.close();
+ }
+ else if (di instanceof FileDataInstance)
+ {
+ di.setType("Jar");
+ InputStream is = di.getInputStream();
+ int len;
+ byte[] data = new byte[BUFFER];
+ while ((len = is.read(data)) != EOF)
+ {
+ os.write(data, 0, len);
+ }
+ is.close();
+ }
+ }
+ jos.close();
+ os.close();
+ }
+
+ public void cleanDataInstance()
+ {
+ int count = datas_.size();
+ for (int i = 0; i < count; i++)
+ {
+ datas_.remove(i);
+ }
+ }
+
+ abstract public static class DataInstance
+ {
+ protected String entryName_;
+
+ protected String typeZip_;
+
+ abstract public InputStream getInputStream();
+
+ abstract public void getJarOut(boolean containParent, JarOutputStream jos) throws Exception;
+
+ abstract public void getZipOut(boolean containParent, ZipOutputStream zos) throws Exception;
+
+ public String getEntryName()
+ {
+ return entryName_;
+ }
+
+ public void setType(String typeZip)
+ {
+ typeZip_ = typeZip;
+ }
+
+ public String getType()
+ {
+ return typeZip_;
+ }
+
+ }
+
+ public static class FileDataInstance extends DataInstance
+ {
+ private File file_;
+
+ public FileDataInstance(String entryName, File file)
+ {
+ entryName_ = entryName;
+ file_ = file;
+ }
+
+ @Override
+ public InputStream getInputStream()
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ if (getType().equals("Zip"))
+ {
+ ZipOutputStream zos = new ZipOutputStream(baos);
+ try
+ {
+ getZipOut(true, zos);
+ }
+ catch (Exception e)
+ {
+ LOG.error(e.getLocalizedMessage(), e);
+ }
+ }
+ else
+ {
+ JarOutputStream jos;
+ try
+ {
+ jos = new JarOutputStream(baos);
+ getJarOut(true, jos);
+ }
+ catch (Exception e)
+ {
+ LOG.error(e.getLocalizedMessage(), e);
+ }
+ }
+ InputStream is = new ByteArrayInputStream(baos.toByteArray());
+
+ try
+ {
+ baos.close();
+ }
+ catch (IOException e)
+ {
+ LOG.error(e.getLocalizedMessage(), e);
+ }
+
+ return is;
+ }
+
+ @Override
+ public void getJarOut(boolean containParent, JarOutputStream jos) throws Exception
+ {
+ String path = file_.getAbsolutePath();
+ InputStream bufInput = null;
+ List list = listFile(file_);
+ if (file_.isDirectory())
+ list.remove(file_);
+ if (list == null || list.size() < 1)
+ throw new Exception("nothing in the list");
+ for (File f : list)
+ {
+ StringBuilder filePath = new StringBuilder(f.getAbsolutePath());
+
+ if (f.getAbsolutePath().startsWith(path))
+ {
+ if (containParent && file_.isDirectory())
+ {
+ filePath = new StringBuilder(file_.getName());
+ filePath.append(File.separator);
+ filePath.append(f.getAbsolutePath().substring(path.length() + 1));
+ }
+ else if (file_.isDirectory())
+ {
+ filePath = new StringBuilder(f.getAbsolutePath().substring(path.length() + 1));
+ }
+ else
+ {
+ filePath = new StringBuilder(file_.getName());
+ }
+ }
+
+ if (f.isFile())
+ {
+ bufInput = new FileInputStream(f);
+ }
+ else
+ {
+ filePath.append("/");
+ }
+
+ addToArchive(jos, bufInput, filePath.toString());
+ }
+ }
+
+ private List listFile(File dir)
+ {
+ final List list = new ArrayList();
+ if (dir.isFile())
+ {
+ list.add(dir);
+ return list;
+ }
+ dir.listFiles(new FileFilter()
+ {
+ public boolean accept(File f)
+ {
+ if (f.isDirectory())
+ list.addAll(listFile(f));
+ list.add(f);
+ return true;
+ }
+ });
+ return list;
+ }
+
+ public ZipOutputStream addToArchive(ZipOutputStream zipOutput, InputStream input, String entryName1)
+ throws Exception
+ {
+ byte data[] = new byte[BUFFER];
+ ZipEntry entry = new ZipEntry(entryName1);
+ zipOutput.putNextEntry(entry);
+ if (input != null)
+ {
+ int count;
+ while ((count = input.read(data, 0, BUFFER)) != EOF)
+ zipOutput.write(data, 0, count);
+ }
+ zipOutput.closeEntry();
+ return zipOutput;
+ }
+
+ public JarOutputStream addToArchive(JarOutputStream jarOutput, InputStream input, String entryName1)
+ throws Exception
+ {
+ byte data[] = new byte[BUFFER];
+ JarEntry entry = new JarEntry(entryName1);
+ jarOutput.putNextEntry(entry);
+ if (input != null)
+ {
+ int count;
+ while ((count = input.read(data, 0, BUFFER)) != EOF)
+ jarOutput.write(data, 0, count);
+ }
+ jarOutput.closeEntry();
+ return jarOutput;
+ }
+
+ @Override
+ public void getZipOut(boolean containParent, ZipOutputStream zos) throws Exception
+ {
+ String path = file_.getAbsolutePath();
+ InputStream bufInput = null;
+ List list = listFile(file_);
+ if (file_.isDirectory())
+ list.remove(file_);
+ if (list == null || list.size() < 1)
+ throw new Exception("nothing in the list");
+ for (File f : list)
+ {
+ StringBuilder filePath = new StringBuilder(f.getAbsolutePath());
+
+ if (f.getAbsolutePath().startsWith(path))
+ {
+ if (containParent && file_.isDirectory())
+ {
+ filePath = new StringBuilder(file_.getName());
+ filePath.append(File.separator);
+ filePath.append(f.getAbsolutePath().substring(path.length() + 1));
+ }
+ else if (file_.isDirectory())
+ {
+ filePath = new StringBuilder(f.getAbsolutePath().substring(path.length() + 1));
+ }
+ else
+ {
+ filePath = new StringBuilder(file_.getName());
+ }
+ }
+
+ if (f.isFile())
+ {
+ bufInput = new FileInputStream(f);
+ }
+ else
+ {
+ filePath.append("/");
+ }
+
+ addToArchive(zos, bufInput, filePath.toString());
+ }
+ }
+ }
+
+ public static class InputStreamDataInstance extends DataInstance
+ {
+ private InputStream is_;
+
+ public InputStreamDataInstance(String entryName, InputStream is)
+ {
+ entryName_ = entryName;
+ is_ = is;
+ }
+
+ @Override
+ public InputStream getInputStream()
+ {
+ return is_;
+ }
+
+ @Override
+ public void getJarOut(boolean containParent, JarOutputStream jos) throws Exception
+ {
+
+ }
+
+ @Override
+ public void getZipOut(boolean containParent, ZipOutputStream zos) throws Exception
+ {
+
+ }
+
+ }
+
+}
diff --git a/core/services/src/test/java/org/exoplatform/services/compress/TestCompressData.java b/core/services/src/test/java/org/exoplatform/services/compress/TestCompressData.java
new file mode 100644
index 00000000000..783995e1400
--- /dev/null
+++ b/core/services/src/test/java/org/exoplatform/services/compress/TestCompressData.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.services.compress;
+
+import junit.framework.TestCase;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * Created by The eXo Platform SAS Author : Chung Nguyen
+ * nguyenchung136@yahoo.com Feb 13, 2006
+ */
+public class TestCompressData extends TestCase
+{
+
+ public TestCompressData(String name)
+ {
+ super(name);
+ }
+
+ public void testCompressData() throws Exception
+ {
+ CompressData compress = new CompressData();
+ CompressData compressIS = new CompressData();
+ InputStream in = new FileInputStream("src/test/resources/ZipService.java");
+ InputStream in2 = new FileInputStream("src/test/resources/helper.txt");
+ // ---------- TEST InputStream --------------//
+ compressIS.addInputStream("ZipService.java", in);
+ compressIS.addInputStream("helper.txt", in2);
+ compressIS.createJarFile("target/ZipServiceJar");
+ compressIS.createZipFile("target/ZipServiceZip");
+ in.close();
+ in2.close();
+
+ // ----------- Test with Add File ------------------//
+
+ File file = new File("src/test/resources/ZipService.java");
+ File file2 = new File("src/test/resources/helper.txt");
+ compress.addFile("ZipService.java", file);
+ compress.addFile("helper.txt", file2);
+ compress.createZipFile("target/testZipFile");
+ compress.createJarFile("target/testJarFile");
+ // compress.cleanDataInstance();
+ // --------------- Test thu muc --------------------------------//
+ // TODO what is t?
+ // File folder = new File("/home/exo/setup/tailieu/chung/hcm/images");
+ // File folder1 = new File("/home/exo/setup/tailieu/chung/hcm/xuly");
+ // CompressData compressF = new CompressData();
+ // compressF.addDir(folder);
+ // compressF.addDir(folder1);
+ // compressF.createZipFile("/home/exo/setup/tailieu/chung/hcm/TestZip");
+ // compress.createJarFile("/home/exo/setup/tailieu/chung/hcm/TestJar");
+ }
+
+ /**
+ * Testcase based on http://jira.exoplatform.org/browse/KER-94
+ * @throws Exception
+ */
+ public void testCompressIS() throws Exception
+ {
+
+ CompressData compressData = new CompressData();
+
+ File f1 = new File("src/test/resources/ZipService.java");
+ File f2 = new File("src/test/resources/helper.txt");
+
+ compressData.addFile("ZipService.java", f1);
+ compressData.addFile("helper.txt", f2);
+
+ OutputStream outStream = new FileOutputStream(new File("target/CompressedZipIS.zip"));
+ compressData.createZip(outStream);
+ outStream.close();
+
+ outStream = new FileOutputStream(new File("target/CompressedJarIS.jar"));
+ compressData.createJar(outStream);
+ outStream.close();
+
+ }
+}
diff --git a/core/services/src/test/resources/conf/portal/test-configuration.xml b/core/services/src/test/resources/conf/portal/test-configuration.xml
index b430d1b9744..20b54cb2885 100644
--- a/core/services/src/test/resources/conf/portal/test-configuration.xml
+++ b/core/services/src/test/resources/conf/portal/test-configuration.xml
@@ -30,4 +30,10 @@
+
+
+ org.exoplatform.services.compress.CompressData
+ org.exoplatform.services.compress.CompressData
+
+
diff --git a/core/webui-administration/pom.xml b/core/webui-administration/pom.xml
index 9f574bf3595..1004e59b5f5 100755
--- a/core/webui-administration/pom.xml
+++ b/core/webui-administration/pom.xml
@@ -23,10 +23,6 @@
io.meeds.commons
commons-component-common
-
- io.meeds.core
- exo.core.component.organization.api
-
io.meeds.core
exo.core.component.security.core
diff --git a/core/webui-explorer/pom.xml b/core/webui-explorer/pom.xml
index 50ae84965c5..77d987cd95c 100644
--- a/core/webui-explorer/pom.xml
+++ b/core/webui-explorer/pom.xml
@@ -40,10 +40,6 @@
io.meeds.commons
commons-component-common
-
- io.meeds.core
- exo.core.component.organization.api
-
io.meeds.core
exo.core.component.security.core
diff --git a/core/webui/pom.xml b/core/webui/pom.xml
index 5e0fb6cd26b..3fe2faf1467 100644
--- a/core/webui/pom.xml
+++ b/core/webui/pom.xml
@@ -33,10 +33,6 @@
io.meeds.commons
commons-component-common
-
- io.meeds.core
- exo.core.component.organization.api
-
io.meeds.core
exo.core.component.security.core
diff --git a/ecm-wcm-extension/pom.xml b/ecm-wcm-extension/pom.xml
index a7ca5fdcb2e..67148a191b8 100644
--- a/ecm-wcm-extension/pom.xml
+++ b/ecm-wcm-extension/pom.xml
@@ -41,11 +41,6 @@
commons-component-common
runtime
-
- io.meeds.core
- exo.core.component.organization.api
- runtime
-
org.exoplatform.ecms
ecms-core-publication
diff --git a/ext/authoring/webui/pom.xml b/ext/authoring/webui/pom.xml
index 80919884c43..4b94e07bccd 100644
--- a/ext/authoring/webui/pom.xml
+++ b/ext/authoring/webui/pom.xml
@@ -18,10 +18,6 @@
io.meeds.commons
commons-component-common
-
- io.meeds.core
- exo.core.component.organization.api
-
org.exoplatform.ecms
ecms-core-publication
diff --git a/testsuite/test/pom.xml b/testsuite/test/pom.xml
index 92681c53723..a06cfc381ba 100644
--- a/testsuite/test/pom.xml
+++ b/testsuite/test/pom.xml
@@ -16,10 +16,6 @@
io.meeds.commons
commons-testing
-
- io.meeds.core
- exo.core.component.organization.api
-
io.meeds.core
exo.core.component.security.core