knguyen 2005/11/10 11:31:38 CET
Modified files:
core/src/conf/metadata jahia.xml
core/src/java/org/jahia/content ContentMetadataFacade.java
ContentObject.java
core/src/java/org/jahia/engines/metadata Metadata_Engine.java
core/src/java/org/jahia/engines/shared Category_Field.java
core/src/java/org/jahia/services/fields ContentField.java
core/src/java/org/jahia/services/importexport
ImportHandler.java
core/src/java/org/jahia/services/metadata MetadataAdvice.java
MetadataBaseService.java
MetadataService.java
core/src/java/org/jahia/services/search
JahiaSearchBaseService.java
core/src/webapp/WEB-INF/etc/spring
applicationcontext-metadata.xml
Added files:
core/src/java/org/jahia/services/metadata
MetadataEventListener.java
Log:
- improving metadata listeners
Revision Changes Path
1.5 +3 -3 jahia/core/src/conf/metadata/jahia.xml
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/conf/metadata/jahia.xml.diff?r1=1.4&r2=1.5&f=h
1.10 +0 -3
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.9&r2=1.10&f=h
1.26 +0 -37 jahia/core/src/java/org/jahia/content/ContentObject.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/content/ContentObject.java.diff?r1=1.25&r2=1.26&f=h
1.9 +0 -5
jahia/core/src/java/org/jahia/engines/metadata/Metadata_Engine.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/engines/metadata/Metadata_Engine.java.diff?r1=1.8&r2=1.9&f=h
1.7 +1 -1
jahia/core/src/java/org/jahia/engines/shared/Category_Field.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/engines/shared/Category_Field.java.diff?r1=1.6&r2=1.7&f=h
1.38 +22 -0
jahia/core/src/java/org/jahia/services/fields/ContentField.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/fields/ContentField.java.diff?r1=1.37&r2=1.38&f=h
1.41 +2 -2
jahia/core/src/java/org/jahia/services/importexport/ImportHandler.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/importexport/ImportHandler.java.diff?r1=1.40&r2=1.41&f=h
1.11 +8 -504
jahia/core/src/java/org/jahia/services/metadata/MetadataAdvice.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/metadata/MetadataAdvice.java.diff?r1=1.10&r2=1.11&f=h
1.11 +12 -49
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.10&r2=1.11&f=h
1.1 +402 -0
jahia/core/src/java/org/jahia/services/metadata/MetadataEventListener.java (new)
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/metadata/MetadataEventListener.java?rev=1.1&content-type=text/plain
1.6 +0 -19
jahia/core/src/java/org/jahia/services/metadata/MetadataService.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/metadata/MetadataService.java.diff?r1=1.5&r2=1.6&f=h
1.28 +2 -3
jahia/core/src/java/org/jahia/services/search/JahiaSearchBaseService.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/search/JahiaSearchBaseService.java.diff?r1=1.27&r2=1.28&f=h
1.19 +0 -26
jahia/core/src/webapp/WEB-INF/etc/spring/applicationcontext-metadata.xml
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/webapp/WEB-INF/etc/spring/applicationcontext-metadata.xml.diff?r1=1.18&r2=1.19&f=h
Index: jahia.xml
===================================================================
RCS file: /home/cvs/repository/jahia/core/src/conf/metadata/jahia.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- jahia.xml 4 Nov 2005 18:40:30 -0000 1.4
+++ jahia.xml 10 Nov 2005 10:31:35 -0000 1.5
@@ -52,12 +52,12 @@
<name>url</name>
<value>@URL@</value>
</parameter>
-
+
<parameter>
<name>defaultAutoCommit</name>
- <value>false</value>
+ <value>true</value>
</parameter>
-
+
</ResourceParams>
</Context>
Index: ContentMetadataFacade.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/content/ContentMetadataFacade.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ContentMetadataFacade.java 3 Nov 2005 13:22:21 -0000 1.9
+++ ContentMetadataFacade.java 10 Nov 2005 10:31:35 -0000 1.10
@@ -694,9 +694,6 @@
// save the field
ServicesRegistry.getInstance().getJahiaFieldService().
saveField(field, contentObject.getAclID(), jParams);
- // must create a metadata relashion ship
-
contentObject.addMetadata(ContentField.getField(field.getID()),
- jParams.getUser());
int fieldPos = fieldOrder.indexOf(fieldDef.getName());
logger.debug("JahiaContainer.fieldsStructureCheck : Field " +
field.getDefinition().getName() +
Index: ContentObject.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/content/ContentObject.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- ContentObject.java 9 Nov 2005 11:02:41 -0000 1.25
+++ ContentObject.java 10 Nov 2005 10:31:35 -0000 1.26
@@ -1413,16 +1413,6 @@
}
/**
- * Create a "metadata" strutural relationship with this one
- *
- * @throws JahiaException
- */
- public void addMetadata(JahiaObject metadata, JahiaUser user)
- throws JahiaException {
- addMetadata(this, metadata, user);
- }
-
- /**
* Return an Array of ContentField that have a core "metadata" strutural
relationship
* with the given objectKey. @see StructuralRelationship.METADATA_LINK
*
@@ -1459,33 +1449,6 @@
new Integer(metadataObjectKey.getIdInType()));
}
- /**
- * Create a "metadata" strutural relationship with this one
- *
- * @param obj
- * @throws JahiaException
- */
- public static void addMetadata(JahiaObject obj, JahiaObject metadata,
- JahiaUser user)
- throws JahiaException {
- if ( obj.getObjectKey().equals(metadata.getObjectKey()) ){
- return;
- }
- Date now = new Date();
- ObjectLink.createLink (metadata.getObjectKey(),
- obj.getObjectKey(),
- StructuralRelationship.METADATA_LINK,
- 1,
- now,
- user.getUserKey(),
- now,
- user.getUserKey(),
- new HashMap (),
- new HashMap (),
- new HashMap ());
- }
-
-
public void addPickerObject(ProcessingContext jParams, ContentObject
object) {
if (this.getClass() == object.getClass()) {
Date now = new Date();
Index: Metadata_Engine.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/engines/metadata/Metadata_Engine.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- Metadata_Engine.java 3 Nov 2005 13:22:23 -0000 1.8
+++ Metadata_Engine.java 10 Nov 2005 10:31:36 -0000 1.9
@@ -507,11 +507,6 @@
ServicesRegistry.getInstance
().getJahiaFieldService ().
saveField (field, contentObject.getAclID
(),
jParams);
- // must create a metadata relashion ship
- contentObject.addMetadata(
- ContentField.getField(field.getID()),
- jParams.getUser());
-
}
engineMap.put (ENGINE_NAME + "." + "theField",
field);
EngineToolBox.getInstance().processFieldTypes
(field, theContainer, ENGINE_NAME, jParams, mode, engineMap);
Index: Category_Field.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/engines/shared/Category_Field.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Category_Field.java 3 Nov 2005 13:22:23 -0000 1.6
+++ Category_Field.java 10 Nov 2005 10:31:36 -0000 1.7
@@ -501,7 +501,7 @@
private ObjectKey findCategoryTargetObjectKey(JahiaField theField)
throws JahiaException {
ObjectKey objectKey = null;
- boolean isMetadataField =
ServicesRegistry.getInstance().getMetadataService().isMetadataField(theField);
+ boolean isMetadataField = theField.getIsMetadata();
if (isMetadataField) {
JahiaObject ownerObject =
ContentObject.getContentObjectFromMetadata(new
ContentFieldKey(theField.getID()));
if (ownerObject != null) {
Index: ContentField.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/fields/ContentField.java,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- ContentField.java 9 Nov 2005 11:02:42 -0000 1.37
+++ ContentField.java 10 Nov 2005 10:31:36 -0000 1.38
@@ -2053,4 +2053,26 @@
}
return super.checkAccess(user, permission);
}
+
+ public String getPagePathString(ProcessingContext context,
+ boolean ignoreMetadata) {
+ String pagePath = "";
+ ContentPage contentPage = null;
+ try {
+ if ( this.isMetadata() ){
+ ContentObject contentObject =
getContentObjectFromMetadata(this.getObjectKey());
+ if ( contentObject != null ){
+ pagePath =
contentObject.getPagePathString(context,ignoreMetadata);
+ }
+ } else {
+ contentPage = this.getPage();
+ if ( contentPage != null ){
+ pagePath =
contentPage.getPagePathString(context,ignoreMetadata);
+ }
+ }
+ } catch ( Throwable t ){
+ logger.debug("Exception occured getting pagePath for
contentObject " + this.getObjectKey(),t);
+ }
+ return pagePath;
+ }
}
Index: ImportHandler.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/importexport/ImportHandler.java,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- ImportHandler.java 9 Nov 2005 09:34:12 -0000 1.40
+++ ImportHandler.java 10 Nov 2005 10:31:36 -0000 1.41
@@ -825,9 +825,9 @@
String metadataName = jcd.getName();
String value;
if (CoreMetadataConstant.CREATION_DATE.equals(metadataName))
{
- value = attr.getValue(ImportExportService.JCR_URI,
"created");
+ value = attr.getValue("jcr:created");
} else if
(CoreMetadataConstant.LAST_MODIFICATION_DATE.equals(metadataName)) {
- value = attr.getValue(ImportExportService.JCR_URI,
"lastModified");
+ value = attr.getValue("jcr:lastModified");
} else if
(CoreMetadataConstant.PAGE_PATH.equals(metadataName)) {
value = object.getPagePathString(jParams,true);
} else {
Index: MetadataEventListener.java
====================================================================
package org.jahia.services.metadata;
import org.jahia.data.events.JahiaEventListenerInterface;
import org.jahia.data.events.JahiaEvent;
import org.jahia.data.fields.LoadFlags;
import org.jahia.content.events.ContentActivationEvent;
import org.jahia.content.events.ContentUndoStagingEvent;
import org.jahia.content.events.ContentObjectDeleteEvent;
import org.jahia.content.events.ContentObjectRestoreVersionEvent;
import org.jahia.content.ContentMetadataFacade;
import org.jahia.content.ContentObject;
import org.jahia.content.ObjectKey;
import org.jahia.services.fields.ContentField;
import org.jahia.services.sites.JahiaSite;
import org.jahia.services.workflow.WorkflowEvent;
import org.jahia.services.usermanager.JahiaUser;
import org.jahia.services.version.StateModificationContext;
import org.jahia.services.timebasedpublishing.RetentionRuleEvent;
import org.jahia.registries.ServicesRegistry;
import org.jahia.params.ProcessingContext;
import java.util.Iterator;
import java.util.Set;
import java.util.HashSet;
/**
* Created by IntelliJ IDEA.
* User: hollis
* Date: 8 nov. 2005
* Time: 10:00:48
* To change this template use File | Settings | File Templates.
*/
public class MetadataEventListener implements JahiaEventListenerInterface {
private static org.apache.log4j.Logger logger =
org.apache.log4j.Logger.getLogger(MetadataEventListener.class);
private boolean isMetadata = false;
public MetadataEventListener(){
}
public boolean isMetadata() {
return isMetadata;
}
public void setMetadata(boolean metadata) {
isMetadata = metadata;
}
public void beforeServicesLoad(JahiaEvent je) {
return;
}
public void afterServicesLoad(JahiaEvent je) {
return;
}
/**
* Event fired before WorkflowService.activate(...)
*
* @param theEvent ContentActivationEvent
*/
public void beforeGroupActivation (ContentActivationEvent theEvent){
return;
}
public void beforeStagingContentIsDeleted(JahiaEvent je ){
return;
}
/**
* Event fired when a template is updated
* @param theEvent contains the currently edited template
*/
public void templateUpdated(JahiaEvent theEvent){
return;
}
/**
* JahiaEvent(JahiaSaveVersion,ProcessingContext,ContentField)
*
* @param je
*/
public void beforeFieldActivation(JahiaEvent je) {
ContentField cf = (ContentField) je.getObject();
if (cf != null) {
try {
if ( cf.isMetadata() ){
setMetadata(true);
return;
}
// take care to create all metadatas
try {
JahiaSite site = ServicesRegistry.getInstance().
getJahiaSitesService().getSite(cf.
getSiteID());
// try to create all missing metadata
ContentMetadataFacade cmf =
new ContentMetadataFacade(cf.getObjectKey(),
LoadFlags.ALL,
je.getProcessingContext(),
true, false);
} catch (Throwable t) {
logger.debug(
"Exception loading metadata for content object " +
cf.getObjectKey(), t);
}
} catch (Throwable t) {
logger.debug(t);
}
}
}
public void fieldAdded(JahiaEvent je) {
return;
}
public void fieldUpdated(JahiaEvent je) {
return;
}
public void fieldDeleted(JahiaEvent je) {
return;
}
/**
* JahiaEvent(JahiaSaveVersion,ProcessingContext,JahiaContainer)
*
* @param je
*/
public void beforeContainerActivation(JahiaEvent je) {
return;
}
public void addContainerEngineBeforeSave(JahiaEvent je) {
return;
}
public void addContainerEngineAfterInit(JahiaEvent je) {
return;
}
public void updateContainerEngineBeforeSave(JahiaEvent je) {
return;
}
public void updateContainerEngineAfterInit(JahiaEvent je) {
return;
}
public void containerAdded(JahiaEvent je) {
return;
}
public void containerUpdated(JahiaEvent je) {
return;
}
public void containerDeleted(JahiaEvent je) {
return;
}
public void pageAdded(JahiaEvent je) {
return;
}
public void pageLoaded(JahiaEvent je) {
return;
}
public void pagePropertiesSet(JahiaEvent je) {
return;
}
public void containerListPropertiesSet(JahiaEvent je) {
return;
}
public void rightsSet(JahiaEvent je) {
return;
}
public void userLoggedIn(JahiaEvent je) {
return;
}
public void userLoggedOut(JahiaEvent je) {
return;
}
/**
* Event fired after the Metadata_Engine has been initialized ( engineMap
init )
* and before processing last and current engine request.
* The Event source object is the calling Metadata_Engine, the event
object is a
* ContentMetadataFacade instance.
*
* @param theEvent JahiaEvent
*/
public void metadataEngineAfterInit(JahiaEvent theEvent) {
return;
}
/**
* Event fired before the Metadata_Engine start to save the metadata
fields for
* the current content metadata facade
* The Event source object is the calling Metadata_Engine, the event
object is a
* ContentMetadataFacade instance.
*
* @param theEvent JahiaEvent
*/
public void metadataEngineBeforeSave(JahiaEvent theEvent) {
return;
}
/**
* Event fired after the Metadata_Engine has saved the metadata fields for
* the current content object
* The Event source object is the calling Metadata_Engine, the event
object is
* the ObjectKey instance of the content object.
*
* @param theEvent JahiaEvent
*/
public void metadataEngineAfterSave(JahiaEvent theEvent) {
return;
}
/**
* Event fired once a content object has been first created ( stored in
persistence )
* The Event source object is the JahiaUser
* The Object is the ContentObject created.
*
* @param theEvent JahiaEvent
*/
public void contentObjectCreated(JahiaEvent theEvent) {
try {
ContentObject co = (ContentObject) theEvent.getObject();
if (co == null) {
return;
}
if ( co instanceof ContentField &&
((ContentField)co).isMetadata() ){
setMetadata(true);
return;
}
ProcessingContext jParams = theEvent.getProcessingContext();
if (jParams != null) {
// ensure to create metadata for this content object
ContentMetadataFacade metadataFacade = new
ContentMetadataFacade(co.getObjectKey(),
LoadFlags.ALL,
jParams,
true,
true);
}
} catch (Throwable t) {
logger.debug("Exception processing event contentActivation ", t);
}
}
/**
* Event fired once a content object has been updated ( changes stored in
persistence )
*
* @param theEvent JahiaEvent
*/
public void contentObjectUpdated(JahiaEvent theEvent) {
try {
ContentObject co = (ContentObject) theEvent.getObject();
if (co == null) {
return;
}
if ( co instanceof ContentField &&
((ContentField)co).isMetadata() ){
setMetadata(true);
return;
}
} catch (Throwable t) {
logger.debug("Exception processing event contentActivation ", t);
}
}
public void fileManagerAclChanged(JahiaEvent theEvent) {
return;
}
public void objectChanged(WorkflowEvent theEvent) {
handleObjectChanged(theEvent);
}
public void contentObjectUndoStaging (ContentUndoStagingEvent theEvent) {
handleObjectChanged(theEvent);
}
protected void handleObjectChanged(JahiaEvent theEvent){
try {
ContentObject co = (ContentObject) theEvent.getObject();
if (co != null &&
co instanceof ContentField &&
((ContentField)co).isMetadata() ){
setMetadata(true);
return;
}
JahiaUser user = null;
if ( theEvent instanceof WorkflowEvent ){
user = ((WorkflowEvent)theEvent).getUser();
} else {
user = theEvent.getProcessingContext().getUser();
}
// check if the content object still exist
try {
ContentObject sourceObject = (ContentObject)
theEvent.getObject();
if (sourceObject.getEntryStates().size() == 0) {
// doesn't exist anymore, so remove all metadata
Iterator iterator =
sourceObject.getMetadatas().iterator();
ContentField contentField = null;
Set languageCodes = new HashSet();
languageCodes.add(ContentObject.SHARED_LANGUAGE);
while (iterator.hasNext()) {
contentField = (ContentField) iterator.next();
try {
StateModificationContext smc
= new
StateModificationContext(contentField.getObjectKey(),
languageCodes);
contentField.markLanguageForDeletion(user,
ContentObject.SHARED_LANGUAGE,
smc);
} catch (Throwable t) {
logger.debug(t);
}
}
return;
}
} catch (Throwable t) {
logger.debug(t);
}
} catch (Throwable t) {
logger.debug("Exception processing event contentActivation ", t);
}
}
public void contentActivation(ContentActivationEvent theEvent) {
try {
ObjectKey objectKey = (ObjectKey) theEvent.getObject();
if (objectKey != null) {
// check is this content object is not a metadata
ContentObject co =
ContentObject.getContentObjectInstance(objectKey);
if (co instanceof ContentField &&
((ContentField)co).isMetadata() ) {
setMetadata(true);
return;
}
try {
/*
// try to create all missing metadata
ContentMetadataFacade cmf =
new ContentMetadataFacade(objectKey,
LoadFlags.ALL,
theEvent.getParams(),
true,false);
*/
} catch (Throwable t) {
logger.debug("Exception loading metadata for content
object " + objectKey);
}
}
} catch (Throwable t) {
logger.debug("Exception processing event contentActivation ", t);
}
}
/**
* Event fired to notifying a retention rule' state change
*
* @param theEvent
*/
public void timeBasedPublishingEvent( RetentionRuleEvent theEvent ){
return;
}
/**
* Event fired on content object delete
*
* @param theEvent JahiaEvent
*/
public void contentObjectDelete (ContentObjectDeleteEvent theEvent){
handleObjectChanged(theEvent);
}
/**
* Event fired on content object restore version
*
* @param theEvent JahiaEvent
*/
public void contentObjectRestoreVersion (ContentObjectRestoreVersionEvent
theEvent){
handleObjectChanged(theEvent);
}
}
Index: MetadataAdvice.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/metadata/MetadataAdvice.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- MetadataAdvice.java 3 Nov 2005 13:22:27 -0000 1.10
+++ MetadataAdvice.java 10 Nov 2005 10:31:37 -0000 1.11
@@ -2,36 +2,17 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
-import java.util.Set;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
-import org.jahia.content.*;
-import org.jahia.content.events.ContentActivationEvent;
-import org.jahia.content.events.ContentUndoStagingEvent;
-import org.jahia.content.events.ContentObjectDeleteEvent;
-import org.jahia.content.events.ContentObjectRestoreVersionEvent;
import org.jahia.data.events.JahiaEvent;
import org.jahia.data.events.JahiaEventListenerInterface;
import org.jahia.data.events.JahiaEventListener;
-import org.jahia.data.fields.JahiaFieldDefinition;
-import org.jahia.data.fields.LoadFlags;
import org.jahia.exceptions.JahiaException;
-import org.jahia.params.ProcessingContext;
-import org.jahia.registries.ServicesRegistry;
-import org.jahia.services.fields.ContentField;
-import org.jahia.services.sites.JahiaSite;
-import org.jahia.services.version.StateModificationContext;
-import org.jahia.services.workflow.WorkflowEvent;
-import org.jahia.services.containers.ContentContainer;
-import org.jahia.services.containers.ContentContainerList;
-import org.jahia.services.usermanager.JahiaUser;
-import org.jahia.services.timebasedpublishing.RetentionRuleEvent;
-import org.jahia.services.pages.ContentPage;
/**
@@ -44,17 +25,13 @@
* @version 1.0
*/
-public class MetadataAdvice implements JahiaEventListenerInterface,
MethodInterceptor {
+public class MetadataAdvice extends JahiaEventListener implements
MethodInterceptor {
private static org.apache.log4j.Logger logger =
org.apache.log4j.Logger.getLogger(MetadataAdvice.class);
protected HashMap listenersMap = new HashMap();
- protected HashMap eventWorkflowMappings = new HashMap();
-
- protected HashMap eventOnMetadata = new HashMap();
-
public HashMap getListenersMap() {
checkProxy();
return this.listenersMap;
@@ -64,22 +41,10 @@
this.listenersMap = listenersMap;
}
- public HashMap getEventWorkflowMappings() {
- checkProxy();
- return this.eventWorkflowMappings;
- }
-
- public void setEventWorkflowMappings(HashMap eventWorkflowMappings) {
- this.eventWorkflowMappings = eventWorkflowMappings;
- }
-
private void checkProxy() {
if (this.listenersMap == null) {
this.listenersMap = new HashMap();
}
- if (this.eventWorkflowMappings == null) {
- this.eventWorkflowMappings = new HashMap();
- }
}
public Object invoke(MethodInvocation invocation) throws Throwable {
@@ -92,12 +57,11 @@
Object[] args = invocation.getArguments();
JahiaEvent event = (JahiaEvent) args[0];
- // invoke this listener first
- invokeListener(this, methodName, event);
+ MetadataEventListener eventListener = new
MetadataEventListener();
- boolean eventOnMetadata =
this.eventOnMetadata.containsKey(String.valueOf(event.getEventTime()));
-
- if (!eventOnMetadata) {
+ // invoke this listener first
+ invokeListener(eventListener, methodName, event);
+ if (!eventListener.isMetadata()) {
event = (JahiaEvent) args[0];
// then invoke registered listener
Iterator iterator = listeners.iterator();
@@ -106,474 +70,12 @@
listener = (JahiaEventListenerInterface) iterator.next();
invokeListener(listener, methodName, event);
}
-
- /* It is not very efficient to activate metadata here
- // post listener invocation
- if (methodName.equals("contentActivation")) {
- this.activateMetadata((ContentActivationEvent) event);
- }*/
- } else {
- // do not progagate event , when it happened on a Metadata
content
-
this.eventOnMetadata.remove(String.valueOf(event.getEventTime()));
}
}
Object rval = invocation.proceed();
return rval;
}
- public void beforeServicesLoad(JahiaEvent je) {
- return;
- }
-
- public void afterServicesLoad(JahiaEvent je) {
- return;
- }
-
- /**
- * Event fired before WorkflowService.activate(...)
- *
- * @param theEvent ContentActivationEvent
- */
- public void beforeGroupActivation (ContentActivationEvent theEvent){
- return;
- }
-
- public void beforeStagingContentIsDeleted(JahiaEvent je ){
- return;
- }
-
- /**
- * Event fired when a template is updated
- * @param theEvent contains the currently edited template
- */
- public void templateUpdated(JahiaEvent theEvent){
- return;
- }
-
- /**
- * JahiaEvent(JahiaSaveVersion,ProcessingContext,ContentField)
- *
- * @param je
- */
- public void beforeFieldActivation(JahiaEvent je) {
- ContentField cf = (ContentField) je.getObject();
- if (cf != null) {
- try {
- // check is this content object is not a metadata
- ContentDefinition contentDef =
ContentDefinition.getContentDefinitionInstance(cf.
- getDefinitionKey(null));
- if (contentDef instanceof JahiaFieldDefinition &&
- (((JahiaFieldDefinition)
contentDef).getIsMetadata())) {
-
this.eventOnMetadata.put(String.valueOf(je.getEventTime()), Boolean.TRUE);
- } else {
- // take care to create all metadatas
- try {
- JahiaSite site = ServicesRegistry.getInstance().
- getJahiaSitesService().getSite(cf.
- getSiteID());
-
- // try to create all missing metadata
- ContentMetadataFacade cmf =
- new ContentMetadataFacade(cf.getObjectKey(),
- LoadFlags.ALL,
- je.getProcessingContext(),
- true, false);
- } catch (Throwable t) {
- logger.debug(
- "Exception loading metadata for content
object " +
- cf.getObjectKey(), t);
- }
- }
- } catch (Throwable t) {
- logger.debug(t);
- }
- }
- }
-
- public void fieldAdded(JahiaEvent je) {
- return;
- }
-
- public void fieldUpdated(JahiaEvent je) {
- return;
- }
-
- public void fieldDeleted(JahiaEvent je) {
- return;
- }
-
- /**
- * JahiaEvent(JahiaSaveVersion,ProcessingContext,JahiaContainer)
- *
- * @param je
- */
- public void beforeContainerActivation(JahiaEvent je) {
- return;
- }
-
- public void addContainerEngineBeforeSave(JahiaEvent je) {
- return;
- }
-
- public void addContainerEngineAfterInit(JahiaEvent je) {
- return;
- }
-
- public void updateContainerEngineBeforeSave(JahiaEvent je) {
- return;
- }
-
- public void updateContainerEngineAfterInit(JahiaEvent je) {
- return;
- }
-
- public void containerAdded(JahiaEvent je) {
- return;
- }
-
- public void containerUpdated(JahiaEvent je) {
- return;
- }
-
- public void containerDeleted(JahiaEvent je) {
- return;
- }
-
- public void pageAdded(JahiaEvent je) {
- return;
- }
-
- public void pageLoaded(JahiaEvent je) {
- return;
- }
-
- public void pagePropertiesSet(JahiaEvent je) {
- return;
- }
-
- public void containerListPropertiesSet(JahiaEvent je) {
- return;
- }
-
- public void rightsSet(JahiaEvent je) {
- return;
- }
-
- public void userLoggedIn(JahiaEvent je) {
- return;
- }
-
- public void userLoggedOut(JahiaEvent je) {
- return;
- }
-
- /**
- * Event fired after the Metadata_Engine has been initialized (
engineMap init )
- * and before processing last and current engine request.
- * The Event source object is the calling Metadata_Engine, the event
object is a
- * ContentMetadataFacade instance.
- *
- * @param theEvent JahiaEvent
- */
- public void metadataEngineAfterInit(JahiaEvent theEvent) {
- return;
- }
-
- /**
- * Event fired before the Metadata_Engine start to save the metadata
fields for
- * the current content metadata facade
- * The Event source object is the calling Metadata_Engine, the event
object is a
- * ContentMetadataFacade instance.
- *
- * @param theEvent JahiaEvent
- */
- public void metadataEngineBeforeSave(JahiaEvent theEvent) {
- return;
- }
-
- /**
- * Event fired after the Metadata_Engine has saved the metadata fields
for
- * the current content object
- * The Event source object is the calling Metadata_Engine, the event
object is
- * the ObjectKey instance of the content object.
- *
- * @param theEvent JahiaEvent
- */
- public void metadataEngineAfterSave(JahiaEvent theEvent) {
- return;
- }
-
- /**
- * Event fired once a content object has been first created ( stored in
persistence )
- * The Event source object is the JahiaUser
- * The Object is the ContentObject created.
- *
- * @param theEvent JahiaEvent
- */
- public void contentObjectCreated(JahiaEvent theEvent) {
- try {
-
- ContentObject co = (ContentObject) theEvent.getObject();
- if (co == null) {
- return;
- }
- ObjectKey objectKey = co.getObjectKey();
- if (objectKey != null) {
- // check is this content object is not a metadata
- ContentDefinition contentDef = ContentDefinition.
- getContentDefinitionInstance(co.
- getDefinitionKey(null));
- if (contentDef instanceof JahiaFieldDefinition &&
- (((JahiaFieldDefinition)
contentDef).getIsMetadata())) {
- this.eventOnMetadata.put(String.valueOf(theEvent.
- getEventTime()), Boolean.TRUE);
- return;
- }
- }
-
- ProcessingContext jParams = theEvent.getProcessingContext();
- if (jParams != null) {
- // ensure to create metadata for this content object
- ContentMetadataFacade metadataFacade = new
- ContentMetadataFacade(co.getObjectKey(),
- LoadFlags.ALL,
- jParams,
- true,
- true);
- }
-
- } catch (Throwable t) {
- logger.debug("Exception processing event contentActivation ", t);
- }
-
- }
-
- /**
- * Event fired once a content object has been updated ( changes stored
in persistence )
- *
- * @param theEvent JahiaEvent
- */
- public void contentObjectUpdated(JahiaEvent theEvent) {
- try {
-
- ContentObject co = (ContentObject) theEvent.getObject();
- if (co == null) {
- return;
- }
- ObjectKey objectKey = co.getObjectKey();
- if (objectKey != null) {
- // check is this content object is not a metadata
- ContentDefinition contentDef = ContentDefinition.
- getContentDefinitionInstance(co.
- getDefinitionKey(null));
- if (contentDef instanceof JahiaFieldDefinition &&
- (((JahiaFieldDefinition)
contentDef).getIsMetadata())) {
- this.eventOnMetadata.put(String.valueOf(theEvent.
- getEventTime()), Boolean.TRUE);
- return;
- }
- }
- } catch (Throwable t) {
- logger.debug("Exception processing event contentActivation ", t);
- }
- }
-
- public void fileManagerAclChanged(JahiaEvent theEvent) {
- return;
- }
-
- public void objectChanged(WorkflowEvent theEvent) {
- handleObjectChanged(theEvent);
- }
-
- public void contentObjectUndoStaging (ContentUndoStagingEvent theEvent) {
- handleObjectChanged(theEvent);
- }
-
- protected void handleObjectChanged(JahiaEvent theEvent){
- try {
- ContentObject co = (ContentObject) theEvent.getObject();
- ObjectKey objectKey = co.getObjectKey();
- if (objectKey != null) {
- // check is this content object is not a metadata
- if (co instanceof ContentField) {
- if (ServicesRegistry.getInstance().getMetadataService()
- .isMetadataField((ContentField) co)) {
- return;
- }
- }
-
- JahiaUser user = null;
- if ( theEvent instanceof WorkflowEvent ){
- user = ((WorkflowEvent)theEvent).getUser();
- } else {
- user = theEvent.getProcessingContext().getUser();
- }
-
- // check if the content object still exist
- try {
- ContentObject sourceObject = (ContentObject)
theEvent.getObject();
- if (sourceObject.getEntryStates().size() == 0) {
- // doesn't exist anymore, so remove all metadata
- Iterator iterator =
ContentObject.getMetadatas(objectKey).iterator();
- ContentField contentField = null;
- Set languageCodes = new HashSet();
- languageCodes.add(ContentObject.SHARED_LANGUAGE);
- while (iterator.hasNext()) {
- contentField = (ContentField) iterator.next();
- try {
- StateModificationContext smc
- = new
StateModificationContext(contentField.getObjectKey(),
- languageCodes);
- contentField.markLanguageForDeletion(user,
- ContentObject.SHARED_LANGUAGE,
- smc);
- } catch (Throwable t) {
- logger.debug(t);
- }
- }
- return;
- }
- } catch (Throwable t) {
- logger.debug(t);
- }
- }
- } catch (Throwable t) {
- logger.debug("Exception processing event contentActivation ", t);
- }
- }
-
- public void contentActivation(ContentActivationEvent theEvent) {
- try {
- ObjectKey objectKey = (ObjectKey) theEvent.getObject();
- if (objectKey != null) {
- // check is this content object is not a metadata
-
- ContentObject co =
ContentObject.getContentObjectInstance(objectKey);
- if (co instanceof ContentField) {
- if (ServicesRegistry.getInstance().getMetadataService()
- .isMetadataField((ContentField) co)) {
-
this.eventOnMetadata.put(String.valueOf(theEvent.getEventTime()), Boolean.TRUE);
- return;
- }
- }
- try {
- /*
- // try to create all missing metadata
- ContentMetadataFacade cmf =
- new ContentMetadataFacade(objectKey,
- LoadFlags.ALL,
- theEvent.getParams(),
- true,false);
- */
- } catch (Throwable t) {
- logger.debug("Exception loading metadata for content
object " + objectKey);
- }
- }
- } catch (Throwable t) {
- logger.debug("Exception processing event contentActivation ", t);
- }
- }
-
- /**
- * Event fired to notifying a retention rule' state change
- *
- * @param theEvent
- */
- public void timeBasedPublishingEvent( RetentionRuleEvent theEvent ){
- return;
- }
-
- /**
- * Event fired on content object delete
- *
- * @param theEvent JahiaEvent
- */
- public void contentObjectDelete (ContentObjectDeleteEvent theEvent){
- handleObjectChanged(theEvent);
- }
-
- /**
- * Event fired on content object restore version
- *
- * @param theEvent JahiaEvent
- */
- public void contentObjectRestoreVersion
(ContentObjectRestoreVersionEvent theEvent){
- handleObjectChanged(theEvent);
- }
-
- private void activateMetadata(ContentActivationEvent theEvent) {
- try {
- ObjectKey objectKey = (ObjectKey) theEvent.getObject();
- if (objectKey != null) {
-
- // check is this content object is not a metadata
- ContentObject co =
ContentObject.getContentObjectInstance(objectKey);
- if (co instanceof ContentField) {
- return;
- }
-
- activateContentObjectMetadatas(co, theEvent);
-
- // propagate to parent container list if need
- if ( co instanceof ContentContainer ){
- ContentContainer container = (ContentContainer)co;
- ContentContainerList ctnList = ContentContainerList
-
.getContainerList(container.getParentContainerListID());
- activateContentObjectMetadatas(ctnList,theEvent);
- }
-
- // activate parent page metadatas
- if ( co instanceof PageReferenceableInterface ){
- PageReferenceableInterface pageRefObj =
(PageReferenceableInterface)co;
- try {
- ContentPage parentPage = pageRefObj.getPage();
- if ( parentPage != null ){
-
activateContentObjectMetadatas(parentPage,theEvent);
- }
- } catch ( Throwable t){
- logger.debug("exception occured updating last modif
date metadata",t);
- }
- }
- }
- } catch (Throwable t) {
- logger.debug("Exception processing event contentActivation ", t);
- }
- }
-
- private void activateContentObjectMetadatas(ContentObject contentObject,
- ContentActivationEvent
theEvent){
- try {
- if (contentObject != null) {
- Iterator iterator = contentObject.getMetadatas().iterator();
- ContentField contentField = null;
- while (iterator.hasNext()) {
- contentField = (ContentField) iterator.next();
- try {
- contentField.activate(theEvent.getLanguageCodes(),
- theEvent.getVersioningActive(),
theEvent.getSaveVersion(),
- theEvent.getUser(),
theEvent.getProcessingContext(), theEvent.getStateModifContext());
-
- // already handled by previous
contentObject.activate() call
- /*
- try {
- JahiaObject metadataOwner =
-
ServicesRegistry.getInstance().getMetadataService().getOwnerObjectOfMetadata(contentObject.getObjectKey());
-
ServicesRegistry.getInstance().getJahiaSearchService()
-
.indexContentObject(metadataOwner.getObjectKey(), theEvent.getUser());
- } catch (Throwable t) {
- logger.debug("Exception occured when retrieving
metadata owner for indexation", t);
- }*/
- } catch (Throwable t) {
- logger.debug(t);
- }
- }
- }
- } catch (Throwable t) {
- logger.debug("Exception processing event contentActivation ", t);
- }
- }
-
/**
* wakes up a specific method on a given listener
*
@@ -623,4 +125,6 @@
JahiaException.WARNING_SEVERITY, iae);
}
}
+
+
}
Index: MetadataBaseService.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/metadata/MetadataBaseService.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- MetadataBaseService.java 3 Nov 2005 13:22:27 -0000 1.10
+++ MetadataBaseService.java 10 Nov 2005 10:31:37 -0000 1.11
@@ -40,9 +40,12 @@
import org.jahia.exceptions.JahiaInitializationException;
import org.jahia.registries.JahiaFieldDefinitionsRegistry;
import org.jahia.services.fields.ContentField;
+import org.jahia.services.usermanager.JahiaUser;
+import org.jahia.services.usermanager.JahiaAdminUser;
import org.jahia.settings.SettingsBean;
import org.jahia.hibernate.manager.JahiaLinkManager;
import org.jahia.hibernate.manager.SpringContextSingleton;
+import org.jahia.bin.Jahia;
import org.springframework.aop.framework.Advised;
/**
@@ -275,13 +278,21 @@
ArrayList matchingMetadatas =
getMatchingMetadatas(contentDefinition);
ContentDefinition contentDef = null;
ObjectKey objectKey = null;
+ JahiaUser user = null;
+ String userKey = "unknown";
+ if ( Jahia.getThreadParamBean() != null ){
+ user = Jahia.getThreadParamBean().getUser();
+ if ( user != null ){
+ userKey = user.getUserKey();
+ }
+ }
for ( int i=0; i<matchingMetadatas.size(); i++ ){
objectKey = (ObjectKey)matchingMetadatas.get(i);
try {
contentDef = ContentDefinition.getContentDefinitionInstance(
objectKey);
if (!assignedAttributes.contains(contentDef)) {
- contentDefinition.addMetadataDefinition(contentDef,
"root"); //@todo
+ contentDefinition.addMetadataDefinition(contentDef,
userKey);
}
} catch ( ClassNotFoundException cnfe ){
logger.debug("Cannot retrieve ContentDefinition
instance",cnfe);
@@ -318,54 +329,6 @@
}
/**
- * Return true if the content field is a metadata
- *
- * @param contentField ContentField
- * @return boolean
- */
- public boolean isMetadataField(ContentField contentField){
- if ( contentField == null ){
- return false;
- }
-
- try {
- // check is this content object is not a metadata
- ContentDefinition contentDef = ContentDefinition.
-
getContentDefinitionInstance(contentField.
- getDefinitionKey(null));
- if (contentDef instanceof JahiaFieldDefinition &&
- (((JahiaFieldDefinition) contentDef).getIsMetadata())) {
- return true;
- }
- } catch (Throwable t) {
- logger.debug(t);
- }
- return false;
- }
-
- /**
- * Return true if the content field is a metadata
- *
- * @param field JahiaField
- * @return boolean
- */
- public boolean isMetadataField(JahiaField field){
- if ( field == null ){
- return false;
- }
-
- try {
- // check is this content object is not a metadata
- if (field.getDefinition().getIsMetadata()){
- return true;
- }
- } catch (Throwable t) {
- logger.debug(t);
- }
- return false;
- }
-
- /**
* Returns an array of ObjectKey that are metadatas
*
* @param name String, the metadata name
Index: MetadataService.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/metadata/MetadataService.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- MetadataService.java 3 Nov 2005 13:22:27 -0000 1.5
+++ MetadataService.java 10 Nov 2005 10:31:37 -0000 1.6
@@ -45,21 +45,18 @@
/**
* Return the Metadata Definition Config Bean
*
- * @throws JahiaException
*/
public abstract MetadataDefinitionConfig getMetadataDefinitionConfig();
/**
* Return the JahiaEventListener used to handle Metadata
*
- * @throws JahiaException
*/
public abstract JahiaEventListenerInterface getMetadataEventListener();
/**
* Add an aopalliance interceptor to the JahiaEventListener
*
- * @throws JahiaException
*/
public abstract void addAOPInterceptor(Interceptor interceptor);
@@ -133,22 +130,6 @@
public abstract boolean isHiddenFromEditingEngine(JahiaFieldDefinition
fieldDefinition);
/**
- * Return true if the content field is a metadata
- *
- * @param contentField ContentField
- * @return boolean
- */
- public abstract boolean isMetadataField(ContentField contentField);
-
- /**
- * Return true if the content field is a metadata
- *
- * @param field JahiaField
- * @return boolean
- */
- public abstract boolean isMetadataField(JahiaField field);
-
- /**
* Returns an array of ObjectKey that are metadatas
*
* @param name String, the metadata name
Index: JahiaSearchBaseService.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/search/JahiaSearchBaseService.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- JahiaSearchBaseService.java 7 Nov 2005 10:26:52 -0000 1.27
+++ JahiaSearchBaseService.java 10 Nov 2005 10:31:37 -0000 1.28
@@ -288,7 +288,7 @@
while ( !this.disabled && this.localIndexing ){
cachedAdminUsers = new HashMap();
try {
- Thread.sleep(3000);
+ Thread.sleep(2000);
} catch ( InterruptedException inte ){
}
if ( sitesServ == null || !sitesServ.isStarted() ){
@@ -730,8 +730,7 @@
} else if (contentObject instanceof ContentContainerList) {
//@todo index container list ( metadatas ? )
} else if (contentObject instanceof ContentField) {
- boolean isMetadata =
ServicesRegistry.getInstance().getMetadataService()
- .isMetadataField((ContentField) contentObject);
+ boolean isMetadata = ((ContentField)contentObject).isMetadata();
if (isMetadata) {
try {
ContentObject metadataOwner =
ContentObject.getContentObjectFromMetadata(contentObject.getObjectKey());
Index: applicationcontext-metadata.xml
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/webapp/WEB-INF/etc/spring/applicationcontext-metadata.xml,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- applicationcontext-metadata.xml 3 Nov 2005 13:22:47 -0000 1.18
+++ applicationcontext-metadata.xml 10 Nov 2005 10:31:38 -0000 1.19
@@ -386,32 +386,6 @@
</entry>
</map>
</property>
- <property name="eventWorkflowMappings">
- <map>
- <entry key="onContentAdded">
- <list>
- <value>containerAdded</value>
- </list>
- </entry>
- <entry key="onContentUpdated">
- <list>
-
<value>onContainerUpdated</value>
- </list>
- </entry>
- <entry key="onContentDeleted">
- <list>
- <value>onContentDeleted</value>
- </list>
- </entry>
- </map>
- </property>
- <!--
- <property name="workflows">
- <list>
- <ref bean="lastContributorWorkflow" />
- </list>
- </property>
- -->
</bean>
<!-- Metadata event listener bean -->