r1412 - in xwiki/trunk: . core/src/main/java/com/xpn/xwiki/plugin core/src/main/java/com/xpn/xwiki/plugin/zipexplorer src/test/java/com/xpn/xwiki/plugin src/test/java/com/xpn/xwiki/plugin/zipexplorer

Jeremi Joslin jeremi at users.forge.objectweb.org
Fri Oct 20 03:29:05 CEST 2006


Author: jeremi
Date: 2006-10-20 03:28:58 +0200 (Fri, 20 Oct 2006)
New Revision: 1412

Added:
   xwiki/trunk/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/
   xwiki/trunk/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPlugin.java
   xwiki/trunk/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPluginAPI.java
   xwiki/trunk/src/test/java/com/xpn/xwiki/plugin/zipexplorer/
   xwiki/trunk/src/test/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerTest.java
Modified:
   xwiki/trunk/xwiki.ipr
   xwiki/trunk/xwiki.iws
Log:
[GELC]
* add the zipExplorerPlugin made by Rave



Added: xwiki/trunk/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPlugin.java
===================================================================
--- xwiki/trunk/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPlugin.java	2006-10-20 01:06:04 UTC (rev 1411)
+++ xwiki/trunk/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPlugin.java	2006-10-20 01:28:58 UTC (rev 1412)
@@ -0,0 +1,258 @@
+/*
+ * Copyright 2006, XpertNet SARL, and individual contributors as indicated
+ * by the contributors.txt.
+ *
+ * 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.
+ *
+ * @author ravenees
+ */
+package com.xpn.xwiki.plugin.zipexplorer;
+
+import com.xpn.xwiki.plugin.XWikiDefaultPlugin;
+import com.xpn.xwiki.plugin.XWikiPluginInterface;
+import com.xpn.xwiki.cache.api.XWikiCache;
+import com.xpn.xwiki.XWikiContext;
+import com.xpn.xwiki.XWikiException;
+import com.xpn.xwiki.api.Document;
+import com.xpn.xwiki.api.Api;
+import com.xpn.xwiki.api.Attachment;
+import com.xpn.xwiki.doc.XWikiAttachment;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipEntry;
+import java.util.Properties;
+import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
+
+
+public class ZipExplorerPlugin extends XWikiDefaultPlugin {
+
+    private XWikiCache zipCache;
+    private int capacity = 50;
+    private static final Log log = LogFactory.getLog(ZipExplorerPlugin.class);
+
+    /**
+     * Constructor
+     */
+    public ZipExplorerPlugin(String name, String className, XWikiContext context) {
+        super(name, className, context);
+        init(context);
+    }
+
+     /**
+     *
+     * */
+     public Api getPluginApi(XWikiPluginInterface plugin, XWikiContext context) {
+        return new ZipExplorerPluginAPI((ZipExplorerPlugin) plugin, context);
+    }
+
+    /**
+     *
+     * */
+    public void initCache(XWikiContext context) {
+        String capacityParam = "";
+        try {
+            capacityParam = context.getWiki().Param("xwiki.plugin.zip.cache.capacity");
+            if ((capacityParam != null) && (!capacityParam.equals(""))) {
+                capacity = Integer.parseInt(capacityParam);
+            }
+        } catch (NumberFormatException e) {
+            if (log.isErrorEnabled())
+                log.error("Error in ZipPlugin reading capacity: " + capacityParam, e);
+        }
+
+        Properties props = new Properties();
+        props.put("cache.memory", "true");
+        props.put("cache.unlimited.disk", "true");
+        props.put("cache.persistence.overflow.only", "false");
+        props.put("cache.blocking", "false");
+        props.put("cache.persistence.class", "com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener");
+        props.put("cache.path", "temp/imageCache");
+
+        try {
+            zipCache = context.getWiki().getCacheService().newLocalCache(props, capacity);
+        } catch (XWikiException e) {
+        }
+    }
+
+
+    /**
+     * @return the file name from the URI
+     */
+    public String getFileName(String path, String action) {
+        path = path.substring(path.indexOf("/" + action));
+        int pos = 0;
+        for (int i = 0; i < 4; i++) {
+            pos = path.indexOf("/", pos + 1);
+        }
+        return path.substring(path.lastIndexOf("/") + 1, path.length());
+    }
+
+    /**
+     * @return the extries in the zip file as xwiki attachment
+     */
+    public XWikiAttachment downloadAttachment(XWikiAttachment attachment, XWikiContext context) {
+
+        String URL = context.getRequest().getRequestURI();
+        String filename = getFileName(URL, context.getAction().trim());
+        XWikiAttachment newAttachment = null;
+
+        if (zipCache == null)
+            initCache(context);
+
+        newAttachment = new XWikiAttachment();
+        newAttachment.setDoc(attachment.getDoc());
+        newAttachment.setAuthor(attachment.getAuthor());
+        newAttachment.setDate(attachment.getDate());
+
+        try {
+
+            byte[] stream = attachment.getContent(context);
+            ByteArrayInputStream bais = new ByteArrayInputStream(stream);
+            ZipInputStream zis = new ZipInputStream(bais);
+            ZipEntry entry;
+
+            while ((entry = zis.getNextEntry()) != null) {
+
+                String entryName = entry.getName();
+                entryName = entryName.substring(entryName.lastIndexOf("/") + 1, entryName.length()).trim();
+
+                if (entryName.equals(filename)) {
+                    newAttachment.setFilename(entryName);
+                    byte[] data = readFromInputStream(zis);
+                    newAttachment.setFilesize(data.length);
+                    newAttachment.setContent(data);
+                    break;
+                }
+            }
+
+        } catch (XWikiException e) {
+            e.printStackTrace();
+        }
+
+        catch (IOException e) {
+            e.printStackTrace();
+        }
+        return newAttachment;
+    }
+
+
+    /**
+     * @return the content of an entry in the zip file
+     */
+    private byte[] readFromInputStream(InputStream is) throws IOException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        byte[] data = new byte[4096];
+        StringBuffer buffer = new StringBuffer();
+        int count;
+        while ((count = is.read(data, 0, 4096)) != -1) {
+            baos.write(data);
+        }
+        return baos.toByteArray();
+    }
+
+
+    List getFileList(Document doc, String attachmentName, XWikiContext context) {
+
+        List zipList = null;
+
+        if (attachmentName.endsWith(".zip")) {
+
+            Attachment attachment = null;
+            List attachList = doc.getAttachmentList();
+            Iterator itr = attachList.iterator();
+
+            while (itr.hasNext()) {
+                attachment = (Attachment)itr.next();
+                if (attachment.getFilename().equals(attachmentName)) {
+                    break;
+                }
+            }
+
+            zipList = new ArrayList();
+            byte[] stream;
+
+            try {
+                stream = attachment.getContent();
+                ByteArrayInputStream bais = new ByteArrayInputStream(stream);
+                ZipInputStream zis = new ZipInputStream(bais);
+                ZipEntry entry;
+
+                while ((entry = zis.getNextEntry()) != null) {
+                    zipList.add(entry.getName());
+                }
+
+            } catch (XWikiException e) {
+                e.printStackTrace();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+        return zipList;
+    }
+
+    String getFileLink(Document doc, String attachmentName, String fileName, XWikiContext context) {
+
+        String link = null;
+
+        if (attachmentName.endsWith(".zip")) {
+            Attachment attachment = null;
+            List attachList = doc.getAttachmentList();
+            Iterator itr = attachList.iterator();
+
+            while (itr.hasNext()) {
+                attachment = (Attachment) itr.next();
+                if (attachment.getFilename().equals(attachmentName)) {
+                    break;
+                }
+            }
+
+            byte[] stream;
+
+            try {
+
+                stream = attachment.getContent();
+                ByteArrayInputStream bais = new ByteArrayInputStream(stream);
+                ZipInputStream zis = new ZipInputStream(bais);
+                ZipEntry entry;
+                String fileCaption = null;
+
+                while ((entry = zis.getNextEntry()) != null) {
+                    String entryName = entry.getName();
+                    fileCaption = entryName.substring(entryName.lastIndexOf("/") + 1, entryName.length());
+                    if (fileCaption.equalsIgnoreCase(fileName)) {
+                        break;
+                    }
+                }
+                link = doc.getURL("download")+"/"+fileCaption;
+                //link = link.substring(0,link.indexOf("download/"))+fileCaption;
+            } catch (XWikiException e) {
+                //e.printStackTrace();
+            } catch (IOException e) {
+                //e.printStackTrace();
+            }
+        }
+        return link;
+    }
+}


Property changes on: xwiki/trunk/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPlugin.java
___________________________________________________________________
Name: svn:executable
   + *

Added: xwiki/trunk/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPluginAPI.java
===================================================================
--- xwiki/trunk/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPluginAPI.java	2006-10-20 01:06:04 UTC (rev 1411)
+++ xwiki/trunk/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPluginAPI.java	2006-10-20 01:28:58 UTC (rev 1412)
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2006, XpertNet SARL, and individual contributors as indicated
+ * by the contributors.txt.
+ *
+ * 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.
+ *
+ * @author ravenees
+ */
+package com.xpn.xwiki.plugin.zipexplorer;
+
+import com.xpn.xwiki.XWikiContext;
+import com.xpn.xwiki.api.Api;
+import com.xpn.xwiki.api.Document;
+import com.xpn.xwiki.doc.XWikiAttachment;
+
+import java.util.List;
+
+
+public class ZipExplorerPluginAPI extends Api {
+
+    ZipExplorerPlugin plugin;
+
+    public ZipExplorerPluginAPI(ZipExplorerPlugin plugin, XWikiContext context) {
+        super(context);
+        this.plugin = plugin;
+    }
+
+    public XWikiAttachment downloadAttachment(XWikiAttachment attachment) {
+        return this.plugin.downloadAttachment(attachment, context);
+    }
+
+    public List getFileList(Document doc, String attachmentName) {
+        return this.plugin.getFileList(doc, attachmentName, context);
+    }
+
+    public String getFileLink(Document doc, String attachmentName, String fileName) {
+        return this.plugin.getFileLink(doc, attachmentName, fileName, context);
+    }
+}


Property changes on: xwiki/trunk/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPluginAPI.java
___________________________________________________________________
Name: svn:executable
   + *

Added: xwiki/trunk/src/test/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerTest.java
===================================================================
--- xwiki/trunk/src/test/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerTest.java	2006-10-20 01:06:04 UTC (rev 1411)
+++ xwiki/trunk/src/test/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerTest.java	2006-10-20 01:28:58 UTC (rev 1412)
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2006, XpertNet SARL, and individual contributors as indicated
+ * by the contributors.txt.
+ *
+ * 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.
+ *
+ * @author ravenees
+ */
+package com.xpn.xwiki.test.plugin.zipexplorer;
+
+import com.xpn.xwiki.XWikiException;
+import com.xpn.xwiki.api.Document;
+import com.xpn.xwiki.doc.XWikiAttachment;
+import com.xpn.xwiki.doc.XWikiDocument;
+import com.xpn.xwiki.plugin.zipexplorer.ZipExplorerPluginAPI;
+import com.xpn.xwiki.test.HibernateTestCase;
+import com.xpn.xwiki.web.XWikiServletURLFactory;
+
+import java.io.ByteArrayOutputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+public class ZipExplorerTest extends HibernateTestCase {
+
+    String zipfilename = "test.zip";
+    String author = "XWiki.LudovicDubost";
+    String parent = "Main.WebHome";
+    String content = "Hello 1\n" + "<Hello> 2\n" + "Hello 3";
+
+    String filename1 = "test.doc";
+    String filename2 = "test.txt";
+
+    XWikiAttachment attachment;
+    XWikiDocument doc;
+    Document maindoc;
+
+    List myExpectedList;
+
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        getXWiki().getPluginManager().addPlugin("zipexplorer", "com.xpn.xwiki.plugin.zipexplorer.ZipExplorerPlugin", getXWikiContext());
+        getXWikiContext().setURLFactory(new XWikiServletURLFactory(new URL("http://www.xwiki.org/"), "xwiki/", "bin/"));
+    }
+
+    public void init() {
+        doc = new XWikiDocument("Main", "ZipExplorerTest");
+        doc.setContent(content);
+        doc.setAuthor(author);
+        doc.setParent(parent);
+
+
+        myExpectedList = new ArrayList();
+        myExpectedList.add(filename1);
+        myExpectedList.add(filename2);
+
+
+        try {
+
+            attachment = new XWikiAttachment(doc, zipfilename);
+
+            String attachcontent1 = "Hi i'm here";
+            byte[] stream = attachcontent1.getBytes();
+
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            ZipOutputStream zos = new ZipOutputStream(baos);
+
+            /* Each is the entry to the zip file */
+
+            ZipEntry zipe = new ZipEntry(filename1);
+            zos.putNextEntry(zipe);
+            zos.write(stream, 0, stream.length);
+
+            zipe = new ZipEntry(filename2);
+            zos.putNextEntry(zipe);
+            zos.write(stream, 0, stream.length);
+
+            zos.closeEntry();
+
+            attachment.setContent(baos.toByteArray());
+            doc.saveAttachmentContent(attachment, context);
+
+            doc.getAttachmentList().add(attachment);
+            xwiki.saveDocument(doc, context);
+            maindoc = new Document(doc, context);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void testZipExplorerTest() throws XWikiException {
+        init();
+        ZipExplorerPluginAPI zpa = (ZipExplorerPluginAPI) xwiki.getPluginApi("zipexplorer", context);
+        compareList(myExpectedList, zpa.getFileList(maindoc, attachment.getFilename()));
+        assertEquals("/xwiki/bin/download/Main/ZipExplorerTest/" + filename1,zpa.getFileLink(maindoc, attachment.getFilename(), filename1));
+    }
+
+    public void compareList(List myExpectedList, List myResult){
+        assertEquals(myExpectedList.size(), myResult.size());
+        Iterator it = myResult.iterator();
+        while(it.hasNext()){
+            Object value = it.next();
+            assertTrue(myExpectedList.contains(value));
+        }
+    }
+}


Property changes on: xwiki/trunk/src/test/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerTest.java
___________________________________________________________________
Name: svn:executable
   + *

Modified: xwiki/trunk/xwiki.ipr
===================================================================
--- xwiki/trunk/xwiki.ipr	2006-10-20 01:06:04 UTC (rev 1411)
+++ xwiki/trunk/xwiki.ipr	2006-10-20 01:28:58 UTC (rev 1412)
@@ -577,6 +577,7 @@
         <root url="jar://$PROJECT_DIR$/lib/oscache-2.3.2-xwiki.jar!/" />
         <root url="jar://$PROJECT_DIR$/lib/jgroups-2.2.9.3.jar!/" />
         <root url="jar://$PROJECT_DIR$/lib/concurrent.jar!/" />
+        <root url="jar://$PROJECT_DIR$/lib/ehcache-1.1.jar!/" />
       </CLASSES>
       <JAVADOC />
       <SOURCES />

Modified: xwiki/trunk/xwiki.iws
===================================================================
--- xwiki/trunk/xwiki.iws	2006-10-20 01:06:04 UTC (rev 1411)
+++ xwiki/trunk/xwiki.iws	2006-10-20 01:28:58 UTC (rev 1412)
@@ -31,13 +31,7 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" name="Default" comment="">
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/web/templates/macros.vm" afterPath="$PROJECT_DIR$/src/main/web/templates/macros.vm" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/xwiki.ipr" afterPath="$PROJECT_DIR$/xwiki.ipr" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/xwikibase.iml" afterPath="$PROJECT_DIR$/xwikibase.iml" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/XWiki.java" afterPath="$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/XWiki.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/xwiki.iws" afterPath="$PROJECT_DIR$/xwiki.iws" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/api/Document.java" afterPath="$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/api/Document.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/api/XWiki.java" afterPath="$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/api/XWiki.java" />
     </list>
   </component>
   <component name="ChangeListSynchronizer" />
@@ -688,21 +682,52 @@
       <file leaf-file-name="XWikiBatcherStats.java" pinned="false" current="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/store/XWikiBatcherStats.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="37" column="13" selection-start="1277" selection-end="1277" vertical-scroll-proportion="-2.253012">
+            <state line="37" column="13" selection-start="1277" selection-end="1277" vertical-scroll-proportion="-1.564257">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="XWiki.java" pinned="false" current="true" current-in-tab="true">
+      <file leaf-file-name="XWiki.java" pinned="false" current="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/XWiki.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="4205" column="18" selection-start="166547" selection-end="166564" vertical-scroll-proportion="0.6583851">
+            <state line="4205" column="18" selection-start="166547" selection-end="166564" vertical-scroll-proportion="1.36853">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
+      <file leaf-file-name="ZipExplorerTest.java" pinned="false" current="true" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/test/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerTest.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="39" column="13" selection-start="1488" selection-end="1488" vertical-scroll-proportion="-1.0559006">
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="ZipExplorerPluginAPI.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPluginAPI.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="29" column="0" selection-start="1118" selection-end="1118" vertical-scroll-proportion="0.27108434">
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="ZipExplorerPlugin.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPlugin.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="33" column="45" selection-start="1393" selection-end="1393" vertical-scroll-proportion="0.4037267">
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
     </leaf>
   </component>
   <component name="FindManager">
@@ -904,9 +929,13 @@
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/core" />
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
       </PATH>
       <PATH>
         <PATH_ELEMENT>
@@ -922,17 +951,21 @@
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/core" />
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/core/src" />
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/core/src/main" />
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test/java" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test/java/com/xpn/xwiki" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
       </PATH>
       <PATH>
         <PATH_ELEMENT>
@@ -948,21 +981,33 @@
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/core" />
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/core/src" />
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/core/src/main" />
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test/java" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/core/src/main/java" />
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test/java/com/xpn/xwiki" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test/java/com/xpn/xwiki/plugin" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test/java/com/xpn/xwiki/plugin/zipexplorer" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiClass:ZipExplorerTest" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
+        </PATH_ELEMENT>
       </PATH>
       <PATH>
         <PATH_ELEMENT>
@@ -970,9 +1015,33 @@
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="xwiki" />
+          <option name="myItemId" value="xwikibase" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
         </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test/java" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test/java/com/xpn/xwiki" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/test/java/com/xpn/xwiki/plugin" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
       </PATH>
       <PATH>
         <PATH_ELEMENT>
@@ -980,13 +1049,17 @@
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="xwiki" />
+          <option name="myItemId" value="xwikibase" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/main/web" />
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
       </PATH>
       <PATH>
         <PATH_ELEMENT>
@@ -994,18 +1067,54 @@
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="xwiki" />
+          <option name="myItemId" value="xwikibase" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/main/web" />
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/src/main/web/templates" />
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/core" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
       </PATH>
+      <PATH>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="xwiki.ipr" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="xwikibase" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/core/src" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/core/src/main" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+      </PATH>
+      <PATH>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="xwiki.ipr" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="xwiki" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
+        </PATH_ELEMENT>
+      </PATH>
     </subPane>
   </component>
   <component name="ProjectReloadState">
@@ -1092,24 +1201,30 @@
     <option name="referencePos" value="0" />
   </component>
   <component name="RestoreUpdateTree" />
-  <component name="RunManager" selected="Tomcat Server.Tomcat 5.0 2">
-    <tempConfiguration default="false" name="XWikiDocumentTest" type="JUnit" factoryName="JUnit" enabled="false" merge="false">
-      <pattern value="com.xpn.xwiki.test.*" />
+  <component name="RunManager" selected="JUnit.ZipExplorerTest">
+    <tempConfiguration default="false" name="ZipExplorerTest" type="JUnit" factoryName="JUnit" enabled="false" merge="false">
+      <pattern value="com.xpn.xwiki.test.plugin.zipexplorer.*" />
       <module name="xwiki" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
-      <option name="ALTERNATIVE_JRE_PATH" />
-      <option name="PACKAGE_NAME" value="com.xpn.xwiki.test" />
-      <option name="MAIN_CLASS_NAME" value="com.xpn.xwiki.test.XWikiDocumentTest" />
-      <option name="METHOD_NAME" />
+      <option name="ALTERNATIVE_JRE_PATH" value="" />
+      <option name="PACKAGE_NAME" value="com.xpn.xwiki.plugin.zipexplorer" />
+      <option name="MAIN_CLASS_NAME" value="com.xpn.xwiki.test.plugin.zipexplorer.ZipExplorerTest" />
+      <option name="METHOD_NAME" value="" />
       <option name="TEST_OBJECT" value="class" />
-      <option name="VM_PARAMETERS" />
-      <option name="PARAMETERS" />
-      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="VM_PARAMETERS" value="" />
+      <option name="PARAMETERS" value="" />
+      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/build/xwikibase_test" />
       <option name="ADDITIONAL_CLASS_PATH" />
       <option name="TEST_SEARCH_SCOPE">
         <value defaultName="wholeProject" />
       </option>
+      <RunnerSettings RunnerId="Debug">
+        <option name="DEBUG_PORT" value="56417" />
+        <option name="TRANSPORT" value="0" />
+        <option name="LOCAL" value="true" />
+      </RunnerSettings>
       <RunnerSettings RunnerId="Run" />
+      <ConfigurationWrapper RunnerId="Debug" />
       <ConfigurationWrapper RunnerId="Run" />
       <method>
         <option name="Make" value="true" />
@@ -2612,7 +2727,7 @@
   </component>
   <component name="ToolWindowManager">
     <frame x="0" y="25" width="1400" height="1000" extended-state="1" />
-    <editor active="true" />
+    <editor active="false" />
     <layout>
       <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="3" />
       <window_info id="IDEtalk" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="3" />
@@ -2625,7 +2740,7 @@
       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="10" />
       <window_info id="CVS" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3409091" order="18" />
       <window_info id="Checkstyle" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="8" />
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32985073" order="0" x="-87" y="100" width="469" height="491" />
+      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32985073" order="0" x="-87" y="100" width="469" height="491" />
       <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3458283" order="1" />
       <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.22168285" order="1" />
       <window_info id="Dependency Cycles" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
@@ -2636,7 +2751,7 @@
       <window_info id="Metrics" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
       <window_info id="Gantt" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
       <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="14" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2394196" order="2" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.44610092" order="2" />
       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.15110683" order="2" />
       <window_info id="File View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="10" />
       <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.40038684" order="0" />
@@ -2772,9 +2887,9 @@
   <component name="com.intellij.ide.util.scopeChooser.ScopeChooserConfigurable" proportions="" version="1">
     <option name="myLastEditedConfigurable" />
   </component>
-  <component name="com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectRootMasterDetailsConfigurable" proportions="0.36125,0.5" version="1">
+  <component name="com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectRootMasterDetailsConfigurable" proportions="0.36125" version="1">
     <option name="myPlainMode" value="false" />
-    <option name="myLastEditedConfigurable" value="xwikibase" />
+    <option name="myLastEditedConfigurable" value="Hibernate" />
   </component>
   <component name="com.intellij.profile.ui.ErrorOptionsConfigurable" proportions="" version="1">
     <option name="myLastEditedConfigurable" />
@@ -2789,34 +2904,6 @@
     <option name="multicastPort" value="3274" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/src/test/java/com/xpn/xwiki/test/ClassesTest.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="240" column="43" selection-start="11420" selection-end="11420" vertical-scroll-proportion="0.7549505">
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/objects/classes/PropertyClass.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="368" column="34" selection-start="12279" selection-end="12279" vertical-scroll-proportion="0.8292079">
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/java/com/xpn/xwiki/test/XWikiTest.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="139" column="17" selection-start="7760" selection-end="7760" vertical-scroll-proportion="0.018564356">
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="2484" column="0" selection-start="89037" selection-end="89037" vertical-scroll-proportion="0.018564356">
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/store/XWikiCacheStore.java">
       <provider selected="true" editor-type-id="text-editor">
         <state line="256" column="0" selection-start="10403" selection-end="10403" vertical-scroll-proportion="0.018564356">
@@ -2886,18 +2973,50 @@
     </entry>
     <entry file="file://$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/store/XWikiBatcherStats.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="37" column="13" selection-start="1277" selection-end="1277" vertical-scroll-proportion="-2.253012">
+        <state line="37" column="13" selection-start="1277" selection-end="1277" vertical-scroll-proportion="-1.564257">
           <folding />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/XWiki.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="4205" column="18" selection-start="166547" selection-end="166564" vertical-scroll-proportion="0.6583851">
+        <state line="4205" column="18" selection-start="166547" selection-end="166564" vertical-scroll-proportion="1.36853">
           <folding />
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPluginAPI.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="29" column="0" selection-start="1118" selection-end="1118" vertical-scroll-proportion="0.27108434">
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/core/src/main/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerPlugin.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="33" column="45" selection-start="1393" selection-end="1393" vertical-scroll-proportion="0.4037267">
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$PROJECT_DIR$/lib/hibernate-3.0.3.jar!/org/hibernate/cfg/SettingsFactory.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="28" column="0" selection-start="1636" selection-end="1636" vertical-scroll-proportion="0.8064516">
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/test/java/com/xpn/xwiki/plugin/zipexplorer/ZipExplorerTest.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="39" column="13" selection-start="1488" selection-end="1488" vertical-scroll-proportion="-1.0559006">
+          <folding />
+        </state>
+      </provider>
+    </entry>
   </component>
 </project>
 





More information about the Xwiki-notifications mailing list