Author: tdraier
Date: Fri Nov 23 19:14:30 2007
New Revision: 19277

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19277&repname=
=3Djahia
Log:
additional cifs file provider

Added:
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/cifs/
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/cifs/CIFSFileNode.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/cifs/CIFSStoreProvider.java
Modified:
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/FileNode.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRFileNodeWrapper.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRStoreProvider.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRStoreService.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/RootFileNode.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/jackrabbit/JackrabbitFileNodeWrapper.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/jackrabbit/JackrabbitStoreProvider.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/=
spring/applicationcontext-services.xml

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/FileNode.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/FileNode.jav=
a&rev=3D19277&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/FileNode.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/FileNode.java Fri Nov 23 19:14:30 2007
@@ -1,27 +1,21 @@
 package org.jahia.services.content;
 =

-import com.jamonapi.Monitor;
-import com.jamonapi.MonitorFactory;
-
-import javax.jcr.*;
-import javax.jcr.nodetype.*;
-import javax.transaction.Status;
-import java.util.*;
-import java.io.InputStream;
-import java.io.IOException;
-
-import org.jahia.api.*;
-import org.jahia.api.Constants;
-import org.jahia.data.fields.JahiaField;
+import org.apache.log4j.Logger;
 import org.jahia.data.containers.JahiaContainer;
+import org.jahia.data.fields.JahiaField;
 import org.jahia.data.files.JahiaFileField;
 import org.jahia.data.files.JahiaFile;
-import org.jahia.bin.Jahia;
-import org.jahia.registries.ServicesRegistry;
-import org.jahia.urls.URI;
 import org.jahia.params.ParamBean;
+import org.jahia.registries.ServicesRegistry;
+import org.jahia.services.usermanager.JahiaUser;
 import org.jahia.spring.aop.interceptor.SilentJamonPerformanceMonitorInter=
