Author: tdraier
Date: Fri Nov 16 12:09:31 2007
New Revision: 19180

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19180&repname=
=3Djahia
Log:
jackrabbit extensions for jahia

Added:
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/locator.ent  =
 (with props)
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/project.xml  =
 (with props)
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/org/
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/org/=
jahia/
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/org/=
jahia/services/
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/org/=
jahia/services/content/
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/org/=
jahia/services/content/ExtraContentHandler.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/org/=
jahia/services/content/JahiaAccessManager.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/org/=
jahia/services/content/JahiaIOManager.java

Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/locator.ent
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/locator.ent&rev=3D19180&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/jackrabbit-ext/locator.ent (=
added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/locator.ent F=
ri Nov 16 12:09:31 2007
@@ -0,0 +1,6 @@
+<!ENTITY common-dependencies SYSTEM "file:../../common-packagedwebapps/pom=
-fragments/common-dependencies.ent">    =

+<!ENTITY common-topsite SYSTEM "file:../../common-packagedwebapps/pom-frag=
ments/common-topsite.ent">      =

+<!ENTITY common-toprepository SYSTEM "file:../../common-packagedwebapps/po=
m-fragments/common-toprepository.ent">  =

+<!ENTITY common-warsite SYSTEM "file:../../common-packagedwebapps/pom-frag=
ments/common-warsite.ent">      =

+<!ENTITY common-warrepository SYSTEM "file:../../common-packagedwebapps/po=
m-fragments/common-warrepository.ent">  =

+<!ENTITY jetspeed-version "2.1-dev">

Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/project.xml
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/project.xml&rev=3D19180&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/jackrabbit-ext/project.xml (=
added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/project.xml F=
ri Nov 16 12:09:31 2007
@@ -0,0 +1,88 @@
+<?xml version=3D"1.0" encoding=3D"UTF-8"?>
+<!DOCTYPE project [
+        <!ENTITY % locator-entities SYSTEM "file:locator.ent"> %locator-en=
tities;
+        ]>
+<project>
+    <extend>${basedir}/../project.xml</extend>
+    <pomVersion>3</pomVersion>
+    <artifactId>jackrabbit-ext</artifactId>
+    <groupId>jahia</groupId>
+    <package>org.jahia</package>
+
+    <url>http://projects.jahia.org/${pom.artifactId}/core</url>
+    <siteDirectory>html/${pom.artifactId}/core</siteDirectory>
+
+    <repository>
+        <connection>scm:cvs:pserver:[EMAIL PROTECTED]:/home/cvs/r=
epository_anonymous:${pom.artifactId}/jackrabbit-ext</connection>
+        <url>http://cvspub.jahia.org/cgi-bin/cvsweb.cgi/${pom.artifactId}/=
core/</url>
+    </repository>
+
+    <dependencies>
+        <dependency>
+            <groupId>jsr170</groupId>
+            <artifactId>jcr</artifactId>
+            <version>1.0</version>
+            <url>http://www.day.com/maven/jsr170/jars/jcr-1.0.jar</url>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-api</artifactId>
+            <version>1.4-562144</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-core</artifactId>
+            <version>1.4-562144</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-jcr-commons</artifactId>
+            <version>1.4-562144</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-text-extractors</artifactId>
+            <version>1.4-562144</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-webapp</artifactId>
+            <version>1.4-562144</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-jcr-rmi</artifactId>
+            <version>1.4-562144</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-webdav</artifactId>
+            <version>1.4-562144</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-jcr-server</artifactId>
+            <version>1.4-562144</version>
+        </dependency>
+
+        <dependency>
+            <groupId>jahia</groupId>
+            <artifactId>public-api</artifactId>
+            <version>5.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+          <groupId>log4j</groupId>
+          <artifactId>log4j</artifactId>
+          <version>1.2.14</version>
+        </dependency>        =

+    </dependencies>
+
+    <build>
+        <nagEmailAddress>[EMAIL PROTECTED]</nagEmailAddress>
+        <sourceDirectory>src/java</sourceDirectory>
+        <unitTestSourceDirectory>src/test/src/java</unitTestSourceDirector=
y>
+    </build>
+
+</project>

Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/o=
rg/jahia/services/content/ExtraContentHandler.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/org/jahia/services/con=
tent/ExtraContentHandler.java&rev=3D19180&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/jackrabbit-ext/src/java/org/=
jahia/services/content/ExtraContentHandler.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/org/=
jahia/services/content/ExtraContentHandler.java Fri Nov 16 12:09:31 2007
@@ -0,0 +1,54 @@
+package org.jahia.services.content;
+
+import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.server.io.*;
+import org.apache.jackrabbit.webdav.DavResource;
+
+import javax.jcr.Item;
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 12 juil. 2007
+ * Time: 20:38:16
+ * To change this template use File | Settings | File Templates.
+ */
+public class ExtraContentHandler extends DefaultHandler implements IOHandl=
er {
+
+    public ExtraContentHandler(IOManager ioManager) {
+        super(ioManager);
+    }
+
+    public boolean canImport(ImportContext context, boolean isCollection) {
+        return false;
+    }
+
+    public boolean canImport(ImportContext context, DavResource resource) {
+        return false;
+    }
+
+    public boolean canExport(ExportContext context, boolean isCollection) {
+        if (context =3D=3D null || context.isCompleted()) {
+            return false;
+        }
+        Item exportRoot =3D context.getExportRoot();
+        boolean success =3D exportRoot !=3D null && exportRoot.isNode();
+        if (success && !isCollection) {
+            try {
+                Node th =3D ((Node)exportRoot);
+                success =3D th.getPrimaryNodeType().getName().equals(JcrCo=
nstants.NT_RESOURCE) && th.hasProperty(JcrConstants.JCR_DATA);
+            } catch (RepositoryException e) {
+                // should never occur.
+                success =3D false;
+            }
+        }
+        return success;
+    }
+
+    protected Node getContentNode(ExportContext context, boolean isCollect=
ion) throws RepositoryException {
+        return (Node)context.getExportRoot();
+    }
+
+}

Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/o=
rg/jahia/services/content/JahiaAccessManager.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/org/jahia/services/con=
tent/JahiaAccessManager.java&rev=3D19180&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/jackrabbit-ext/src/java/org/=
jahia/services/content/JahiaAccessManager.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/org/=
jahia/services/content/JahiaAccessManager.java Fri Nov 16 12:09:31 2007
@@ -0,0 +1,304 @@
+package org.jahia.services.content;
+
+import org.apache.jackrabbit.core.HierarchyManager;
+import org.apache.jackrabbit.core.ItemId;
+import org.apache.jackrabbit.core.PropertyId;
+import org.apache.jackrabbit.core.security.AMContext;
+import org.apache.jackrabbit.core.security.AccessManager;
+import org.apache.jackrabbit.name.*;
+import org.jahia.jaas.JahiaLoginModule;
+import org.jahia.jaas.JahiaPrincipal;
+import org.jahia.api.user.JahiaUserService;
+import org.jahia.api.Constants;
+
+import javax.jcr.*;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.security.auth.Subject;
+import java.util.*;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 28 f=C3=83=C2=A9vr. 2006
+ * Time: 17:58:41
+ * To change this template use File | Settings | File Templates.
+ */
+public class JahiaAccessManager implements AccessManager {
+    /**
+     * Subject whose access rights this AccessManager should reflect
+     */
+    protected Subject subject;
+
+    /**
+     * hierarchy manager used for ACL-based access control model
+     */
+    protected HierarchyManager hierMgr;
+
+    private boolean initialized;
+    protected String workspaceName;
+
+    protected JahiaPrincipal p;
+
+    /**
+     * Empty constructor
+     */
+    public JahiaAccessManager() {
+        initialized =3D false;
+        p =3D null;
+    }
+
+    //--------------------------------------------------------< AccessMana=
ger >
+    /**
+     * [EMAIL PROTECTED]
+     */
+    public void init(AMContext context)
+            throws AccessDeniedException, Exception {
+        if (initialized) {
+            throw new IllegalStateException("already initialized");
+        }
+
+        subject =3D context.getSubject();
+        hierMgr =3D context.getHierarchyManager();
+        workspaceName =3D context.getWorkspaceName();
+
+        Set principals =3D subject.getPrincipals(JahiaPrincipal.class);
+        if (!principals.isEmpty()) {
+            p =3D (JahiaPrincipal) principals.iterator().next();
+        }
+
+        // @todo check permission to access given workspace based on princ=
ipals
+        initialized =3D true;
+    }
+
+    public void close() throws Exception {
+    }
+
+    public void checkPermission(ItemId id, int permissions) throws AccessD=
eniedException, ItemNotFoundException, RepositoryException {
+        if (!isGranted(id,permissions)) {
+            throw new AccessDeniedException();
+        }
+    }
+
+    public boolean isGranted(ItemId id, int permissions) throws ItemNotFou=
ndException, RepositoryException {
+        if (p.isSystem()) {
+            return true;
+        }
+
+        try {
+            Session s =3D getRepository().login(org.jahia.jaas.JahiaLoginM=
odule.getSystemCredentials());
+            NamespaceResolver nr =3D new SessionNamespaceResolver(s);
+            Path path =3D getPath(id);
+            String jcrPath =3D PathFormat.format(path,nr);
+
+            // Always deny write access on system folders
+            if (s.itemExists(jcrPath)) {
+                Item i =3D s.getItem(jcrPath);
+                if (i.isNode() && permissions !=3D AccessManager.READ) {
+                    String ntName =3D ((Node) i).getPrimaryNodeType().getN=
ame();
+                    if (ntName.equals(Constants.JAHIANT_SYSTEMFOLDER) || n=
tName.equals(org.jahia.api.Constants.JAHIANT_VIRTUALSITE)
+                            || ntName.equals("rep:root")) {
+                        return false;
+                    }
+                }
+            }
+
+            JahiaUserService service =3D getJahiaUserService();
+
+            // Administrators are always granted
+            if (service.isServerAdmin(p.getName())) {
+                return true;
+            }
+
+            Path.PathElement[] elements =3D path.getElements();
+            if (elements.length > 1) {
+                QName name =3D elements[1].getName();
+                if (name.getNamespaceURI().equals("")) {
+                    // Site administrators are always granted
+                    if (service.isAdmin(p.getName(),name.getLocalName())) {
+                        return true;
+                    }
+                    CheckCommand v =3D new CheckCommand(permissions, name.=
getLocalName(), service);
+                    recurseonACPs(jcrPath, s, v);
+                    return v.isResult();
+                }
+            } else {
+                return true;
+            }
+
+            return false;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return true;
+    }
+
+    public Map getPermissions(ItemId id) {
+        try {
+            Session s =3D getRepository().login(JahiaLoginModule.getSystem=
Credentials());
+            NamespaceResolver nr =3D new SessionNamespaceResolver(s);
+
+            Path path =3D getPath(id);
+            String jcrPath =3D PathFormat.format(path,nr);
+
+            ViewCommand vv =3D new ViewCommand();
+            recurseonACPs(jcrPath, s, vv);
+            return vv.getResults();
+        } catch (Exception e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        }
+        return new HashMap();
+    }
+
+    private Path getPath(ItemId id) throws RepositoryException {
+        Path path =3D null;
+        try {
+            // Get the path of the node
+            path =3D hierMgr.getPath(id);
+        } catch (ItemNotFoundException e) {
+            // This might be a property, get the path of the parent node
+            if (!id.denotesNode()) {
+                id =3D ((PropertyId)id).getParentId();
+                try {
+                    path =3D hierMgr.getPath(id);
+                } catch (ItemNotFoundException e1) {
+                }
+            }
+        }
+        return path;
+    }
+
+    private void recurseonACPs(String jcrPath, Session s, Command v) throw=
s RepositoryException  {
+        while (jcrPath.length() > 0) {
+            if (s.itemExists(jcrPath)) {
+                Item i =3D s.getItem(jcrPath);
+                if (i.isNode()) {
+                    Node node =3D (Node) i;
+                    if (node.isNodeType("mix:accessControlled")) {
+                        Node acp =3D node.getProperty("jcr:accessControlPo=
licy").getNode();
+                        NodeIterator aces =3D acp.getNode("jcr:acl").getNo=
des("jcr:ace");
+                        while (aces.hasNext()) {
+                            Node ace =3D aces.nextNode();
+                            String principal =3D ace.getProperty("jcr:prin=
cipal").getString();
+                            String type =3D ace.getProperty("jcr:aceType")=
.getString();
+                            Value[] privileges =3D ace.getProperty("jcr:pr=
ivileges").getValues();
+
+                            if (v.execute(jcrPath, principal, type, privil=
eges)) return;
+                        }
+                    }
+                }
+                if ("/".equals(jcrPath)) {
+                    return;
+                } else if (jcrPath.lastIndexOf('/') > 0) {
+                    jcrPath =3D jcrPath.substring(0,jcrPath.lastIndexOf('/=
'));
+                } else {
+                    jcrPath =3D "/";
+                }
+            }
+        }
+    }
+
+    public boolean match(int permission, String privilege) {
+        switch (permission) {
+            case AccessManager.READ:
+                return "jcr:read".equals(privilege) || "jcr:getAccessContr=
olPolicy".equals(privilege) ||
+                        "jcr:all".equals(privilege) ;
+            case AccessManager.WRITE:
+                return "jcr:addChildNodes".equals(privilege) || "jcr:setPr=
operties".equals(privilege) ||
+                        "jcr:setAccessControlPolicy".equals(privilege) || =
"jcr:write".equals(privilege) || "jcr:all".equals(privilege) ;
+            case AccessManager.REMOVE:
+                return "jcr:removeChildNodes".equals(privilege) || "jcr:wr=
ite".equals(privilege) || "jcr:all".equals(privilege) ;
+        }
+        return false;
+    }
+
+    interface Command {
+        public boolean execute(String jcrPath, String principal, String ty=
pe, Value[] privileges) throws RepositoryException;
+    }
+
+    class CheckCommand implements Command {
+        private int permissions;
+        private String site;
+        private JahiaUserService service;
+        private boolean result;
+
+        public CheckCommand(int permissions, String site, JahiaUserService=
 service) {
+            this.permissions =3D permissions;
+            this.site =3D site;
+            this.service =3D service;
+        }
+
+        public boolean isResult() {
+            return result;
+        }
+
+        public boolean execute(String jcrPath, String principal, String ty=
pe, Value[] privileges) throws RepositoryException {
+            for (int j =3D 0; j < privileges.length; j++) {
+                Value privilege =3D privileges[j];
+                if (match(permissions, privilege.getString())) {
+                    String principalName =3D principal.substring(2);
+                    if (principal.charAt(0) =3D=3D 'u') {
+                        if (principalName.equals(p.getName())) {
+                            result =3D type.equals("GRANT");
+                            return true;
+                        }
+                    } else {
+                        if (principalName.equals("guest") || service.isUse=
rMemberOf(p.getName(), principalName, site)) {
+                            result =3D type.equals("GRANT");
+                            return true;
+                        }
+                    }
+
+                }
+            }
+            return false;
+        }
+
+    }
+
+    class ViewCommand implements Command {
+        private Map results =3D new HashMap();
+
+        public Map getResults() {
+            return results;
+        }
+
+        public boolean execute(String jcrPath, String principal, String ty=
pe, Value[] privileges) throws RepositoryException {
+            List p =3D (List) results.get(principal);
+
+            if (p =3D=3D null)  {
+                p =3D new ArrayList();
+                results.put(principal, p);
+                for (int i =3D 0; i < privileges.length; i++) {
+                    Value privilege =3D privileges[i];
+                    p.add(new String[]{jcrPath, type, privilege.getString(=
)});
+                }
+            }
+
+            return false;
+        }
+    }
+
+
+    public boolean canAccess(String workspaceName) throws NoSuchWorkspaceE=
xception, RepositoryException {
+        return true;
+    }
+
+
+    public Repository getRepository() throws NamingException {
+        String repName =3D "jcr/repository";
+        Hashtable env =3D new Hashtable();
+        InitialContext initctx =3D new InitialContext(env);
+        Context ctx =3D (Context) initctx.lookup("java:comp/env");
+        return (Repository) ctx.lookup(repName);
+    }
+
+    public JahiaUserService getJahiaUserService() throws NamingException {
+        String serviceName =3D "jahia/users";
+        Hashtable env =3D new Hashtable();
+        InitialContext initctx =3D new InitialContext(env);
+        Context ctx =3D (Context) initctx.lookup("java:comp/env");
+        return (JahiaUserService) ctx.lookup(serviceName);
+    }
+}

Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/o=
rg/jahia/services/content/JahiaIOManager.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/org/jahia/services/con=
tent/JahiaIOManager.java&rev=3D19180&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/jackrabbit-ext/src/java/org/=
jahia/services/content/JahiaIOManager.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/jackrabbit-ext/src/java/org/=
jahia/services/content/JahiaIOManager.java Fri Nov 16 12:09:31 2007
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jahia.services.content;
+
+import org.apache.log4j.Logger;
+import org.apache.jackrabbit.server.io.*;
+import org.apache.jackrabbit.JcrConstants;
+import org.jahia.api.Constants;
+
+/**
+ * <code>JahiaIOManager</code>...
+ */
+public class JahiaIOManager extends IOManagerImpl {
+
+    private static Logger log =3D Logger.getLogger(JahiaIOManager.class);
+
+    /**
+     * Creates a new <code>DefaultIOManager</code> and populates the inter=
nal
+     * list of <code>IOHandler</code>s by the defaults.
+     *
+     * @see #init()
+     */
+    public JahiaIOManager() {
+        init();
+    }
+
+    /**
+     * Creates a new <code>DefaultIOManager</code>. The if the flag is set=
 to
+     * false no <code>IOHandler</code>s are added to the internal list.
+     *
+     * @deprecated Use [EMAIL PROTECTED] IOManagerImpl} instead.
+     */
+    protected JahiaIOManager(boolean initDefaults) {
+        if (initDefaults) {
+           init();
+        }
+    }
+
+    /**
+     * Add the predefined <code>IOHandler</code>s to this manager. This in=
cludes
+     * <ul>
+     * <li>[EMAIL PROTECTED] ZipHandler}</li>
+     * <li>[EMAIL PROTECTED] XmlHandler}</li>
+     * <li>[EMAIL PROTECTED] DirListingExportHandler}</li>
+     * <li>[EMAIL PROTECTED] DefaultHandler}.</li>
+     * </ul>
+     */
+    protected void init() {
+        addIOHandler(new DirListingExportHandler(this));
+        addIOHandler(new ExtraContentHandler(this));
+        addIOHandler(new DefaultHandler(this, Constants.JAHIANT_FOLDER, Co=
nstants.JAHIANT_FILE, JcrConstants.NT_RESOURCE));
+    }
+}
\ No newline at end of file

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

Reply via email to