You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2013/04/25 19:13:20 UTC

svn commit: r1475857 - /sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/MaintenanceTask.java

Author: cziegeler
Date: Thu Apr 25 17:13:20 2013
New Revision: 1475857

URL: http://svn.apache.org/r1475857
Log:
Add missing support for old binary properties.

Modified:
    sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/MaintenanceTask.java

Modified: sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/MaintenanceTask.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/MaintenanceTask.java?rev=1475857&r1=1475856&r2=1475857&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/MaintenanceTask.java (original)
+++ sling/trunk/bundles/extensions/event/src/main/java/org/apache/sling/event/impl/jobs/MaintenanceTask.java Thu Apr 25 17:13:20 2013
@@ -18,6 +18,8 @@
  */
 package org.apache.sling.event.impl.jobs;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
 import java.util.Calendar;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -655,6 +657,31 @@ public class MaintenanceTask {
         final ResourceResolver resolver = jobResource.getResourceResolver();
 
         final ValueMap vm = ResourceUtil.getValueMap(jobResource);
+        // check for binary properties
+        Map<String, Object> binaryProperties = new HashMap<String, Object>();
+        final ObjectInputStream ois = vm.get("slingevent:properties", ObjectInputStream.class);
+        if ( ois != null ) {
+            try {
+                int length = ois.readInt();
+                for(int i=0;i<length;i++) {
+                    final String key = (String)ois.readObject();
+                    final Object value = ois.readObject();
+                    binaryProperties.put(key, value);
+                }
+            } catch (final ClassNotFoundException cnfe) {
+                throw new PersistenceException("Class not found.", cnfe);
+            } catch (final java.io.InvalidClassException ice) {
+                throw new PersistenceException("Invalid class.", ice);
+            } catch (final IOException ioe) {
+                throw new PersistenceException("Unable to deserialize job properties.", ioe);
+            } finally {
+                try {
+                    ois.close();
+                } catch (final IOException ioe) {
+                    this.ignoreException(ioe);
+                }
+            }
+        }
         final Map<String, Object> properties = ResourceHelper.cloneValueMap(vm);
 
         properties.put(JobImpl.PROPERTY_BRIDGED_EVENT, true);
@@ -663,6 +690,9 @@ public class MaintenanceTask {
 
         properties.remove(Job.PROPERTY_JOB_QUEUE_NAME);
         properties.remove(Job.PROPERTY_JOB_TARGET_INSTANCE);
+        // and binary properties
+        properties.putAll(binaryProperties);
+        properties.remove("slingevent:properties");
 
         if ( !properties.containsKey(Job.PROPERTY_JOB_RETRIES) ) {
             properties.put(Job.PROPERTY_JOB_RETRIES, 10); // we put a dummy value here; this gets updated by the queue