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