You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by sa...@apache.org on 2011/10/12 16:39:09 UTC
svn commit: r1182405 - in /ofbiz/branches/jackrabbit20100709:
applications/content/ applications/content/src/org/ofbiz/content/jcr/
framework/example/ framework/example/src/org/ofbiz/example/
framework/example/webapp/example/WEB-INF/ framework/example/...
Author: sascharodekamp
Date: Wed Oct 12 14:39:08 2011
New Revision: 1182405
URL: http://svn.apache.org/viewvc?rev=1182405&view=rev
Log:
Update the Node Language and Version selection, move the Event class from content to example module to absolute decouple the JCR from the application area.
Added:
ofbiz/branches/jackrabbit20100709/framework/example/src/org/ofbiz/example/JackrabbitEvents.java (with props)
Removed:
ofbiz/branches/jackrabbit20100709/applications/content/src/org/ofbiz/content/jcr/JackrabbitEvents.java
Modified:
ofbiz/branches/jackrabbit20100709/applications/content/build.xml
ofbiz/branches/jackrabbit20100709/framework/example/build.xml
ofbiz/branches/jackrabbit20100709/framework/example/webapp/example/WEB-INF/controller.xml
ofbiz/branches/jackrabbit20100709/framework/example/widget/example/ExampleJackrabbitForms.xml
ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/ContentReader.java
ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/VersioningManager.java
ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java
ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/VersioningManagerJackrabbit.java
ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/JcrArticleHelper.java
ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/test/JcrTests.java
Modified: ofbiz/branches/jackrabbit20100709/applications/content/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/applications/content/build.xml?rev=1182405&r1=1182404&r2=1182405&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/applications/content/build.xml (original)
+++ ofbiz/branches/jackrabbit20100709/applications/content/build.xml Wed Oct 12 14:39:08 2011
@@ -47,8 +47,6 @@ under the License.
<fileset dir="../../framework/webapp/build/lib" includes="*.jar"/>
<fileset dir="../../framework/widget/build/lib" includes="*.jar"/>
<fileset dir="../../framework/common/build/lib" includes="*.jar"/>
- <fileset dir="../../framework/jcr/lib" includes="*.jar"/>
- <fileset dir="../../framework/jcr/build/lib" includes="*.jar"/>
</path>
<patternset id="src.exc.set">
Modified: ofbiz/branches/jackrabbit20100709/framework/example/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/example/build.xml?rev=1182405&r1=1182404&r2=1182405&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/example/build.xml (original)
+++ ofbiz/branches/jackrabbit20100709/framework/example/build.xml Wed Oct 12 14:39:08 2011
@@ -37,6 +37,9 @@ under the License.
<path id="local.class.path">
<fileset dir="${lib.dir}" includes="*.jar"/>
<fileset dir="../../framework/base/lib" includes="*.jar"/>
+ <fileset dir="../../framework/base/lib/commons" includes="*.jar"/>
+ <fileset dir="../../framework/base/lib/j2eespecs" includes="*.jar"/>
+ <fileset dir="../../framework/base/lib/scripting" includes="*.jar"/>
<fileset dir="../../framework/base/build/lib" includes="*.jar"/>
<fileset dir="../../framework/entity/lib" includes="*.jar"/>
<fileset dir="../../framework/entity/build/lib" includes="*.jar"/>
@@ -47,5 +50,8 @@ under the License.
<fileset dir="../../framework/widget/build/lib" includes="*.jar"/>
<fileset dir="../../framework/webapp/lib" includes="*.jar"/>
<fileset dir="../../framework/webapp/build/lib" includes="*.jar"/>
+ <fileset dir="../../framework/common/build/lib" includes="*.jar"/>
+ <fileset dir="../../framework/jcr/lib" includes="*.jar"/>
+ <fileset dir="../../framework/jcr/build/lib" includes="*.jar"/>
</path>
</project>
Added: ofbiz/branches/jackrabbit20100709/framework/example/src/org/ofbiz/example/JackrabbitEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/example/src/org/ofbiz/example/JackrabbitEvents.java?rev=1182405&view=auto
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/example/src/org/ofbiz/example/JackrabbitEvents.java (added)
+++ ofbiz/branches/jackrabbit20100709/framework/example/src/org/ofbiz/example/JackrabbitEvents.java Wed Oct 12 14:39:08 2011
@@ -0,0 +1,353 @@
+package org.ofbiz.example;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.List;
+import java.util.Map;
+
+import javax.jcr.ItemExistsException;
+import javax.jcr.RepositoryException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import javolution.util.FastMap;
+import net.sf.json.JSONArray;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
+import org.apache.commons.io.IOUtils;
+import org.apache.jackrabbit.ocm.exception.ObjectContentManagerException;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.FileUtil;
+import org.ofbiz.base.util.StringUtil;
+import org.ofbiz.base.util.UtilGenerics;
+import org.ofbiz.base.util.UtilHttp;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.jcr.access.RepositoryAccess;
+import org.ofbiz.jcr.access.jackrabbit.RepositoryAccessJackrabbit;
+import org.ofbiz.jcr.api.JcrArticleHelper;
+import org.ofbiz.jcr.api.JcrContentHelper;
+import org.ofbiz.jcr.api.JcrFileHelper;
+import org.ofbiz.jcr.orm.OfbizRepositoryMapping;
+import org.ofbiz.jcr.orm.jackrabbit.OfbizRepositoryMappingJackrabbitArticle;
+import org.ofbiz.jcr.orm.jackrabbit.OfbizRepositoryMappingJackrabbitFile;
+import org.ofbiz.jcr.orm.jackrabbit.OfbizRepositoryMappingJackrabbitFolder;
+import org.ofbiz.jcr.orm.jackrabbit.OfbizRepositoryMappingJackrabbitHierarchyNode;
+import org.ofbiz.jcr.util.jackrabbit.JcrUtilJackrabbit;
+
+public class JackrabbitEvents {
+
+ public static final String module = JackrabbitEvents.class.getName();
+
+ /**
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ public static String addNewTextMessageToJcrRepository(HttpServletRequest request, HttpServletResponse response) {
+ GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
+ JcrArticleHelper articleHelper = new JcrArticleHelper(userLogin);
+
+ String contentPath = request.getParameter("path");
+ String language = request.getParameter("msgLocale");
+ String title = request.getParameter("title");
+ Calendar pubDate = new GregorianCalendar(); // TODO
+ String content = request.getParameter("message");
+
+ try {
+ articleHelper.storeContentInRepository(contentPath, language, title, content, pubDate);
+ } catch (ObjectContentManagerException e) {
+ Debug.logError(e, module);
+ request.setAttribute("_ERROR_MESSAGE_", e.getMessage());
+ return "error";
+ } catch (ItemExistsException e) {
+ Debug.logError(e, module);
+ request.setAttribute("_ERROR_MESSAGE_", e.getMessage());
+ return "error";
+ } finally {
+ articleHelper.closeContentSession();
+ }
+
+ return "success";
+ }
+
+ /**
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ public static String scanRepositoryStructure(HttpServletRequest request, HttpServletResponse response) {
+ GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
+ try {
+ List<Map<String, String>> listIt = JcrUtilJackrabbit.getRepositoryNodes(userLogin, "");
+ request.setAttribute("listIt", listIt);
+ } catch (RepositoryException e) {
+ Debug.logError(e, module);
+ request.setAttribute("_ERROR_MESSAGE_", e.getMessage());
+ return "error";
+ }
+
+ return "success";
+ }
+
+ /**
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ public static String getNodeContent(HttpServletRequest request, HttpServletResponse response) {
+ GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
+
+ String contentPath = request.getParameter("path");
+
+ String version = request.getParameter("versions");
+ String language = request.getParameter("language");
+
+ if (UtilValidate.isEmpty(contentPath)) {
+ String msg = "A node path is missing, please pass the path to the node which should be read from the repository."; // TODO
+ Debug.logError(msg, module);
+ request.setAttribute("_ERROR_MESSAGE_", msg);
+ return "error";
+ }
+
+ JcrArticleHelper articleHelper = new JcrArticleHelper(userLogin);
+ OfbizRepositoryMappingJackrabbitArticle ormArticle = null;
+ if (UtilValidate.isEmpty(version)) {
+ ormArticle = articleHelper.readContentFromRepository(contentPath, language);
+ } else {
+ ormArticle = articleHelper.readContentFromRepository(contentPath, language, version);
+ }
+
+ request.setAttribute("path", ormArticle.getPath());
+ request.setAttribute("language", ormArticle.getLanguage());
+ request.setAttribute("title", ormArticle.getTitle());
+ request.setAttribute("version", ormArticle.getVersion());
+ request.setAttribute("versionList", articleHelper.getVersionListForCurrentArticle());
+ request.setAttribute("languageList", articleHelper.getAvailableLanguageList());
+ request.setAttribute("createDate", ormArticle.getCreationDate());
+ request.setAttribute("content", ormArticle.getContent());
+
+ return "success";
+ }
+
+ /**
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ public static String updateRepositoryData(HttpServletRequest request, HttpServletResponse response) {
+ GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
+
+ String contentPath = request.getParameter("path");
+ JcrArticleHelper articleHelper = new JcrArticleHelper(userLogin);
+
+ OfbizRepositoryMappingJackrabbitArticle ormArticle = articleHelper.readContentFromRepository(contentPath);
+
+ // news.setLanguage(request.getParameter("language"));
+ ormArticle.setTitle(request.getParameter("title"));
+ ormArticle.setContent(request.getParameter("content"));
+ // request.getParameter("pubDate")
+ // request.getParameter("createDate")
+
+ try {
+ articleHelper.updateContentInRepository(ormArticle);
+ } catch (ObjectContentManagerException e) {
+ Debug.logError(e, module);
+ request.setAttribute("_ERROR_MESSAGE_", e.toString());
+ } catch (RepositoryException e) {
+ Debug.logError(e, module);
+ request.setAttribute("_ERROR_MESSAGE_", e.toString());
+ } finally {
+ articleHelper.closeContentSession();
+ }
+
+ return "success";
+ }
+
+ /**
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ public static String removeRepositoryNode(HttpServletRequest request, HttpServletResponse response) {
+ GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
+
+ String contentPath = request.getParameter("path");
+
+ JcrContentHelper helper = new JcrContentHelper(userLogin);
+ helper.removeContentObject(contentPath);
+
+ return "success";
+ }
+
+ /**
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ public static String uploadFileData(HttpServletRequest request, HttpServletResponse response) {
+ GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
+ ServletFileUpload fu = new ServletFileUpload(new DiskFileItemFactory(10240, FileUtil.getFile("runtime/tmp")));
+ List<FileItem> list = null;
+ Map<String, String> passedParams = FastMap.newInstance();
+
+ try {
+ list = UtilGenerics.checkList(fu.parseRequest(request));
+ } catch (FileUploadException e) {
+ Debug.logError(e, module);
+ request.setAttribute("_ERROR_MESSAGE_", e.toString());
+ return "error";
+ }
+
+ byte[] file = null;
+ for (FileItem fi : list) {
+ String fieldName = fi.getFieldName();
+
+ if (fi.isFormField()) {
+ String fieldStr = fi.getString();
+ passedParams.put(fieldName, fieldStr);
+ } else if (fieldName.startsWith("fileData")) {
+ passedParams.put("completeFileName", fi.getName());
+ file = fi.get();
+ }
+ }
+
+ JcrFileHelper fileHelper = new JcrFileHelper(userLogin);
+
+ try {
+
+ fileHelper.storeContentInRepository(file, passedParams.get("completeFileName"), passedParams.get("path"));
+
+ } catch (ObjectContentManagerException e) {
+ Debug.logError(e, module);
+ request.setAttribute("_ERROR_MESSAGE_", e.toString());
+ } catch (ItemExistsException e) {
+ Debug.logError(e, module);
+ request.setAttribute("_ERROR_MESSAGE_", e.toString());
+ } finally {
+ fileHelper.closeContentSession();
+ }
+
+ return "success";
+ }
+
+ /**
+ * Creates the FILE Tree as JSON Object
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ public static String getRepositoryFileTree(HttpServletRequest request, HttpServletResponse response) {
+ GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
+
+ RepositoryAccess repositoryAccess = new RepositoryAccessJackrabbit(userLogin);
+ try {
+ JSONArray fileTree = repositoryAccess.getJsonFileTree();
+ request.setAttribute("fileTree", StringUtil.wrapString(fileTree.toString()));
+ } catch (RepositoryException e) {
+ Debug.logError(e, module);
+ request.setAttribute("dataTree", new JSONArray());
+ request.setAttribute("_ERROR_MESSAGE_", e.toString());
+ return "error";
+ }
+
+ return "success";
+ }
+
+ /**
+ * Creates the DATA (TEXT) Tree as JSON Object
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ public static String getRepositoryDataTree(HttpServletRequest request, HttpServletResponse response) {
+ GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
+
+ RepositoryAccess repositoryAccess = new RepositoryAccessJackrabbit(userLogin);
+ try {
+ JSONArray fileTree = repositoryAccess.getJsonDataTree();
+ request.setAttribute("dataTree", StringUtil.wrapString(fileTree.toString()));
+ } catch (RepositoryException e) {
+ Debug.logError(e, module);
+ request.setAttribute("dataTree", new JSONArray());
+ request.setAttribute("_ERROR_MESSAGE_", e.toString());
+ return "error";
+ }
+
+ return "success";
+ }
+
+ public static String getFileFromRepository(HttpServletRequest request, HttpServletResponse response) {
+ GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
+
+ String contentPath = request.getParameter("path");
+
+ if (UtilValidate.isEmpty(contentPath)) {
+ String msg = "A node path is missing, please pass the path to the node which should be read from the repository."; // TODO
+ Debug.logError(msg, module);
+ request.setAttribute("_ERROR_MESSAGE_", msg);
+ return "error";
+ }
+
+ JcrFileHelper fileHelper = new JcrFileHelper(userLogin);
+ OfbizRepositoryMappingJackrabbitHierarchyNode orm = fileHelper.getRepositoryContent(contentPath);
+
+ if (fileHelper.isFileContent()) {
+ OfbizRepositoryMappingJackrabbitFile file = (OfbizRepositoryMappingJackrabbitFile) orm;
+ InputStream fileStream = file.getResource().getData();
+
+ String fileName = file.getPath();
+ if (fileName.indexOf("/") != -1) {
+ fileName = fileName.substring(fileName.indexOf("/") + 1);
+ }
+
+ try {
+ UtilHttp.streamContentToBrowser(response, IOUtils.toByteArray(fileStream), file.getResource().getMimeType(), fileName);
+ } catch (IOException e) {
+ Debug.logError(e, module);
+ request.setAttribute("_ERROR_MESSAGE_", e.getMessage());
+ return "error";
+ }
+ } else {
+ Debug.logWarning("This content is no file content, the content is from the type: " + orm.getClass().getName(), module);
+ }
+ return "success";
+ }
+
+ public static String getFileInformation(HttpServletRequest request, HttpServletResponse response) {
+ GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
+ String contentPath = request.getParameter("path");
+
+ JcrFileHelper fileHelper = new JcrFileHelper(userLogin);
+ OfbizRepositoryMapping orm = fileHelper.getRepositoryContent(contentPath);
+
+ // Here we can differentiate between a file or folder content
+ if (fileHelper.isFileContent()) {
+ OfbizRepositoryMappingJackrabbitFile file = (OfbizRepositoryMappingJackrabbitFile) orm;
+ request.setAttribute("fileName", file.getPath());
+ request.setAttribute("fileLastModified", file.getResource().getLastModified().getTime());
+ request.setAttribute("fileMimeType", file.getResource().getMimeType());
+ request.setAttribute("fileCreationDate", file.getCreationDate().getTime());
+ } else if (fileHelper.isFolderContent()) {
+ OfbizRepositoryMappingJackrabbitFolder folder = (OfbizRepositoryMappingJackrabbitFolder) orm;
+ request.setAttribute("fileName", folder.getPath());
+ request.setAttribute("fileCreationDate", folder.getCreationDate().getTime());
+ }
+
+ return "success";
+ }
+
+}
\ No newline at end of file
Propchange: ofbiz/branches/jackrabbit20100709/framework/example/src/org/ofbiz/example/JackrabbitEvents.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: ofbiz/branches/jackrabbit20100709/framework/example/webapp/example/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/example/webapp/example/WEB-INF/controller.xml?rev=1182405&r1=1182404&r2=1182405&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/example/webapp/example/WEB-INF/controller.xml (original)
+++ ofbiz/branches/jackrabbit20100709/framework/example/webapp/example/WEB-INF/controller.xml Wed Oct 12 14:39:08 2011
@@ -249,37 +249,37 @@ under the License.
</request-map>
<request-map uri="StoreNewRepositoryData">
<security auth="true" https="true" />
- <event type="java" path="org.ofbiz.content.jcr.JackrabbitEvents" invoke="addNewTextMessageToJcrRepository" />
+ <event type="java" path="org.ofbiz.example.JackrabbitEvents" invoke="addNewTextMessageToJcrRepository" />
<response name="success" type="request" value="ExampleJackrabbitShowContentData" />
<response name="error" type="view" value="ExampleJackrabbitAddData" />
</request-map>
<request-map uri="ExampleJackrabbitScanRepositoryStructure">
<security auth="true" https="true" />
- <event type="java" path="org.ofbiz.content.jcr.JackrabbitEvents" invoke="scanRepositoryStructure"/>
+ <event type="java" path="org.ofbiz.example.JackrabbitEvents" invoke="scanRepositoryStructure"/>
<response name="success" type="view" value="ExampleJackrabbitScanRepositoryStructure" />
<response name="error" type="view" value="ExampleJackrabbitScanRepositoryStructure" />
</request-map>
<request-map uri="EditRepositoryContent">
<security auth="true" https="true" />
- <event type="java" path="org.ofbiz.content.jcr.JackrabbitEvents" invoke="getNodeContent"/>
+ <event type="java" path="org.ofbiz.example.JackrabbitEvents" invoke="getNodeContent"/>
<response name="success" type="view" value="ExampleJackrabbitEditRepositoryContent" />
<response name="error" type="view" value="ExampleJackrabbitShowContentData" />
</request-map>
<request-map uri="UpdateRepositoryData">
<security auth="true" https="true" />
- <event type="java" path="org.ofbiz.content.jcr.JackrabbitEvents" invoke="updateRepositoryData"/>
+ <event type="java" path="org.ofbiz.example.JackrabbitEvents" invoke="updateRepositoryData"/>
<response name="success" type="request" value="EditRepositoryContent" />
<response name="error" type="request" value="EditRepositoryContent" />
</request-map>
<request-map uri="RemoveRepositoryNode">
<security auth="true" https="true" />
- <event type="java" path="org.ofbiz.content.jcr.JackrabbitEvents" invoke="removeRepositoryNode"/>
+ <event type="java" path="org.ofbiz.example.JackrabbitEvents" invoke="removeRepositoryNode"/>
<response name="success" type="request" value="ExampleJackrabbitShowContentData" />
<response name="error" type="request" value="ExampleJackrabbitShowContentData" />
</request-map>
<request-map uri="RemoveRepositoryFile">
<security auth="true" https="true" />
- <event type="java" path="org.ofbiz.content.jcr.JackrabbitEvents" invoke="removeRepositoryNode"/>
+ <event type="java" path="org.ofbiz.example.JackrabbitEvents" invoke="removeRepositoryNode"/>
<response name="success" type="request" value="ExampleJackrabbitShowUploadedFiles" />
<response name="error" type="request" value="ExampleJackrabbitShowUploadedFiles" />
</request-map>
@@ -290,31 +290,31 @@ under the License.
</request-map>
<request-map uri="StoreNewRepositoryFileData">
<security auth="true" https="true" />
- <event type="java" path="org.ofbiz.content.jcr.JackrabbitEvents" invoke="uploadFileData"/>
+ <event type="java" path="org.ofbiz.example.JackrabbitEvents" invoke="uploadFileData"/>
<response name="success" type="request" value="ExampleJackrabbitShowUploadedFiles" />
<response name="error" type="view" value="ExampleJackrabbitUploadFileData" />
</request-map>
<request-map uri="ExampleJackrabbitShowUploadedFiles">
<security auth="true" https="true" />
- <event type="java" path="org.ofbiz.content.jcr.JackrabbitEvents" invoke="getRepositoryFileTree"/>
+ <event type="java" path="org.ofbiz.example.JackrabbitEvents" invoke="getRepositoryFileTree"/>
<response name="success" type="view" value="ExampleJackrabbitShowUploadedFiles" />
<response name="error" type="view" value="ExampleJackrabbitShowUploadedFiles" />
</request-map>
<request-map uri="GetFileFromRepository">
<security auth="true" https="true" />
- <event type="java" path="org.ofbiz.content.jcr.JackrabbitEvents" invoke="getFileFromRepository"/>
+ <event type="java" path="org.ofbiz.example.JackrabbitEvents" invoke="getFileFromRepository"/>
<response name="success" type="none" />
<response name="error" type="none" />
</request-map>
<request-map uri="ExampleJackrabbitShowContentData">
<security auth="true" https="true" />
- <event type="java" path="org.ofbiz.content.jcr.JackrabbitEvents" invoke="getRepositoryDataTree"/>
+ <event type="java" path="org.ofbiz.example.JackrabbitEvents" invoke="getRepositoryDataTree"/>
<response name="success" type="view" value="ExampleJackrabbitShowContentData"/>
<response name="error" type="view" value="ExampleJackrabbitShowContentData"/>
</request-map>
<request-map uri="OpenFileInformation">
<security auth="true" https="true" />
- <event type="java" path="org.ofbiz.content.jcr.JackrabbitEvents" invoke="getFileInformation"/>
+ <event type="java" path="org.ofbiz.example.JackrabbitEvents" invoke="getFileInformation"/>
<response name="success" type="view" value="ExampleJackrabbitOpenFileInformation"/>
<response name="error" type="view" value="ExampleJackrabbitShowUploadedFiles"/>
</request-map>
Modified: ofbiz/branches/jackrabbit20100709/framework/example/widget/example/ExampleJackrabbitForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/example/widget/example/ExampleJackrabbitForms.xml?rev=1182405&r1=1182404&r2=1182405&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/example/widget/example/ExampleJackrabbitForms.xml (original)
+++ ofbiz/branches/jackrabbit20100709/framework/example/widget/example/ExampleJackrabbitForms.xml Wed Oct 12 14:39:08 2011
@@ -83,7 +83,7 @@ under the License.
<hidden />
</field>
<field name="language" title="${uiLabelMap.CommonChooseLanguage}" >
- <drop-down allow-empty="false" current="first-in-list" current-description="${parameters.selectedLanguage}"><list-options key-name="localeId" list-name="parameters.languageList" description="${localeId}"/></drop-down>
+ <drop-down allow-empty="false" current="first-in-list" current-description="${parameters.selectedLanguage}"><list-options key-name="languageList" description="${languageList}" list-name="parameters.languageList" list-entry-name="languageList"/></drop-down>
</field>
<field name="versions" >
<drop-down allow-empty="false" current="selected" no-current-selected-key="${parameters.version}"><list-options key-name="versionList" description="${versionList}" list-name="parameters.versionList" list-entry-name="versionList"/></drop-down>
Modified: ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/ContentReader.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/ContentReader.java?rev=1182405&r1=1182404&r2=1182405&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/ContentReader.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/ContentReader.java Wed Oct 12 14:39:08 2011
@@ -6,7 +6,6 @@ import net.sf.json.JSONArray;
import org.ofbiz.jcr.orm.OfbizRepositoryMapping;
-
public interface ContentReader {
/**
@@ -18,7 +17,10 @@ public interface ContentReader {
OfbizRepositoryMapping getContentObject(String nodePath);
/**
- * Return an OfbizRepositoryMapping Object in the specified language and version from the JCR Repository.
+ * Return an OfbizRepositoryMapping Object in the specified language and
+ * version from the JCR Repository. The Method checks if the requested
+ * version for this node exist. If not the latest version of the node will
+ * be returned.
*
* @param nodePath
* @param language
@@ -28,7 +30,8 @@ public interface ContentReader {
OfbizRepositoryMapping getContentObject(String nodePath, String version);
/**
- * Returns a tree of all content nodes (except folders and files) in the repository.
+ * Returns a tree of all content nodes (except folders and files) in the
+ * repository.
*
* @return
* @throws RepositoryException
Modified: ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/VersioningManager.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/VersioningManager.java?rev=1182405&r1=1182404&r2=1182405&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/VersioningManager.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/VersioningManager.java Wed Oct 12 14:39:08 2011
@@ -14,6 +14,15 @@ public interface VersioningManager {
public List<String> getVersionList(String nodePath);
/**
+ * Returns true if the passed node exist in the requested version.
+ *
+ * @param nodePath
+ * @param version
+ * @return
+ */
+ public boolean checkIfVersionExist(String nodePath, String version);
+
+ /**
* Returns the last checked in version.
*
* @param nodePath
Modified: ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java?rev=1182405&r1=1182404&r2=1182405&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java Wed Oct 12 14:39:08 2011
@@ -2,14 +2,15 @@ package org.ofbiz.jcr.access.jackrabbit;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
-import javax.jcr.PathNotFoundException;
import javax.jcr.RepositoryException;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
+import org.ofbiz.base.util.Debug;
import org.ofbiz.jcr.access.ContentReader;
+import org.ofbiz.jcr.access.VersioningManager;
import org.ofbiz.jcr.orm.OfbizRepositoryMapping;
public class ContentReaderJackrabbit implements ContentReader {
@@ -24,30 +25,30 @@ public class ContentReaderJackrabbit imp
/*
* (non-Javadoc)
- * @see org.ofbiz.jcr.access.ContentReader#getContentObject(java.lang.String)
+ *
+ * @see
+ * org.ofbiz.jcr.access.ContentReader#getContentObject(java.lang.String)
*/
@Override
public OfbizRepositoryMapping getContentObject(String nodePath) {
- Node n = null;
- try {
- n = ocm.getSession().getNode(nodePath);
- } catch (PathNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (RepositoryException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
return (OfbizRepositoryMapping) ocm.getObject(nodePath);
}
/*
* (non-Javadoc)
- * @see org.ofbiz.jcr.access.ContentReader#getContentObject(java.lang.String, java.lang.String, java.lang.String)
+ *
+ * @see
+ * org.ofbiz.jcr.access.ContentReader#getContentObject(java.lang.String,
+ * java.lang.String, java.lang.String)
*/
@Override
public OfbizRepositoryMapping getContentObject(String nodePath, String version) {
+ VersioningManager vm = new VersioningManagerJackrabbit(ocm);
+ if (!vm.checkIfVersionExist(nodePath, version)) {
+ Debug.logWarning("The version: " + version + " for content object: " + nodePath + " does not exist, the latest version for this object will be returned.", module);
+ return getContentObject(nodePath);
+ }
+
return (OfbizRepositoryMapping) ocm.getObject(nodePath, version);
}
Modified: ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/VersioningManagerJackrabbit.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/VersioningManagerJackrabbit.java?rev=1182405&r1=1182404&r2=1182405&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/VersioningManagerJackrabbit.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/VersioningManagerJackrabbit.java Wed Oct 12 14:39:08 2011
@@ -63,6 +63,15 @@ public class VersioningManagerJackrabbit
/*
* (non-Javadoc)
+ * @see org.ofbiz.jcr.access.VersioningManager#checkIfVersionExist(java.lang.String, java.lang.String)
+ */
+ @Override
+ public boolean checkIfVersionExist(String nodePath, String version) {
+ return getVersionList(nodePath).contains(version);
+ }
+
+ /*
+ * (non-Javadoc)
*
* @see
* org.ofbiz.jcr.access.VersioningManager#checkOutContentObject(java.lang
Modified: ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/JcrArticleHelper.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/JcrArticleHelper.java?rev=1182405&r1=1182404&r2=1182405&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/JcrArticleHelper.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/JcrArticleHelper.java Wed Oct 12 14:39:08 2011
@@ -8,6 +8,7 @@ import java.util.Locale;
import javax.jcr.ItemExistsException;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
+import javax.jcr.PathNotFoundException;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
@@ -112,7 +113,10 @@ public class JcrArticleHelper extends Ab
if (orm instanceof OfbizRepositoryMappingJackrabbitArticle) {
article = (OfbizRepositoryMappingJackrabbitArticle) orm;
article.setVersion(version);
- article.setPath(contentPath); // the content path must be manipulated because, the jackrabbit orm returns a full blown path with version information.
+ article.setPath(contentPath); // the content path must be
+ // manipulated because, the jackrabbit
+ // orm returns a full blown path with
+ // version information.
return article;
} else {
throw new ClassCastException("The content object for the path: " + contentPath + " is not an article content object. This Helper can only handle content objects with the type: " + OfbizRepositoryMappingJackrabbitArticle.class.getName());
@@ -173,12 +177,43 @@ public class JcrArticleHelper extends Ab
versions = access.getVersionList(article.getPath());
} else {
Debug.logWarning("No Article is loaded from the repository, please load an article first before requesting the version list.", module);
- versions = new ArrayList<String>();
+ versions = new ArrayList<String>(1);
}
return versions;
}
+ public List<String> getAvailableLanguageList() {
+ List<String> languages = null;
+
+ if (article != null && article.getLocalized()) {
+ Session session = access.getSession();
+
+ try {
+ languages = new ArrayList<String>();
+ Node node = session.getNode(article.getPath()).getParent();
+ NodeIterator nodes = node.getNodes();
+ while (nodes.hasNext()) {
+ String l = nodes.nextNode().getPath();
+ languages.add(l.substring(l.lastIndexOf("/") + 1));
+ }
+
+ } catch (PathNotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (RepositoryException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ } else {
+ Debug.logWarning("No Article is loaded from the repository, please load an article first before requesting the version list.", module);
+ languages = new ArrayList<String>(1);
+ }
+
+ return languages;
+ }
+
/**
* This method should determine the correct language for the content. It
* covers the case when the passed language is not available.
Modified: ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/test/JcrTests.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/test/JcrTests.java?rev=1182405&r1=1182404&r2=1182405&view=diff
==============================================================================
--- ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/test/JcrTests.java (original)
+++ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/test/JcrTests.java Wed Oct 12 14:39:08 2011
@@ -65,7 +65,7 @@ public class JcrTests extends OFBizTestC
public void testCreateRepositoryNewsNode() throws Exception {
// Create New Object
// path, language, title, publication date, content string
- OfbizRepositoryMappingJackrabbitNews orm = new OfbizRepositoryMappingJackrabbitNews("/news/today", "en", "News of Today", new GregorianCalendar(), "Hello World");
+ OfbizRepositoryMappingJackrabbitNews orm = new OfbizRepositoryMappingJackrabbitNews("/news/today", "en", "News of Today", new GregorianCalendar(), "Hello World");
assertNotNull(orm);
repositoryAccess.storeContentObject(orm);