knguyen 2005/02/23 18:15:43 CET
Modified files:
core/src/java/org/apache/slide/security
JahiaWebdavSecurity.java
core/src/java/org/jahia/content ContentMetadataFacade.java
core/src/java/org/jahia/data/containers
JahiaContentContainerFacade.java
core/src/java/org/jahia/data/fields JahiaFileFieldWrapper.java
core/src/java/org/jahia/services/content JCRStoreService.java
core/src/java/org/jahia/services/metadata
MetadataBaseService.java
core/src/java/org/jahia/services/pages
JahiaPageBaseService.java
Log:
- partial adv search refactoring
Revision Changes Path
1.4 +5 -4
jahia/core/src/java/org/apache/slide/security/JahiaWebdavSecurity.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/apache/slide/security/JahiaWebdavSecurity.java.diff?r1=1.3&r2=1.4&f=h
1.5 +15 -0
jahia/core/src/java/org/jahia/content/ContentMetadataFacade.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/content/ContentMetadataFacade.java.diff?r1=1.4&r2=1.5&f=h
1.5 +15 -1
jahia/core/src/java/org/jahia/data/containers/JahiaContentContainerFacade.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/data/containers/JahiaContentContainerFacade.java.diff?r1=1.4&r2=1.5&f=h
1.3 +5 -2
jahia/core/src/java/org/jahia/data/fields/JahiaFileFieldWrapper.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/data/fields/JahiaFileFieldWrapper.java.diff?r1=1.2&r2=1.3&f=h
1.2 +137 -25
jahia/core/src/java/org/jahia/services/content/JCRStoreService.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/content/JCRStoreService.java.diff?r1=1.1&r2=1.2&f=h
1.4 +11 -0
jahia/core/src/java/org/jahia/services/metadata/MetadataBaseService.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/metadata/MetadataBaseService.java.diff?r1=1.3&r2=1.4&f=h
1.7 +1 -1
jahia/core/src/java/org/jahia/services/pages/JahiaPageBaseService.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/pages/JahiaPageBaseService.java.diff?r1=1.6&r2=1.7&f=h
Index: JahiaWebdavSecurity.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/apache/slide/security/JahiaWebdavSecurity.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JahiaWebdavSecurity.java 22 Feb 2005 11:50:14 -0000 1.3
+++ JahiaWebdavSecurity.java 23 Feb 2005 17:15:41 -0000 1.4
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/repository/jahia/core/src/java/org/apache/slide/security/JahiaWebdavSecurity.java,v
1.3 2005/02/22 11:50:14 tdraier Exp $
- * $Revision: 1.3 $
- * $Date: 2005/02/22 11:50:14 $
+ * $Header:
/home/cvs/repository/jahia/core/src/java/org/apache/slide/security/JahiaWebdavSecurity.java,v
1.4 2005/02/23 17:15:41 knguyen Exp $
+ * $Revision: 1.4 $
+ * $Date: 2005/02/23 17:15:41 $
*
* ====================================================================
*
@@ -66,7 +66,7 @@
* Security helper.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Remy Maucherat</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public class JahiaWebdavSecurity implements Security {
@@ -406,6 +406,7 @@
if (Configuration.useIntegratedSecurity()) {
// check if permission has already been checked
Boolean permission = token.checkPermissionCache(object,
action);
+
if (permission == null) {
// if not checked before, check now
try {
Index: ContentMetadataFacade.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/content/ContentMetadataFacade.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ContentMetadataFacade.java 8 Feb 2005 17:55:44 -0000 1.4
+++ ContentMetadataFacade.java 23 Feb 2005 17:15:42 -0000 1.5
@@ -331,6 +331,21 @@
this.containers.put(entryStateKey,stagingContainer);
this.activeAndStagingEntryStates.add(entryStateKey);
}
+ } else {
+ // we can have fields in staging but container only in
active ( due to container update mechanism change !! )
+ // so we store the active as staging to ensure we have
loaded all staged fields as well
+ if ( stagingContainer != null) {
+ stagingContainer.setLanguageCode(locale.toString());
+ stagingContainer.fieldsStructureCheck(jParams);
+ PublicContentFieldEntryState entryStateKey =
+ new PublicContentFieldEntryState(
+ EntryLoadRequest.STAGING_WORKFLOW_STATE,
+ 0, locale.toString());
+ if ( this.containers.get(entryStateKey)==null ){
+ this.containers.put(entryStateKey,stagingContainer);
+ this.activeAndStagingEntryStates.add(entryStateKey);
+ }
+ }
}
}
}
Index: JahiaContentContainerFacade.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/data/containers/JahiaContentContainerFacade.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- JahiaContentContainerFacade.java 9 Dec 2004 11:19:45 -0000 1.4
+++ JahiaContentContainerFacade.java 23 Feb 2005 17:15:42 -0000 1.5
@@ -272,7 +272,6 @@
JahiaContainer stagingContainer =
loadContainer(loadFlag,loadVersion,jParams,locales,createMissingLanguages);
if ( (stagingContainer != null) &&
(stagingContainer.getWorkflowState()>EntryLoadRequest.ACTIVE_WORKFLOW_STATE) ){
-
stagingContainer.setLanguageCode(locale.toString());
stagingContainer.fieldsStructureCheck(jParams);
PublicContentFieldEntryState entryStateKey =
@@ -283,6 +282,21 @@
this.containers.put(entryStateKey,stagingContainer);
this.activeAndStagingEntryStates.add(entryStateKey);
}
+ } else {
+ // we can have fields in staging but container only in
active ( due to container update mechanism change !! )
+ // so we store the active as staging to ensure we have
loaded all staged fields as well
+ if ( stagingContainer != null) {
+ stagingContainer.setLanguageCode(locale.toString());
+ stagingContainer.fieldsStructureCheck(jParams);
+ PublicContentFieldEntryState entryStateKey =
+ new PublicContentFieldEntryState(
+ EntryLoadRequest.STAGING_WORKFLOW_STATE,
+ 0, locale.toString());
+ if ( this.containers.get(entryStateKey)==null ){
+ this.containers.put(entryStateKey,stagingContainer);
+ this.activeAndStagingEntryStates.add(entryStateKey);
+ }
+ }
}
}
}
Index: JahiaFileFieldWrapper.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/data/fields/JahiaFileFieldWrapper.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JahiaFileFieldWrapper.java 17 Nov 2004 15:01:04 -0000 1.2
+++ JahiaFileFieldWrapper.java 23 Feb 2005 17:15:42 -0000 1.3
@@ -165,10 +165,13 @@
ContentFileField contentFileField =
(ContentFileField)ContentFileField.getField(getID());
- String val = contentFileField.getValue(jParams);
+ String val = contentFileField.getValue(jParams);
+
+ /** We should re-index the field, even thought it's the same file,
because of file properties extraction concern!
+ *
if (contentFileField.hasActiveEntries() && getValue().equals(val)) {
return true;
- }
+ }**/
if (val == null) val ="";
// DAVFileAccess oldObjectDav =
JahiaWebdavBaseService.getInstance().getDAVFileAccess(jParams, val);
Index: JCRStoreService.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/content/JCRStoreService.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JCRStoreService.java 11 Jan 2005 11:26:09 -0000 1.1
+++ JCRStoreService.java 23 Feb 2005 17:15:43 -0000 1.2
@@ -6,22 +6,28 @@
*/
package org.jahia.services.content;
+import java.io.FileInputStream;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
import javax.jcr.*;
-
import javax.naming.Context;
import javax.naming.InitialContext;
import org.apache.jackrabbit.core.jndi.RegistryHelper;
-
+import org.apache.ojb.jdo.jdoql.ThisExpression;
import org.jahia.bin.Jahia;
import org.jahia.bin.JahiaConfig;
import org.jahia.exceptions.JahiaInitializationException;
-import org.jahia.services.*;
-import org.jahia.services.htmlparser.HtmlParserBaseService;
+import org.jahia.services.JahiaInitializableService;
import org.jahia.settings.SettingsBean;
import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.config.PropertiesFactoryBean;
/**
* @author hollis
@@ -36,6 +42,8 @@
static private JCRStoreService instance = null;
+ private Repository repo = null;
+
protected JCRStoreService() {
logger.info("***** Starting the JCRStoreService *****" );
}
@@ -54,39 +62,143 @@
public void init( SettingsBean jSettings )
throws JahiaInitializationException{
try {
-
+
BeanFactory bf = org.jahia.bin.Jahia.getConfigBeanFactory();
- JahiaConfig jahiaConfig =
(JahiaConfig)bf.getBean("jahiaConfigBean");
+
+ Properties jcrConfig = (Properties)bf.getBean("JCRConfig");
+
String configFile =
Jahia.getStaticServletConfig().getServletContext()
-
.getRealPath(jahiaConfig.getProperty("org.jahia.repository.config"));
+
.getRealPath(jcrConfig.getProperty("org.jahia.repository.config"));
String repHomeDir =
Jahia.getStaticServletConfig().getServletContext()
-
.getRealPath(jahiaConfig.getProperty("org.jahia.repository.homedir"));
- String repName =
jahiaConfig.getProperty("org.jahia.repository.name");
-
+
.getRealPath(jcrConfig.getProperty("org.jahia.repository.homedir"));
+ String repName =
jcrConfig.getProperty("org.jahia.repository.name");
+
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory");
env.put(Context.PROVIDER_URL, "localhost");
InitialContext ctx = new InitialContext(env);
RegistryHelper.registerRepository(ctx, repName, configFile,
repHomeDir, true);
- Repository r = (Repository) ctx.lookup(repName);
- Session session = r.login(new SimpleCredentials("anonymous",
"".toCharArray()), null);
- Node rn=session.getRootNode();
-
- System.out.println(rn.getPrimaryNodeType().getName());
-
- if (!rn.hasNode("testnode")) {
- System.out.println("creating testnode");
- Node n=rn.addNode("testnode", "nt:unstructured");
- n.setProperty("testprop", new StringValue("Hello, World."));
- session.save();
+ repo = (Repository) ctx.lookup(repName);
+ // remove search index lock
+ String searchIndexDir =
Jahia.getStaticServletConfig().getServletContext()
+
.getRealPath(jcrConfig.getProperty("org.jahia.repository.homedir") +
File.separator + "workspaces" + File.separator + "default" + File.separator +
"index");
+ File dir = new File(searchIndexDir);
+ File[] files = null;
+ File f = null;
+ if ( dir.isDirectory() ){
+ files = dir.listFiles();
+ for ( int i=0; i<files.length; i++ ){
+ f = (File)files[i];
+ if ( f.isFile() &&
f.getName().toLowerCase().endsWith(".lock") ){
+ try {
+ f.delete();
+ } catch ( Throwable t){
+ logger.debug("Error removing search index
lock",t);
+ }
+ }
+ }
}
+ Workspace workspace = this.getSession().getWorkspace();
+ String workspaceName = workspace.getName();
-
System.out.println(rn.getProperty("testnode/testprop").getString());
- } catch (Exception e){
- System.err.println(e);
+ this.registerNamespaces();
+ this.test();
+
+ } catch (Exception e){
+ logger.debug(e);
}
}
-
+
+ public Repository getRepository(){
+ return this.repo;
+ }
+
+ public Session getSession(){
+ Session session = null;
+ try {
+ session = this.repo.login(new SimpleCredentials("anonymous",
"".toCharArray()), null);
+ } catch ( Throwable t ){
+ logger.debug("Exception retrieving session",t);
+ }
+ return session;
+ }
+
+ private void registerNamespaces() throws RepositoryException {
+ BeanFactory bf = org.jahia.bin.Jahia.getConfigBeanFactory();
+
+ Properties jcrConfig = (Properties)bf.getBean("JCRNamespaces");
+ NamespaceRegistry namespaceRegistry = this.getSession()
+ .getWorkspace().getNamespaceRegistry();
+ Iterator iterator = jcrConfig.keySet().iterator();
+ String prefix = null;
+ String url = null;
+ List definedPrefixes =
Arrays.asList(namespaceRegistry.getPrefixes());
+ while (iterator.hasNext()){
+ prefix = (String)iterator.next();
+ url = (String)jcrConfig.getProperty(prefix);
+ if ( url != null ){
+ if ( !definedPrefixes.contains(prefix) ){
+ namespaceRegistry.registerNamespace(prefix,url);
+ }
+ }
+ }
+ }
+
+ private static void dump (Node n) throws RepositoryException {
+ System.out.println(n.getPath());
+ PropertyIterator pit=n.getProperties();
+ while (pit.hasNext()) {
+ Property p=pit.nextProperty();
+ System.out.println(p.getPath()+"="+p.getString());
+ }
+ NodeIterator nit=n.getNodes();
+ while (nit.hasNext()) {
+ Node cn=nit.nextNode();
+ dump (cn);
+ }
+ }
+
+ private void test() throws LoginException, RepositoryException {
+
+ Session session = this.getRepository()
+ .login(new SimpleCredentials("anonymous", "".toCharArray()),
null);
+ ContentDefinitionTest contentDefinitionTest = new
ContentDefinitionTest();
+ contentDefinitionTest.testNodeTypeIterator(session);
+ contentDefinitionTest.testCustomNodeType(session);
+ contentDefinitionTest.testCoreMetadatas(session);
+ contentDefinitionTest.testUpdateNodeTypeDefinition(session);
+ contentDefinitionTest.testCreateNewsContainer(session);
+ contentDefinitionTest.testSearch(session);
+
+ /*
+ Session session = repo.login(new SimpleCredentials("anonymous",
"".toCharArray()), null);
+
+ Node rn=session.getRootNode();
+
+ System.out.println(rn.getPrimaryNodeType().getName());
+
+ if (!rn.hasNode("testnode")) {
+ System.out.println("creating testnode");
+ Node n=rn.addNode("testnode", "nt:unstructured");
+ n.setProperty("testprop", new StringValue("Hello, World."));
+ session.save();
+ }
+
+ System.out.println(rn.getProperty("testnode/testprop").getString());
+
+ String importTest =
Jahia.getStaticServletConfig().getServletContext()
+
.getRealPath(jcrConfig.getProperty("org.jahia.repository.import-test"));
+
+ if (!rn.hasNode("importxml")) {
+ System.out.println("importing xml");
+ Node n=rn.addNode("importxml", "nt:unstructured");
+ session.importXML("/importxml", new FileInputStream(importTest));
+ session.save();
+ }
+ //dump(rn);
+ */
+
+ }
}
Index: MetadataBaseService.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/metadata/MetadataBaseService.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MetadataBaseService.java 6 Aug 2004 15:33:21 -0000 1.3
+++ MetadataBaseService.java 23 Feb 2005 17:15:43 -0000 1.4
@@ -25,6 +25,14 @@
import java.util.Hashtable;
import java.util.Iterator;
+import javax.jcr.Repository;
+import javax.jcr.Session;
+import javax.jcr.nodetype.NodeDef;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.NodeTypeIterator;
+import javax.jcr.nodetype.NodeTypeManager;
+import javax.jcr.nodetype.PropertyDef;
+
import org.aopalliance.intercept.Interceptor;
import org.jahia.content.ContentDefinition;
import org.jahia.content.ObjectKey;
@@ -36,6 +44,7 @@
import org.jahia.exceptions.JahiaException;
import org.jahia.exceptions.JahiaInitializationException;
import org.jahia.registries.JahiaFieldDefinitionsRegistry;
+import org.jahia.registries.ServicesRegistry;
import org.jahia.services.fields.ContentField;
import org.jahia.settings.SettingsBean;
import org.springframework.aop.framework.Advised;
@@ -98,6 +107,8 @@
*/
public void reloadConfigurationFile() throws
java.io.FileNotFoundException,
JahiaException {
+
+
InputStream is = new FileInputStream(configFile);
beanFactory = new XmlBeanFactory(is);
Index: JahiaPageBaseService.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/pages/JahiaPageBaseService.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- JahiaPageBaseService.java 17 Nov 2004 15:01:09 -0000 1.6
+++ JahiaPageBaseService.java 23 Feb 2005 17:15:43 -0000 1.7
@@ -481,7 +481,7 @@
}
/** @todo this doesn't delete the versioned entries, should we do
- * it or not ?
+ * it or not ? z
*/
// now ... kill the victim !!