ceptor;
-import org.apache.log4j.Logger;
+import org.jahia.bin.Jahia;
+import org.jahia.urls.URI;
+
+import javax.jcr.RepositoryException;
+import javax.transaction.Status;
+import java.io.InputStream;
+import java.util.*;
 =

 /**
  * Created by IntelliJ IDEA.
@@ -43,7 +37,7 @@
     protected static final Logger logger =3D Logger.getLogger(FileNode.cla=
ss);
     private static final Logger monitorLogger =3D Logger.getLogger(SilentJ=
amonPerformanceMonitorInterceptor.class);
 =

-    protected StoreProvider provider;
+    protected JahiaUser user;
 =

     protected Exception exception =3D null;
 =

@@ -54,8 +48,8 @@
             "img", "img", "img", "img", "video", "video", "video", "video"=
, "video", "video",
             "exe", "txt", "rar", "zip"};
 =

-    public FileNode(StoreProvider provider) {
-        this.provider =3D provider;
+    public FileNode(String path, JahiaUser user) {
+        this.user =3D user;
     }
 =

     public boolean beginTransaction() {
@@ -81,6 +75,9 @@
         return Status.STATUS_UNKNOWN;
     }
 =

+    public JahiaUser getUser() {
+        return user;
+    }
 =

     public boolean isValid() {
         return false;
@@ -137,7 +134,59 @@
     }
 =

     public JahiaFileField getJahiaFileField () {
-        return null;
+        JahiaFileField fField;
+        if (isValid()) {
+            String uri;
+            uri =3D getPath();
+            String owner =3D "root:0";
+
+            String contentType =3D "application/binary";
+            int lastDot =3D uri.lastIndexOf(".");
+            if (lastDot > -1) {
+                String mimeType =3D Jahia.getStaticServletConfig().getServ=
letContext().getMimeType(uri.substring(uri.lastIndexOf("/")+1).toLowerCase(=
));
+                if (mimeType !=3D null) {
+                    contentType =3D mimeType;
+                }
+            }
+
+            JahiaFile file =3D new JahiaFile (-1, // filemanager id
+                    -1, // folder id
+                    owner,
+                    uri, // realname
+                    getPath(), // storage name
+                    System.currentTimeMillis(), // modif date
+                    getContentLength(), // size
+                    contentType, // type
+                    getName (), // title
+                    "", // descr
+                    String.valueOf (ServicesRegistry.getInstance ()
+                            .getJahiaVersionService ().getCurrentVersionID=
 ()), // version
+                    JahiaFile.STATE_ACTIVE);
+            fField =3D new JahiaFileField (file, new Properties ());
+            fField.setID (0);
+            URI url =3D new URI ();
+            url.setPath(getUrl());
+            url.setURIStartingAtPath (true);
+            fField.setDownloadUrl (url.toString ());
+        } else {
+            JahiaFile file =3D new JahiaFile (-1, // filemanager id
+                    -1, // folder id
+                    "", // upload user
+                    "", // realname
+                    "", // storage name
+                    0, // modif date
+                    0, // size
+                    (exception =3D=3D null) ? "" : exception.getClass ().g=
etName (), // type
+                    "", // title
+                    "", // descr
+                    String.valueOf (ServicesRegistry.getInstance ()
+                            .getJahiaVersionService ().getCurrentVersionID=
 ()), // version
+                    JahiaFile.STATE_ACTIVE);
+            fField =3D new JahiaFileField (file, new Properties ());
+            fField.setID (-1);
+            fField.setDownloadUrl ("#");
+        }
+        return fField;
     }
 =

     public Exception getException() {
@@ -203,10 +252,6 @@
         return null;
     }
 =

-    public Date getContentLastModifiedAsDate() {
-        return null;
-    }
-
     public Date getCreationDateAsDate() {
         return null;
     }
@@ -238,7 +283,19 @@
     }
 =

     public boolean copyFile(String dest) {
-        return false;
+        FileNode node =3D ServicesRegistry.getInstance().getJCRStoreServic=
e().getFileNode(dest, user);
+        if (isCollection()) {
+            node.createCollection(getName());
+            List l =3D getChildren();
+            for (Iterator iterator =3D l.iterator(); iterator.hasNext();) {
+                FileNode source =3D (FileNode) iterator.next();
+                source.copyFile(dest + "/" + getName());
+            }
+        } else {
+            InputStream is =3D downloadFile();
+            node.uploadFile(getName(), is, getContentType());
+        }
+        return true;
     }
 =

     public boolean deleteFile () {

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/JCRFileNodeWrapper.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/JCRFileNodeW=
rapper.java&rev=3D19277&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRFileNodeWrapper.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRFileNodeWrapper.java Fri Nov 23 19:14:30 2007
@@ -28,6 +28,7 @@
 import org.jahia.data.files.JahiaFileField;
 import org.jahia.params.ParamBean;
 import org.jahia.registries.ServicesRegistry;
+import org.jahia.services.usermanager.JahiaUser;
 import org.jahia.spring.aop.interceptor.SilentJamonPerformanceMonitorInter=
ceptor;
 import org.jahia.urls.URI;
 =

@@ -39,7 +40,6 @@
 import javax.jcr.version.VersionIterator;
 import java.io.IOException;
 import java.io.InputStream;
-import java.lang.reflect.Array;
 import java.security.AccessControlException;
 import java.util.*;
 =

@@ -58,8 +58,8 @@
 =

     protected String[] defaultPerms =3D { "add_node", "set_property", "rem=
ove", "read" };
 =

-    protected JCRFileNodeWrapper(String path, Session session, JCRStorePro=
vider provider) {
-        super(provider);
+    protected JCRFileNodeWrapper(String path, JahiaUser user, Session sess=
ion, JCRStoreProvider provider) {
+        super(path, user);
         this.jcrProvider =3D provider;
         init(path,session);
     }
@@ -211,7 +211,7 @@
         return null;
     }
 =

-    public String uploadFile(String name, final InputStream is, final Stri=
ng contentType) {
+    public String uploadFile(String name, InputStream is, String contentTy=
pe) {
         try {
             if (is !=3D null) {
                 Node file =3D objectNode.addNode(name, Constants.JAHIANT_F=
ILE);
@@ -221,6 +221,9 @@
                 } finally {
                     is.close();
                 }
+                if (contentType =3D=3D null) {
+                    contentType =3D "application/binary";
+                }
                 content.setProperty(Constants.JCR_MIMETYPE, contentType);
                 content.setProperty(Constants.JCR_LASTMODIFIED, Calendar.g=
etInstance());
             }
@@ -262,7 +265,7 @@
                     -1, // folder id
                     owner,
                     uri, // realname
-                    provider.getKey()+":"+uuid, // storage name
+                    jcrProvider.getKey()+":"+uuid, // storage name
                     System.currentTimeMillis(), // modif date
                     getContentLength(), // size
                     contentType, // type
@@ -308,7 +311,7 @@
         }
 =

         try {
-            return provider.getMountPoint() + objectNode.getPath();
+            return jcrProvider.getMountPoint() + objectNode.getPath();
         } catch (RepositoryException e) {
             e.printStackTrace();
         }
@@ -368,7 +371,7 @@
             while (ni.hasNext()) {
                 Node node =3D (Node) ni.nextNode();
                 try {
-                    JCRFileNodeWrapper child =3D jcrProvider.getFileNodeWr=
apper(node.getPath(), session);
+                    JCRFileNodeWrapper child =3D jcrProvider.getFileNodeWr=
apper(node.getPath(), user, session);
                     if (child.getException () =3D=3D null) {
                         list.add (child);
                     }
@@ -633,8 +636,8 @@
         if (exception !=3D null) {
             return false;
         }
-        if (dest.startsWith(provider.getMountPoint())) {
-            dest =3D dest.substring(provider.getMountPoint().length());
+        if (ServicesRegistry.getInstance().getJCRStoreService().getProvide=
r(dest) =3D=3D jcrProvider) {
+            dest =3D dest.substring(jcrProvider.getMountPoint().length());
         } else {
             return false;
         }
@@ -651,10 +654,10 @@
         if (exception !=3D null) {
             return false;
         }
-        if (dest.startsWith(provider.getMountPoint())) {
-            dest =3D dest.substring(provider.getMountPoint().length());
+        if (ServicesRegistry.getInstance().getJCRStoreService().getProvide=
r(dest) =3D=3D jcrProvider) {
+            dest =3D dest.substring(jcrProvider.getMountPoint().length());
         } else {
-            return false;
+            return super.copyFile(dest);
         }
         try {
             workspace.copy(objectNode.getPath(), dest + "/" + objectNode.g=
etName());
@@ -799,7 +802,7 @@
         try {
             Version v =3D objectNode.getVersionHistory().getVersion(name);
             Node frozen =3D v.getNode(Constants.JCR_FROZENNODE);
-            return jcrProvider.getFileNodeWrapper(frozen.getPath(), sessio=
n);
+            return jcrProvider.getFileNodeWrapper(frozen.getPath(), user, =
session);
         } catch (RepositoryException e) {
             e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
         }

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/JCRStoreProvider.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/JCRStoreProv=
ider.java&rev=3D19277&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRStoreProvider.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRStoreProvider.java Fri Nov 23 19:14:30 2007
@@ -184,14 +184,14 @@
     public FileNode getFileNodeWrapper(String path, JahiaUser user) {
         try {
             Session session =3D getSession(user);
-            return getFileNodeWrapper(path, session);
+            return getFileNodeWrapper(path, user, session);
         } catch (RepositoryException e) {
             logger.error("Repository error",e);
             return null;
         }
     }
 =

-    public abstract JCRFileNodeWrapper getFileNodeWrapper(String path, Ses=
sion session);
+    public abstract JCRFileNodeWrapper getFileNodeWrapper(String path, Jah=
iaUser user, Session session);
 =

     protected abstract void registerCustomNodeTypes(Workspace ws, String c=
ndFileName) throws IOException, RepositoryException;
 =


Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/JCRStoreService.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/JCRStoreServ=
ice.java&rev=3D19277&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRStoreService.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRStoreService.java Fri Nov 23 19:14:30 2007
@@ -100,9 +100,20 @@
                 return provider.getFileNodeWrapper(realPath, user);
             }
         }
-        return new FileNode(null);
+        return new FileNode(null, null);
     }
 =

+    public StoreProvider getProvider(String path) {
+        for (Iterator iterator =3D mountPoints.keySet().iterator(); iterat=
or.hasNext();) {
+            String mp =3D (String) iterator.next();
+            if (path.startsWith(mp)) {
+                return (StoreProvider) mountPoints.get(mp);
+            }
+        }
+        return mainStoreProvider;
+    }
+
+
     public static String cleanTitle(String cleanTitle) {
         return cleanTitle(cleanTitle, false);
     }

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/RootFileNode.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/RootFileNode=
.java&rev=3D19277&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/RootFileNode.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/RootFileNode.java Fri Nov 23 19:14:30 2007
@@ -24,7 +24,7 @@
     private List mounts;
 =

     public RootFileNode(FileNode root, List mounts) {
-        super(null);
+        super("/", root.getUser());
         mainRootNode =3D root;
         this.mounts =3D mounts;
     }
@@ -166,10 +166,6 @@
         return mainRootNode.getLastModifiedAsDate();
     }
 =

-    public Date getContentLastModifiedAsDate() {
-        return mainRootNode.getContentLastModifiedAsDate();
-    }
-
     public Date getCreationDateAsDate() {
         return mainRootNode.getCreationDateAsDate();
     }

Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/s=
ervices/content/impl/cifs/CIFSFileNode.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/impl/=
cifs/CIFSFileNode.java&rev=3D19277&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/cifs/CIFSFileNode.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/cifs/CIFSFileNode.java Fri Nov 23 19:14:30 2007
@@ -0,0 +1,180 @@
+package org.jahia.services.content.impl.cifs;
+
+import jcifs.smb.SmbException;
+import jcifs.smb.SmbFile;
+import org.apache.commons.io.CopyUtils;
+import org.jahia.services.content.FileNode;
+import org.jahia.services.usermanager.JahiaUser;
+import org.jahia.params.ParamBean;
+
+import javax.jcr.RepositoryException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 23 nov. 2007
+ * Time: 11:54:33
+ * To change this template use File | Settings | File Templates.
+ */
+public class CIFSFileNode extends FileNode {
+    private CIFSStoreProvider cifsProvider;
+    private SmbFile smb;
+    private String relativePath;
+
+    public CIFSFileNode(String path, JahiaUser user, CIFSStoreProvider pro=
vider) {
+        super(path, user);
+        cifsProvider =3D provider;
+        try {
+            smb =3D new SmbFile(cifsProvider.getRoot() + path, cifsProvide=
r.getPasswordAuthentication());
+            if (!smb.isFile() && !path.endsWith("/")) {
+                path +=3D"/";
+                smb =3D new SmbFile(cifsProvider.getRoot() + path, cifsPro=
vider.getPasswordAuthentication());
+            }
+            relativePath =3D path;
+        } catch (Exception e) {
+            exception =3D e;
+        }
+    }
+
+    public String getName() {
+        return smb.getName();       =

+    }
+
+    public boolean isValid() {
+        try {
+            return (exception =3D=3D null) && smb.exists();
+        } catch (SmbException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+            return false;
+        }
+    }
+
+    public boolean isWriteable() {
+        try {
+            return smb.canWrite();
+        } catch (SmbException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+            return false;
+        }
+    }
+
+    public boolean hasPermission(String perm) {
+        if (exception !=3D null) {
+            return false;
+        }
+        try {
+            if (READ.equals(perm)) {
+                return smb.canRead();
+            } else if (WRITE.equals(perm)) {
+                return smb.canWrite();
+            } else if (MANAGE.equals(perm)) {
+                return false;
+            }
+        } catch (SmbException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+            return false;
+        }
+
+        return false;
+    }
+
+    public InputStream downloadFile() {
+        try {
+            return smb.getInputStream();
+        } catch (IOException e) {
+            return null;
+        }
+    }
+
+    public String getPath() {
+        return cifsProvider.getMountPoint() + relativePath;
+    }
+
+    public boolean isCollection() {
+        try {
+            return !smb.isFile();
+        } catch (SmbException e) {
+            return false;
+        }
+    }
+
+    public long getContentLength() {
+        return smb.getContentLength();
+    }
+
+    public List getChildren() {
+        List l =3D new ArrayList();
+        try {
+            String[] c =3D smb.list();
+            for (int i =3D 0; i < c.length; i++) {
+                String s =3D c[i];
+                l.add(new CIFSFileNode(relativePath + s, user, cifsProvide=
r));
+            }
+        } catch (SmbException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        }
+        return l;
+    }
+
+    public Date getLastModifiedAsDate() {
+        try {
+            return new Date(smb.lastModified());
+        } catch (SmbException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+            return null;
+        }
+    }
+
+    public String createCollection(String name) {
+        try {
+            smb =3D new SmbFile(cifsProvider.getRoot() + relativePath + na=
me, cifsProvider.getPasswordAuthentication());
+            smb.mkdir();
+        } catch (Exception e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        }
+
+        return name;
+    }
+
+    public String uploadFile(String name, InputStream is, String contentTy=
pe) {
+        try {
+            smb =3D new SmbFile(cifsProvider.getRoot() + relativePath + na=
me, cifsProvider.getPasswordAuthentication());
+            smb.createNewFile();
+            OutputStream os =3D smb.getOutputStream();
+            CopyUtils.copy(is,os);
+            os.close();
+        } catch (Exception e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        }
+
+        return name;
+    }
+
+    public boolean renameFile(String newName) {
+        try {
+            smb.renameTo(new SmbFile(cifsProvider.getRoot() + relativePath=
 + newName, cifsProvider.getPasswordAuthentication()));
+            return true;
+        } catch (SmbException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        } catch (MalformedURLException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        }
+        return false;
+    }
+
+    public String getUrl() {
+        return cifsProvider.getDavenportPath() + cifsProvider.getRoot().su=
bstring("smb:/".length()) + relativePath;
+    }
+
+    public String getAbsoluteUrl(ParamBean jParams) {
+        return cifsProvider.getDavenportPath() + cifsProvider.getRoot().su=
bstring("smb:/".length()) + relativePath;
+    }
+
+}

Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/s=
ervices/content/impl/cifs/CIFSStoreProvider.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/impl/=
cifs/CIFSStoreProvider.java&rev=3D19277&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/cifs/CIFSStoreProvider.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/cifs/CIFSStoreProvider.java Fri Nov 23 19:14:30 2007
@@ -0,0 +1,83 @@
+package org.jahia.services.content.impl.cifs;
+
+import jcifs.smb.NtlmPasswordAuthentication;
+import jcifs.smb.SmbFile;
+import org.jahia.exceptions.JahiaException;
+import org.jahia.exceptions.JahiaInitializationException;
+import org.jahia.services.content.FileNode;
+import org.jahia.services.content.StoreProvider;
+import org.jahia.services.usermanager.JahiaUser;
+
+import java.net.MalformedURLException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 23 nov. 2007
+ * Time: 11:38:24
+ * To change this template use File | Settings | File Templates.
+ */
+public class CIFSStoreProvider extends StoreProvider {
+
+    private String root;
+
+    private String domain;
+    private String username;
+    private String password;
+    private String davenportPath;
+
+    public void start() throws JahiaInitializationException {
+    }
+
+    public void stop() throws JahiaException {
+    }
+
+    public String getRoot() {
+        return root;
+    }
+
+    public void setRoot(String root) {
+        this.root =3D root;
+    }
+
+    public String getDomain() {
+        return domain;
+    }
+
+    public void setDomain(String domain) {
+        this.domain =3D domain;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username =3D username;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password =3D password;
+    }
+
+    public String getDavenportPath() {
+        return davenportPath;
+    }
+
+    public void setDavenportPath(String davenPortPath) {
+        this.davenportPath =3D davenPortPath;
+    }
+
+    public NtlmPasswordAuthentication getPasswordAuthentication() {
+        return new NtlmPasswordAuthentication(domain, username, password);
+    }
+
+    public FileNode getFileNodeWrapper(String path, JahiaUser user) {
+        return new CIFSFileNode(path, user, this);
+    }
+
+}

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/impl/jackrabbit/JackrabbitFileNodeWrapper.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/impl/jackrab=
bit/JackrabbitFileNodeWrapper.java&rev=3D19277&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/jackrabbit/JackrabbitFileNodeWrapper.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/jackrabbit/JackrabbitFileNodeWrapper.java Fri Nov 23 19:1=
4:30 2007
@@ -9,6 +9,7 @@
 import org.jahia.services.acl.JahiaBaseACL;
 import org.jahia.services.content.JCRFileNodeWrapper;
 import org.jahia.services.content.JCRStoreProvider;
