Author: tommaso
Date: Fri Aug  5 12:01:55 2016
New Revision: 1755300

URL: http://svn.apache.org/viewvc?rev=1755300&view=rev
Log:
SLING-5934 - added size to DistributionQueueItem

Modified:
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItem.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
    
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/util/impl/FileBackedMemoryOutputStream.java
    
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtilsTest.java

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java?rev=1755300&r1=1755299&r2=1755300&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/DistributionPackageUtils.java
 Fri Aug  5 12:01:55 2016
@@ -166,7 +166,7 @@ public class DistributionPackageUtils {
      * @return a distribution queue item
      */
     public static DistributionQueueItem toQueueItem(DistributionPackage 
distributionPackage) {
-        return new DistributionQueueItem(distributionPackage.getId(), 
distributionPackage.getInfo());
+        return new DistributionQueueItem(distributionPackage.getId(), 
distributionPackage.getSize(), distributionPackage.getInfo());
     }
 
     /**

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItem.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItem.java?rev=1755300&r1=1755299&r2=1755300&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItem.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/DistributionQueueItem.java
 Fri Aug  5 12:01:55 2016
@@ -34,10 +34,17 @@ import org.apache.sling.distribution.pac
 public class DistributionQueueItem extends ValueMapDecorator implements 
ValueMap {
 
     private final String packageId;
+    private final long size;
 
     public DistributionQueueItem(@Nonnull String packageId, Map<String, 
Object> base) {
+        this(packageId, -1, base);
+    }
+
+    public DistributionQueueItem(String id, long size, Map<String, Object> 
base) {
         super(base);
-        this.packageId = packageId;
+        this.packageId = id;
+        this.size = size;
+
     }
 
     @Nonnull
@@ -45,6 +52,13 @@ public class DistributionQueueItem exten
         return packageId;
     }
 
+    /**
+     * retrieve the size of the package referenced by this queue item.
+     * @return the size of the underlying package or {@code -1} if not 
available.
+     */
+    public long getSize() {
+        return size;
+    }
 
     @Override
     public String toString() {

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java?rev=1755300&r1=1755299&r2=1755300&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtils.java
 Fri Aug  5 12:01:55 2016
@@ -18,12 +18,11 @@
  */
 package org.apache.sling.distribution.queue.impl.jobhandling;
 
+import javax.annotation.CheckForNull;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
-import javax.annotation.CheckForNull;
-
 import org.apache.sling.distribution.queue.DistributionQueueEntry;
 import org.apache.sling.distribution.queue.DistributionQueueItem;
 import org.apache.sling.distribution.queue.DistributionQueueItemState;
@@ -39,12 +38,20 @@ class JobHandlingUtils {
 
     private static final String DISTRIBUTION_PACKAGE_PREFIX = "distribution.";
     private static final String DISTRIBUTION_PACKAGE_ID = 
DISTRIBUTION_PACKAGE_PREFIX + "item.id";
+    private static final String DISTRIBUTION_PACKAGE_SIZE = 
DISTRIBUTION_PACKAGE_PREFIX + "package.size";
 
     public static DistributionQueueItem getItem(final Job job) {
 
         Map<String, Object> properties = new HashMap<String, Object>();
 
         String packageId = (String) job.getProperty(DISTRIBUTION_PACKAGE_ID);
+        Object sizeProperty = job.getProperty(DISTRIBUTION_PACKAGE_SIZE);
+        long size;
+        if (sizeProperty != null) {
+            size = Long.valueOf(sizeProperty.toString());
+        } else {
+            size = -1;
+        }
 
         try {
             Set<String> propertyNames = job.getPropertyNames();
@@ -58,7 +65,7 @@ class JobHandlingUtils {
             log.error("Cannot read job {} properties", job.getId(), t);
         }
 
-        return new DistributionQueueItem(packageId, properties);
+        return new DistributionQueueItem(packageId, size, properties);
     }
 
     public static Map<String, Object> 
createFullProperties(DistributionQueueItem queueItem) {
@@ -72,6 +79,7 @@ class JobHandlingUtils {
         }
 
         properties.put(DISTRIBUTION_PACKAGE_ID, queueItem.getPackageId());
+        properties.put(DISTRIBUTION_PACKAGE_SIZE, queueItem.getSize());
 
         return properties;
     }
@@ -129,7 +137,7 @@ class JobHandlingUtils {
             return null;
         }
 
-        return itemId.replace(ID_START, "").replace("--","/");
+        return itemId.replace(ID_START, "").replace("--", "/");
     }
 
 

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java?rev=1755300&r1=1755299&r2=1755300&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java
 Fri Aug  5 12:01:55 2016
@@ -195,6 +195,7 @@ public class ExtendedDistributionService
             DistributionPackageInfo packageInfo = 
DistributionPackageUtils.fromQueueItem(item);
 
             result.put("id", entry.getId());
+            result.put("size", item.getSize());
             result.put("paths", packageInfo.getPaths());
             result.put("action", packageInfo.getRequestType());
             result.put("userid", 
packageInfo.get(DistributionPackageUtils.PACKAGE_INFO_PROPERTY_REQUEST_USER, 
String.class));

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/util/impl/FileBackedMemoryOutputStream.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/util/impl/FileBackedMemoryOutputStream.java?rev=1755300&r1=1755299&r2=1755300&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/util/impl/FileBackedMemoryOutputStream.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/util/impl/FileBackedMemoryOutputStream.java
 Fri Aug  5 12:01:55 2016
@@ -36,6 +36,8 @@ import java.nio.ByteBuffer;
  */
 public class FileBackedMemoryOutputStream extends OutputStream {
 
+    private int memorySize = -1;
+
     public enum MemoryUnit {
 
         BYTES(1),
@@ -117,7 +119,7 @@ public class FileBackedMemoryOutputStrea
     }
 
     public long size() {
-        long size = memory.position();
+        long size = memorySize > 0 ? memorySize : memory.position();
         if (file != null) {
             size += file.length();
         }
@@ -133,6 +135,7 @@ public class FileBackedMemoryOutputStrea
     }
 
     public InputStream openWrittenDataInputStream() throws IOException {
+        memorySize = memory.position(); // save the memory position for size 
calculation as after flip() position's always 0
         memory.flip();
         return new ByteBufferBackedInputStream(memory, file);
     }

Modified: 
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtilsTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtilsTest.java?rev=1755300&r1=1755299&r2=1755300&view=diff
==============================================================================
--- 
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtilsTest.java
 (original)
+++ 
sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingUtilsTest.java
 Fri Aug  5 12:01:55 2016
@@ -43,9 +43,10 @@ public class JobHandlingUtilsTest {
 
         Map<String, Object> fullPropertiesFromPackage = 
JobHandlingUtils.createFullProperties(queueItem);
         assertNotNull(fullPropertiesFromPackage);
-        assertEquals(4, fullPropertiesFromPackage.size());
+        assertEquals(5, fullPropertiesFromPackage.size());
         
assertNotNull(fullPropertiesFromPackage.get("distribution.request.paths"));
         assertNotNull(fullPropertiesFromPackage.get("distribution.item.id"));
+        
assertNotNull(fullPropertiesFromPackage.get("distribution.package.size"));
         
assertNotNull(fullPropertiesFromPackage.get("distribution.package.type"));
         
assertNotNull(fullPropertiesFromPackage.get("distribution.request.type"));
     }


Reply via email to