knguyen 2005/12/23 17:52:39 CET
Modified files:
core/src/java/org/jahia/services/metadata/core/listeners
ContentLastContributorListener.java
ContentLastModificationDateListener.java
Log:
- minimize metadata update
Revision Changes Path
1.12 +46 -1
jahia/core/src/java/org/jahia/services/metadata/core/listeners/ContentLastContributorListener.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/metadata/core/listeners/ContentLastContributorListener.java.diff?r1=1.11&r2=1.12&f=h
1.16 +25 -0
jahia/core/src/java/org/jahia/services/metadata/core/listeners/ContentLastModificationDateListener.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/metadata/core/listeners/ContentLastModificationDateListener.java.diff?r1=1.15&r2=1.16&f=h
Index: ContentLastContributorListener.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/metadata/core/listeners/ContentLastContributorListener.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ContentLastContributorListener.java 6 Dec 2005 12:12:50 -0000
1.11
+++ ContentLastContributorListener.java 23 Dec 2005 16:52:39 -0000
1.12
@@ -4,6 +4,7 @@
import org.jahia.content.ContentObject;
import org.jahia.content.JahiaObject;
import org.jahia.content.PageReferenceableInterface;
+import org.jahia.content.ObjectKey;
import org.jahia.content.events.ContentUndoStagingEvent;
import org.jahia.content.events.ContentObjectDeleteEvent;
import org.jahia.content.events.ContentObjectRestoreVersionEvent;
@@ -45,6 +46,9 @@
org.apache.log4j.Logger.getLogger
(ContentLastContributorListener.class);
private String metadataName;
+ private static ThreadLocal lastUpdateTimeThreadLocal = new ThreadLocal();
+
+ private Long updateTimeMinInterval;
public void setMetadataName(String metadataName){
this.metadataName = metadataName;
@@ -54,6 +58,35 @@
return this.metadataName;
}
+ public Long getLastUpdateTime(ObjectKey key) {
+ HashMap map = (HashMap)lastUpdateTimeThreadLocal.get();
+ if ( map == null ){
+ map = new HashMap();
+ lastUpdateTimeThreadLocal.set(map);
+ }
+ return (Long)map.get(key);
+ }
+
+ public void putLastUpdateTime(ObjectKey key, Long time) {
+ if ( lastUpdateTimeThreadLocal == null ){
+ lastUpdateTimeThreadLocal = new ThreadLocal();
+ lastUpdateTimeThreadLocal.set(new HashMap());
+ }
+ HashMap map = (HashMap)lastUpdateTimeThreadLocal.get();
+ map.put(key,time);
+ }
+
+ public Long getUpdateTimeMinInterval() {
+ if ( updateTimeMinInterval == null ){
+ updateTimeMinInterval = new Long(300);
+ }
+ return updateTimeMinInterval;
+ }
+
+ public void setUpdateTimeMinInterval(Long updateTimeMinInterval) {
+ this.updateTimeMinInterval = updateTimeMinInterval;
+ }
+
public void metadataEngineAfterInit (JahiaEvent theEvent) {
processEvent("metadataEngineAfterInit",theEvent);
}
@@ -88,7 +121,7 @@
handleObjectChanged(theEvent);
}
- protected void handleObjectChanged (JahiaEvent theEvent) {
+ protected synchronized void handleObjectChanged (JahiaEvent theEvent) {
ContentObject contentObject = (ContentObject)theEvent.getObject();
if ( contentObject == null ){
return;
@@ -96,6 +129,18 @@
if (contentObject instanceof ContentField &&
((ContentField)contentObject).getContainerID() != 0) {
return;
}
+
+ Long lastUpdateTime =
getLastUpdateTime(contentObject.getObjectKey());
+ if ( lastUpdateTime != null ){
+ if ((theEvent.getEventTime()-lastUpdateTime.longValue())
+ <this.getUpdateTimeMinInterval().longValue()){
+ //logger.info("Skip updating last contributor metadata for
content "
+ // + contentObject.getObjectKey());
+ return;
+ }
+ }
+ putLastUpdateTime(contentObject.getObjectKey(),new
Long(theEvent.getEventTime()));
+
try {
updateMetadata(contentObject,theEvent.getProcessingContext(),theEvent);
Index: ContentLastModificationDateListener.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/metadata/core/listeners/ContentLastModificationDateListener.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- ContentLastModificationDateListener.java 6 Dec 2005 12:12:50 -0000
1.15
+++ ContentLastModificationDateListener.java 23 Dec 2005 16:52:39 -0000
1.16
@@ -45,6 +45,8 @@
org.apache.log4j.Logger.getLogger
(ContentLastModificationDateListener.class);
private String metadataName;
+ private HashMap lastUpdateTimeMap = new HashMap();
+ private Long updateTimeMinInterval;
public void setMetadataName(String metadataName){
this.metadataName = metadataName;
@@ -54,6 +56,17 @@
return this.metadataName;
}
+ public Long getUpdateTimeMinInterval() {
+ if ( updateTimeMinInterval == null ){
+ updateTimeMinInterval = new Long(300);
+ }
+ return updateTimeMinInterval;
+ }
+
+ public void setUpdateTimeMinInterval(Long updateTimeMinInterval) {
+ this.updateTimeMinInterval = updateTimeMinInterval;
+ }
+
public void metadataEngineAfterInit (JahiaEvent theEvent) {
processEvent("metadataEngineAfterInit",theEvent);
}
@@ -96,6 +109,18 @@
if (contentObject instanceof ContentField &&
((ContentField)contentObject).getContainerID() != 0) {
return;
}
+
+ Long lastUpdateTime =
(Long)lastUpdateTimeMap.get(contentObject.getObjectKey());
+ if ( lastUpdateTime != null ){
+ if ((theEvent.getEventTime()-lastUpdateTime.longValue())
+ <updateTimeMinInterval.longValue()){
+ //logger.info("Skip updating last modification metadata for
content "
+ // + contentObject.getObjectKey());
+ return;
+ }
+ }
+ lastUpdateTimeMap.put(contentObject.getObjectKey(),new
Long(theEvent.getEventTime()));
+
try {
updateMetadata(contentObject,Jahia.getThreadParamBean(),theEvent);