+import org.jahia.services.usermanager.JahiaUser;
 =

 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
@@ -27,8 +28,8 @@
 public class JackrabbitFileNodeWrapper extends JCRFileNodeWrapper {
     private static final Logger logger =3D Logger.getLogger(JackrabbitFile=
NodeWrapper.class);
 =

-    protected JackrabbitFileNodeWrapper(String path, Session session, JCRS=
toreProvider provider) {
-        super(path, session, provider);
+    protected JackrabbitFileNodeWrapper(String path, JahiaUser user, Sessi=
on session, JCRStoreProvider provider) {
+        super(path, user, session, provider);
     }
 =

 =


Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/impl/jackrabbit/JackrabbitStoreProvider.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/impl/jackrab=
bit/JackrabbitStoreProvider.java&rev=3D19277&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/jackrabbit/JackrabbitStoreProvider.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/jackrabbit/JackrabbitStoreProvider.java Fri Nov 23 19:14:=
30 2007
@@ -27,6 +27,7 @@
 import org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl;
 import org.jahia.services.content.JCRFileNodeWrapper;
 import org.jahia.services.content.JCRStoreProvider;
+import org.jahia.services.usermanager.JahiaUser;
 =

 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
@@ -45,13 +46,13 @@
         org.apache.log4j.Logger.getLogger(JackrabbitStoreProvider.class);
 =

     public JackrabbitStoreProvider() {
-    }
+    }                 =

 =

     public void stop() {
     }
 =

-    public JCRFileNodeWrapper getFileNodeWrapper(String path, Session sess=
ion) {
-        return new JackrabbitFileNodeWrapper(path, session, this);
+    public JCRFileNodeWrapper getFileNodeWrapper(String path, JahiaUser us=
er, Session session) {
+        return new JackrabbitFileNodeWrapper(path, user, session, this);
     }
 =

     protected void registerCustomNodeTypes(Workspace ws, String cndFileNam=
e) throws IOException, RepositoryException {

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-IN=
F/etc/spring/applicationcontext-services.xml
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/spring/applicationcontext=
-services.xml&rev=3D19277&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/=
spring/applicationcontext-services.xml (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/=
spring/applicationcontext-services.xml Fri Nov 23 19:14:30 2007
@@ -881,6 +881,29 @@
     </bean>
     -->
 =

+    <!--
+    <bean id=3D"SMBStoreProvider" class=3D"org.jahia.services.content.impl=
.cifs.CIFSStoreProvider" parent=3D"jahiaServiceTemplate" >
+        <property name=3D"key">
+            <value>cifs</value>
+        </property>
+               <property name=3D"root">
+                   <value>smb://10.8.37.2/babylon</value>
+               </property>
+               <property name=3D"domain">
+                   <value>JAHIA</value>
+               </property>
+               <property name=3D"username">
+                   <value>GUEST</value>
+               </property>
+               <property name=3D"password">
+                   <value></value>
+               </property>
+               <property name=3D"davenportPath">
+                   <value>/davenport</value>
+               </property>
+    </bean>
+    -->
+
     <bean id=3D"JCRStoreService" parent=3D"proxyTemplate">
         <property name=3D"target">
             <bean class=3D"org.jahia.services.content.JCRStoreService" par=
ent=3D"jahiaServiceTemplate" factory-method=3D"getInstance">
@@ -895,6 +918,12 @@
                             <ref bean=3D"SecondJCRStoreProvider"/>
                         </entry>
 -->
+<!--
+                        <entry>
+                            <key><value>/babylon</value></key>
+                            <ref bean=3D"SMBStoreProvider"/>
+                        </entry>
+-->
                     </map>
                 </property>
             </bean>

_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to