Author: tdraier
Date: Wed Dec 19 17:07:20 2007
New Revision: 19386
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19386&repname=
=3Djahia
Log:
alfresco support
Added:
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/alfresco/
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/alfresco/AlfrescoFileNodeWrapper.java
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/alfresco/AlfrescoStoreProvider.java
Modified:
branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRStoreProvider.java
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=3D19386&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 Wed Dec 19 17:07:20 2007
@@ -9,18 +9,24 @@
import org.jahia.services.sites.JahiaSite;
import org.jahia.services.usermanager.JahiaUser;
import org.jahia.services.usermanager.JahiaUserManagerService;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
=
import javax.jcr.*;
+import javax.jcr.nodetype.NodeTypeIterator;
+import javax.jcr.nodetype.NodeType;
import javax.jcr.observation.Event;
import javax.naming.InitialContext;
+import javax.naming.NamingException;
import javax.naming.Reference;
import javax.naming.StringRefAddr;
-import javax.naming.NamingException;
import javax.naming.spi.ObjectFactory;
import javax.servlet.ServletRequest;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Hashtable;
+import java.util.List;
+import java.util.ArrayList;
=
/**
* Created by IntelliJ IDEA.
@@ -38,11 +44,11 @@
private String factory;
private String url;
private String webdavPath;
- private String user;
- private String password;
+ protected String user;
+ protected String password;
private boolean loginModuleActivated =3D true;
=
- private Repository repo =3D null;
+ protected Repository repo =3D null;
=
private boolean isMainStorage =3D false;
private ThreadLocal systemSession =3D new ThreadLocal();
@@ -252,7 +258,7 @@
return s;
}
=
- private void registerNamespaces(Workspace workspace) throws Repository=
Exception {
+ protected void registerNamespaces(Workspace workspace) throws Reposito=
ryException {
NamespaceRegistry namespaceRegistry =3D workspace.getNamespaceRegi=
stry();
try {
namespaceRegistry.getURI(Constants.JAHIA_PREF);
@@ -273,6 +279,23 @@
}
}
=
+ public NodeType getNodeType(String name) throws RepositoryException {
+ return getSystemSession().getWorkspace().getNodeTypeManager().getN=
odeType(name);
+ }
+
+ public List getAvailableTypes() throws RepositoryException {
+ List types =3D new ArrayList();
+ NodeTypeIterator nti =3D getSystemSession().getWorkspace().getNode=
TypeManager().getMixinNodeTypes();
+ while (nti.hasNext()) {
+ NodeType nt =3D nti.nextNodeType();
+ if (nt.isNodeType(Constants.JAHIAMIX_EXTENSION) && !Constants.=
JAHIAMIX_EXTENSION.equals(nt.getName())) {
+ types.add(nt.getName());
+ }
+ }
+ return types;
+
+ }
+
public JCRFileNodeWrapper getFileNodeWrapper(String localPath, JahiaUs=
er user, Session session) {
return new JCRFileNodeWrapper(localPath, user, session, this);
}
@@ -318,6 +341,16 @@
isMainStorage =3D mainStorage;
}
=
+ public void exportDocumentView(String path, ContentHandler ch, JahiaUs=
er user, boolean noRecurse) {
+ try {
+ getSession(user).exportDocumentView(path, ch, true, noRecurse);
+ } catch (SAXException e) {
+ e.printStackTrace(); //To change body of catch statement use =
File | Settings | File Templates.
+ } catch (RepositoryException e) {
+ e.printStackTrace(); //To change body of catch statement use =
File | Settings | File Templates.
+ }
+ }
+
private void dump (Node n) throws RepositoryException {
System.out.println(n.getPath());
PropertyIterator pit=3Dn.getProperties();
Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/s=
ervices/content/impl/alfresco/AlfrescoFileNodeWrapper.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/=
alfresco/AlfrescoFileNodeWrapper.java&rev=3D19386&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/alfresco/AlfrescoFileNodeWrapper.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/alfresco/AlfrescoFileNodeWrapper.java Wed Dec 19 17:07:20=
2007
@@ -0,0 +1,160 @@
+package org.jahia.services.content.impl.alfresco;
+
+import org.jahia.services.content.FileNode;
+import org.jahia.services.content.JCRFileNodeWrapper;
+import org.jahia.services.content.JCRStoreProvider;
+import org.jahia.services.content.JCRStoreService;
+import org.jahia.services.usermanager.JahiaUser;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 6 d=C3=83=C2=A9c. 2007
+ * Time: 17:07:16
+ * To change this template use File | Settings | File Templates.
+ */
+public class AlfrescoFileNodeWrapper extends JCRFileNodeWrapper {
+ public AlfrescoFileNodeWrapper(String localPath, JahiaUser user, Sessi=
on session, JCRStoreProvider provider) {
+ super(localPath, user, session, provider);
+ }
+
+ public boolean isCollection() {
+ if (exception !=3D null) {
+ return false;
+ }
+ try {
+ return objectNode.isNodeType("cm:folder") || objectNode.getPat=
h().equals("/") || objectNode.isNodeType("sys:store_root");
+ } catch (RepositoryException e) { =
+ e.printStackTrace();
+ return false;
+ }
+
+ }
+
+ public String getName () {
+ if (exception !=3D null) {
+ return null;
+ }
+ try {
+ if (objectNode.getPath().equals("/") && provider.getMountPoint=
().length()>1) {
+ return provider.getMountPoint().substring(1);
+ } else {
+ return objectNode.getProperty("cm:name").getString();
+ }
+ } catch (RepositoryException e) {
+ logger.error("Repository error",e);
+ }
+ return null;
+ }
+
+ public long getContentLength() {
+ try {
+ return objectNode.getProperty("cm:content").getLength();
+ } catch (RepositoryException e) {
+ e.printStackTrace(); //To change body of catch statement use =
File | Settings | File Templates.
+ }
+ return 0L;
+ }
+
+ public String getCreationUser() {
+ try {
+ return objectNode.getProperty("cm:author").getString();
+ } catch (RepositoryException e) {
+ e.printStackTrace(); //To change body of catch statement use =
File | Settings | File Templates.
+ }
+ return null;
+ }
+
+ public Date getCreationDateAsDate() {
+ try {
+ return objectNode.getProperty("cm:created").getDate().getTime(=
);
+ } catch (RepositoryException e) {
+ e.printStackTrace(); //To change body of catch statement use =
File | Settings | File Templates.
+ }
+ return null;
+ }
+
+ public String getModificationUser() {
+ try {
+ return objectNode.getProperty("cm:modifier").getString();
+ } catch (RepositoryException e) {
+ e.printStackTrace(); //To change body of catch statement use =
File | Settings | File Templates.
+ }
+ return null;
+
+ }
+
+ public Date getLastModifiedAsDate() {
+ try {
+ return objectNode.getProperty("cm:modified").getDate().getTime=
();
+ } catch (RepositoryException e) {
+ e.printStackTrace(); //To change body of catch statement use =
File | Settings | File Templates.
+ }
+ return null;
+ }
+
+ public String getUrl() {
+ if (objectNode !=3D null) {
+ try {
+ return jcrProvider.getContextPath() + "/d/d/workspace/" + =
objectNode.getSession().getWorkspace().getName() + "/" + objectNode.getUUID=
() + "/" + getName();
+ } catch (RepositoryException e) {
+ logger.error("Cannot get file path",e);
+ }
+ }
+ return "";
+ }
+
+ public FileNode createCollection(String name) {
+ name =3D JCRStoreService.cleanTitle(name);
+ try {
+ Node n =3D objectNode.addNode(name, "cm:folder");
+ n.setProperty("cm:name", name);
+ return jcrProvider.getFileNodeWrapper(n.getPath(), user, sessi=
on);
+ } catch (RepositoryException e) {
+ logger.error("Repository error",e);
+ }
+ return null;
+ }
+
+ public String uploadFile(String name, InputStream is, String contentTy=
pe) {
+ try {
+ if (is !=3D null) {
+ Node node =3D objectNode.addNode(name, "cm:content");
+
+ try {
+ node.setProperty("cm:content", is);
+ } finally {
+ is.close();
+ }
+ node.setProperty("cm:name", name);
+ node.setProperty("cm:modified", new GregorianCalendar());
+
+ }
+
+ return name;
+ } catch (RepositoryException e) {
+ e.printStackTrace(); //To change body of catch statement use =
File | Settings | File Templates.
+ return null;
+ } catch (IOException e) {
+ e.printStackTrace(); //To change body of catch statement use =
File | Settings | File Templates.
+ return null;
+ }
+ }
+
+ public InputStream downloadFile() {
+ try {
+ return objectNode.getProperty("cm:content").getStream();
+ } catch (RepositoryException e) {
+ e.printStackTrace(); //To change body of catch statement use =
File | Settings | File Templates.
+ }
+ return null;
+ }
+}
Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/s=
ervices/content/impl/alfresco/AlfrescoStoreProvider.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/=
alfresco/AlfrescoStoreProvider.java&rev=3D19386&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/alfresco/AlfrescoStoreProvider.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/alfresco/AlfrescoStoreProvider.java Wed Dec 19 17:07:20 2=
007
@@ -0,0 +1,42 @@
+package org.jahia.services.content.impl.alfresco;
+
+import org.jahia.api.Constants;
+import org.jahia.services.content.JCRStoreProvider;
+import org.jahia.services.content.JCRFileNodeWrapper;
+import org.jahia.services.usermanager.JahiaUser;
+import org.jahia.jaas.JahiaLoginModule;
+
+import javax.jcr.*;
+import java.lang.reflect.Method;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 5 d=C3=83=C2=A9c. 2007
+ * Time: 13:57:39
+ * To change this template use File | Settings | File Templates.
+ */
+public class AlfrescoStoreProvider extends JCRStoreProvider {
+
+
+ public JCRFileNodeWrapper getFileNodeWrapper(String path, JahiaUser us=
er, Session session) {
+ return new AlfrescoFileNodeWrapper(path, user, session, this);
+ }
+
+ // Alfresco does not support NS registration at workspace level, NS mu=
st be registered
+ // on session level (non standard)
+ protected void registerNamespaces(Workspace workspace) throws Reposito=
ryException {
+// NamespaceRegistry ns =3D workspace.getNamespaceRegistry();
+// try {
+// Object s =3D ns.getClass().getMethod("getNamespaceService", =
new Class[] {}).invoke(ns, new Object[]{});
+// Method m =3D s.getClass().getMethod("registerNamespace", new=
Class[] {String.class, String.class});
+// m.invoke(s, new Object[] {Constants.JAHIA_PREF, Constants.JA=
HIA_NS});
+// m.invoke(s, new Object[] {Constants.JAHIANT_PREF, Constants.=
JAHIANT_NS});
+// m.invoke( s, new Object[] {Constants.JAHIAMIX_PREF, Constant=
s.JAHIAMIX_NS});
+// } catch (Exception e) {
+// e.printStackTrace(); //To change body of catch statement us=
e File | Settings | File Templates.
+// }
+// super.registerNamespaces(workspace);
+ }
+
+}
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list