You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2015/07/10 15:37:30 UTC

[24/50] [abbrv] incubator-usergrid git commit: Merge fix to assets test, fix to LocalFileBinaryStore and more sensible logging in REST tests.

Merge fix to assets test, fix to LocalFileBinaryStore and more sensible logging in REST tests.


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/04605d33
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/04605d33
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/04605d33

Branch: refs/heads/two-dot-o-import
Commit: 04605d33c29ba5fbfaed43915d5a364125de7f2c
Parents: 4516ccf
Author: Dave Johnson <dm...@apigee.com>
Authored: Mon Jun 8 13:46:22 2015 -0400
Committer: Dave Johnson <dm...@apigee.com>
Committed: Mon Jun 8 13:46:22 2015 -0400

----------------------------------------------------------------------
 .../applications/assets/AssetResourceIT.java    |  2 +-
 stack/rest/src/test/resources/log4j.properties  |  2 +
 .../assets/data/LocalFileBinaryStore.java       | 51 ++++++++++++++++++++
 3 files changed, 54 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/04605d33/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java
index c3cab63..10e9703 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java
@@ -373,7 +373,7 @@ public class AssetResourceIT extends AbstractRestIT {
 
         Map<String, String> payload = hashMap("name", "cassandra_eye.jpg");
 
-        JsonNode node = resource().path("/test-organization/test-app/bars")
+        JsonNode node = resource().path("/test-organization/test-app/foos")
                 .queryParam("access_token", access_token)
                 .accept(MediaType.APPLICATION_JSON)
                 .type(MediaType.APPLICATION_JSON_TYPE)

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/04605d33/stack/rest/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/resources/log4j.properties b/stack/rest/src/test/resources/log4j.properties
index 3a9f9bb..3ae1591 100644
--- a/stack/rest/src/test/resources/log4j.properties
+++ b/stack/rest/src/test/resources/log4j.properties
@@ -27,6 +27,8 @@ log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 log4j.appender.stdout.layout.ConversionPattern=%d %p (%t) [%c] - %m%n
 
 log4j.category.org.apache=ERROR, stdout
+log4j.category.org.apache.usergrid=WARN, stdout
+log4j.category.org.apache.usergrid.rest=INFO, stdout
 
 log4j.logger.org.apache.usergrid.persistence.cassandra.DB=WARN, stdout
 log4j.logger.org.apache.usergrid.persistence.cassandra.BATCH=WARN, stdout

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/04605d33/stack/services/src/main/java/org/apache/usergrid/services/assets/data/LocalFileBinaryStore.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/assets/data/LocalFileBinaryStore.java b/stack/services/src/main/java/org/apache/usergrid/services/assets/data/LocalFileBinaryStore.java
index 633f452..486c500 100644
--- a/stack/services/src/main/java/org/apache/usergrid/services/assets/data/LocalFileBinaryStore.java
+++ b/stack/services/src/main/java/org/apache/usergrid/services/assets/data/LocalFileBinaryStore.java
@@ -22,18 +22,36 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Map;
+import java.util.Properties;
 import java.util.UUID;
 
+import org.apache.commons.lang.RandomStringUtils;
 import org.apache.usergrid.persistence.Entity;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.usergrid.persistence.EntityManager;
+import org.apache.usergrid.persistence.EntityManagerFactory;
+import org.apache.usergrid.utils.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 
 
 /** A binary store implementation using the local file system */
 public class LocalFileBinaryStore implements BinaryStore {
 
+    private Logger LOG = LoggerFactory.getLogger( LocalFileBinaryStore.class );
+
     private String reposLocation = FileUtils.getTempDirectoryPath();
 
+    private static final long FIVE_MB = ( FileUtils.ONE_MB * 5 );
+
+    @Autowired
+    private Properties properties;
+
+    @Autowired
+    private EntityManagerFactory emf;
+
 
     /** Control where to store the file repository. In the system's temp dir by default. */
     public void setReposLocation( String reposLocation ) {
@@ -64,9 +82,42 @@ public class LocalFileBinaryStore implements BinaryStore {
 
         long size = FileUtils.sizeOf( file );
 
+        // determine max size file allowed, default to 50mb
+        long maxSizeBytes = 50 * FileUtils.ONE_MB;
+        String maxSizeMbString = properties.getProperty( "usergrid.binary.max-size-mb", "50" );
+        if (StringUtils.isNumeric( maxSizeMbString )) {
+            maxSizeBytes = Long.parseLong( maxSizeMbString ) * FileUtils.ONE_MB;
+        }
+
+        // always allow files up to 5mb
+        if (maxSizeBytes < 5 * FileUtils.ONE_MB ) {
+            maxSizeBytes = 5 * FileUtils.ONE_MB;
+        }
+
+        EntityManager em = emf.getEntityManager( appId );
         Map<String, Object> fileMetadata = AssetUtils.getFileMetadata( entity );
+
+        if ( size > maxSizeBytes ) {
+            try {
+                fileMetadata.put( "error", "Asset size " + size
+                        + " is larger than max size of " + maxSizeBytes );
+                em.update( entity );
+
+            } catch ( Exception e ) {
+                LOG.error( "Error updating entity with error message", e);
+            }
+            return;
+        }
+
         fileMetadata.put( AssetUtils.CONTENT_LENGTH, size );
         fileMetadata.put( AssetUtils.LAST_MODIFIED, System.currentTimeMillis() );
+        fileMetadata.put( AssetUtils.E_TAG, RandomStringUtils.randomAlphanumeric( 10 ) );
+
+        try {
+            em.update( entity );
+        } catch (Exception e) {
+            throw new IOException("Unable to update entity filedata", e);
+        }
 
         // if we were successful, write the mime type
         if ( file.exists() ) {