You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by gr...@apache.org on 2015/08/05 01:34:31 UTC

[2/5] incubator-usergrid git commit: Fixes runtime bug with joda time conflict with Astayanx

Fixes runtime bug with joda time conflict with Astayanx

Fixes bug in AmazonUtils incorrectly re-throwing missing exception.


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

Branch: refs/heads/two-dot-o-dev
Commit: 29d115fc88cc9a058735f3582bb73aee39ec16e7
Parents: d67c220
Author: Todd Nine <tn...@apigee.com>
Authored: Tue Aug 4 15:13:04 2015 -0600
Committer: Todd Nine <tn...@apigee.com>
Committed: Tue Aug 4 15:13:04 2015 -0600

----------------------------------------------------------------------
 stack/corepersistence/queue/pom.xml             |  20 +-
 .../queue/util/AmazonNotificationUtils.java     | 230 ++++++++++---------
 2 files changed, 135 insertions(+), 115 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/29d115fc/stack/corepersistence/queue/pom.xml
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queue/pom.xml b/stack/corepersistence/queue/pom.xml
index 7780997..2d46dc8 100644
--- a/stack/corepersistence/queue/pom.xml
+++ b/stack/corepersistence/queue/pom.xml
@@ -54,13 +54,19 @@
 
     <!-- tests -->
 
-    <dependency>
-      <groupId>org.apache.usergrid</groupId>
-      <artifactId>common</artifactId>
-      <version>${project.version}</version>
-      <classifier>tests</classifier>
-      <scope>test</scope>
-    </dependency>
+      <dependency>
+          <groupId>org.apache.usergrid</groupId>
+          <artifactId>common</artifactId>
+          <version>${project.version}</version>
+          <classifier>tests</classifier>
+          <scope>test</scope>
+      </dependency>
+
+      <dependency>
+          <groupId>joda-time</groupId>
+          <artifactId>joda-time</artifactId>
+          <version>2.8.1</version>
+      </dependency>
 
     <dependency>
       <groupId>org.apache.usergrid</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/29d115fc/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/util/AmazonNotificationUtils.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/util/AmazonNotificationUtils.java b/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/util/AmazonNotificationUtils.java
index 1d86823..9561a58 100644
--- a/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/util/AmazonNotificationUtils.java
+++ b/stack/corepersistence/queue/src/main/java/org/apache/usergrid/persistence/queue/util/AmazonNotificationUtils.java
@@ -1,141 +1,150 @@
 package org.apache.usergrid.persistence.queue.util;
 
-import com.amazonaws.AmazonServiceException;
-import com.amazonaws.auth.policy.*;
-import com.amazonaws.auth.policy.actions.SQSActions;
-import com.amazonaws.auth.policy.conditions.ConditionFactory;
-import com.amazonaws.services.sns.AmazonSNSClient;
-import com.amazonaws.services.sns.model.*;
-import com.amazonaws.services.sns.util.Topics;
-import com.amazonaws.services.sqs.AmazonSQSClient;
-import com.amazonaws.services.sqs.model.*;
-import org.apache.usergrid.persistence.queue.Queue;
-import org.apache.usergrid.persistence.queue.QueueFig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.usergrid.persistence.queue.QueueFig;
+
+import com.amazonaws.auth.policy.Condition;
+import com.amazonaws.auth.policy.Policy;
+import com.amazonaws.auth.policy.Principal;
+import com.amazonaws.auth.policy.Resource;
+import com.amazonaws.auth.policy.Statement;
+import com.amazonaws.auth.policy.actions.SQSActions;
+import com.amazonaws.auth.policy.conditions.ConditionFactory;
+import com.amazonaws.services.sns.AmazonSNSClient;
+import com.amazonaws.services.sns.model.CreateTopicResult;
+import com.amazonaws.services.sns.model.ListTopicsResult;
+import com.amazonaws.services.sns.model.Topic;
+import com.amazonaws.services.sqs.AmazonSQSClient;
+import com.amazonaws.services.sqs.model.CreateQueueRequest;
+import com.amazonaws.services.sqs.model.CreateQueueResult;
+import com.amazonaws.services.sqs.model.GetQueueAttributesRequest;
+import com.amazonaws.services.sqs.model.GetQueueAttributesResult;
+import com.amazonaws.services.sqs.model.GetQueueUrlResult;
+import com.amazonaws.services.sqs.model.QueueDoesNotExistException;
+import com.amazonaws.services.sqs.model.SetQueueAttributesRequest;
+
+
 /**
  * Created by Jeff West on 5/25/15.
  */
 public class AmazonNotificationUtils {
 
-    private static final Logger logger = LoggerFactory.getLogger(AmazonNotificationUtils.class);
+    private static final Logger logger = LoggerFactory.getLogger( AmazonNotificationUtils.class );
+
 
-    public static String createQueue(final AmazonSQSClient sqs,
-                                     final String queueName,
-                                     final QueueFig fig)
-            throws Exception {
+    public static String createQueue( final AmazonSQSClient sqs, final String queueName, final QueueFig fig )
+        throws Exception {
 
-        final String deadletterQueueName = String.format("%s_dead", queueName);
-        final Map<String, String> deadLetterAttributes = new HashMap<>(2);
+        final String deadletterQueueName = String.format( "%s_dead", queueName );
+        final Map<String, String> deadLetterAttributes = new HashMap<>( 2 );
 
-        deadLetterAttributes.put("MessageRetentionPeriod", fig.getDeadletterRetentionPeriod());
+        deadLetterAttributes.put( "MessageRetentionPeriod", fig.getDeadletterRetentionPeriod() );
 
-        CreateQueueRequest createDeadLetterQueueRequest = new CreateQueueRequest()
-                .withQueueName(deadletterQueueName).withAttributes(deadLetterAttributes);
+        CreateQueueRequest createDeadLetterQueueRequest =
+            new CreateQueueRequest().withQueueName( deadletterQueueName ).withAttributes( deadLetterAttributes );
 
-        final CreateQueueResult deadletterResult = sqs.createQueue(createDeadLetterQueueRequest);
+        final CreateQueueResult deadletterResult = sqs.createQueue( createDeadLetterQueueRequest );
 
-        logger.info("Created deadletter queue with url {}", deadletterResult.getQueueUrl());
+        logger.info( "Created deadletter queue with url {}", deadletterResult.getQueueUrl() );
 
-        final String deadletterArn = AmazonNotificationUtils.getQueueArnByName(sqs, deadletterQueueName);
+        final String deadletterArn = AmazonNotificationUtils.getQueueArnByName( sqs, deadletterQueueName );
 
-        String redrivePolicy = String.format("{\"maxReceiveCount\":\"%s\"," +
-                " \"deadLetterTargetArn\":\"%s\"}", fig.getQueueDeliveryLimit(), deadletterArn);
+        String redrivePolicy = String
+            .format( "{\"maxReceiveCount\":\"%s\"," + " \"deadLetterTargetArn\":\"%s\"}", fig.getQueueDeliveryLimit(),
+                deadletterArn );
 
-        final Map<String, String> queueAttributes = new HashMap<>(2);
-        deadLetterAttributes.put("MessageRetentionPeriod", fig.getRetentionPeriod());
-        deadLetterAttributes.put("RedrivePolicy", redrivePolicy);
+        final Map<String, String> queueAttributes = new HashMap<>( 2 );
+        deadLetterAttributes.put( "MessageRetentionPeriod", fig.getRetentionPeriod() );
+        deadLetterAttributes.put( "RedrivePolicy", redrivePolicy );
 
         CreateQueueRequest createQueueRequest = new CreateQueueRequest().
-                withQueueName(queueName)
-                .withAttributes(queueAttributes);
+                                                                            withQueueName( queueName )
+                                                                        .withAttributes( queueAttributes );
 
-        CreateQueueResult result = sqs.createQueue(createQueueRequest);
+        CreateQueueResult result = sqs.createQueue( createQueueRequest );
 
         String url = result.getQueueUrl();
 
-        logger.info("Created SQS queue with url {}", url);
+        logger.info( "Created SQS queue with url {}", url );
 
         return url;
     }
 
-    public static void setQueuePermissionsToReceive(final AmazonSQSClient sqs,
-                                                    final String queueUrl,
-                                                    final List<String> topicARNs) throws Exception{
 
-        String queueARN = getQueueArnByUrl(sqs, queueUrl);
+    public static void setQueuePermissionsToReceive( final AmazonSQSClient sqs, final String queueUrl,
+                                                     final List<String> topicARNs ) throws Exception {
 
-        Statement statement = new Statement(Statement.Effect.Allow)
-            .withActions(SQSActions.SendMessage)
-            .withPrincipals(new Principal("*"))
-            .withResources(new Resource(queueARN));
+        String queueARN = getQueueArnByUrl( sqs, queueUrl );
 
-        List<Condition> conditions = new ArrayList<>();
+        Statement statement = new Statement( Statement.Effect.Allow ).withActions( SQSActions.SendMessage )
+                                                                     .withPrincipals( new Principal( "*" ) )
+                                                                     .withResources( new Resource( queueARN ) );
 
-        for(String topicARN : topicARNs){
+        List<Condition> conditions = new ArrayList<>();
 
-            conditions.add(ConditionFactory.newSourceArnCondition(topicARN));
+        for ( String topicARN : topicARNs ) {
 
+            conditions.add( ConditionFactory.newSourceArnCondition( topicARN ) );
         }
-        statement.setConditions(conditions);
+        statement.setConditions( conditions );
 
-        Policy policy = new Policy("SubscriptionPermission").withStatements(statement);
+        Policy policy = new Policy( "SubscriptionPermission" ).withStatements( statement );
 
 
         final Map<String, String> queueAttributes = new HashMap<>();
-        queueAttributes.put("Policy", policy.toJson());
+        queueAttributes.put( "Policy", policy.toJson() );
 
-        SetQueueAttributesRequest queueAttributesRequest = new SetQueueAttributesRequest(queueUrl, queueAttributes);
+        SetQueueAttributesRequest queueAttributesRequest = new SetQueueAttributesRequest( queueUrl, queueAttributes );
 
         try {
-            sqs.setQueueAttributes(queueAttributesRequest);
-        }catch (Exception e){
-            logger.error("Failed to set permissions on QUEUE ARN=[{}] for TOPIC ARNs=[{}]", queueARN, topicARNs.toString(), e);
+            sqs.setQueueAttributes( queueAttributesRequest );
+        }
+        catch ( Exception e ) {
+            logger.error( "Failed to set permissions on QUEUE ARN=[{}] for TOPIC ARNs=[{}]", queueARN,
+                topicARNs.toString(), e );
         }
-
-
     }
 
 
-    public static String getQueueArnByName(final AmazonSQSClient sqs,
-                                           final String queueName)
-            throws Exception {
+    public static String getQueueArnByName( final AmazonSQSClient sqs, final String queueName ) throws Exception {
 
         String queueUrl = null;
 
         try {
-            GetQueueUrlResult result = sqs.getQueueUrl(queueName);
+            GetQueueUrlResult result = sqs.getQueueUrl( queueName );
             queueUrl = result.getQueueUrl();
-
-        } catch (QueueDoesNotExistException queueDoesNotExistException) {
+        }
+        catch ( QueueDoesNotExistException queueDoesNotExistException ) {
             //no op, swallow
-            logger.warn("Queue {} does not exist", queueName);
+            logger.warn( "Queue {} does not exist", queueName );
             return null;
-
-        } catch (Exception e) {
-            logger.error(String.format("Failed to get URL for Queue [%s] from SQS", queueName), e);
+        }
+        catch ( Exception e ) {
+            logger.error( String.format( "Failed to get URL for Queue [%s] from SQS", queueName ), e );
             throw e;
         }
 
-        if (queueUrl != null) {
+        if ( queueUrl != null ) {
 
             try {
-                GetQueueAttributesRequest queueAttributesRequest = new GetQueueAttributesRequest(queueUrl)
-                        .withAttributeNames("All");
+                GetQueueAttributesRequest queueAttributesRequest =
+                    new GetQueueAttributesRequest( queueUrl ).withAttributeNames( "All" );
 
-                GetQueueAttributesResult queueAttributesResult = sqs.getQueueAttributes(queueAttributesRequest);
+                GetQueueAttributesResult queueAttributesResult = sqs.getQueueAttributes( queueAttributesRequest );
                 Map<String, String> sqsAttributeMap = queueAttributesResult.getAttributes();
 
-                return sqsAttributeMap.get("QueueArn");
-
-            } catch (Exception e) {
-                logger.error("Failed to get queue URL from service", e);
+                return sqsAttributeMap.get( "QueueArn" );
+            }
+            catch ( Exception e ) {
+                logger.error( "Failed to get queue URL from service", e );
                 throw e;
             }
         }
@@ -143,75 +152,80 @@ public class AmazonNotificationUtils {
         return null;
     }
 
-    public static String getQueueArnByUrl(final AmazonSQSClient sqs,
-                                          final String queueUrl)
-            throws Exception {
+
+    public static String getQueueArnByUrl( final AmazonSQSClient sqs, final String queueUrl ) throws Exception {
 
         try {
-            GetQueueAttributesRequest queueAttributesRequest = new GetQueueAttributesRequest(queueUrl)
-                    .withAttributeNames("All");
+            GetQueueAttributesRequest queueAttributesRequest =
+                new GetQueueAttributesRequest( queueUrl ).withAttributeNames( "All" );
 
-            GetQueueAttributesResult queueAttributesResult = sqs.getQueueAttributes(queueAttributesRequest);
+            GetQueueAttributesResult queueAttributesResult = sqs.getQueueAttributes( queueAttributesRequest );
             Map<String, String> sqsAttributeMap = queueAttributesResult.getAttributes();
 
-            return sqsAttributeMap.get("QueueArn");
-
-        } catch (Exception e) {
-            logger.error("Failed to get queue URL from service", e);
+            return sqsAttributeMap.get( "QueueArn" );
+        }
+        catch ( Exception e ) {
+            logger.error( "Failed to get queue URL from service", e );
             throw e;
         }
     }
 
-    public static String getTopicArn(final AmazonSNSClient sns,
-                                     final String queueName,
-                                     final boolean createOnMissing)
-            throws Exception {
 
-        if (logger.isDebugEnabled())
-            logger.debug("Looking up Topic ARN: {}", queueName);
+    public static String getTopicArn( final AmazonSNSClient sns, final String queueName, final boolean createOnMissing )
+        throws Exception {
+
+        if ( logger.isDebugEnabled() ) {
+            logger.debug( "Looking up Topic ARN: {}", queueName );
+        }
 
         ListTopicsResult listTopicsResult = sns.listTopics();
         String topicArn = null;
 
-        for (Topic topic : listTopicsResult.getTopics()) {
+        for ( Topic topic : listTopicsResult.getTopics() ) {
             String arn = topic.getTopicArn();
 
-            if (queueName.equals(arn.substring(arn.lastIndexOf(':')))) {
+            if ( queueName.equals( arn.substring( arn.lastIndexOf( ':' ) ) ) ) {
                 topicArn = arn;
 
-                logger.info("Found existing topic arn=[{}] for queue=[{}]", topicArn, queueName);
+                logger.info( "Found existing topic arn=[{}] for queue=[{}]", topicArn, queueName );
             }
         }
 
-        if (topicArn == null && createOnMissing) {
-            logger.info("Creating topic for queue=[{}]...", queueName);
+        if ( topicArn == null && createOnMissing ) {
+            logger.info( "Creating topic for queue=[{}]...", queueName );
 
-            CreateTopicResult createTopicResult = sns.createTopic(queueName);
+            CreateTopicResult createTopicResult = sns.createTopic( queueName );
             topicArn = createTopicResult.getTopicArn();
 
-            logger.info("Successfully created topic with name {} and arn {}", queueName, topicArn);
-        } else {
-            logger.error("Error looking up topic ARN for queue=[{}] and createOnMissing=[{}]", queueName, createOnMissing);
+            logger.info( "Successfully created topic with name {} and arn {}", queueName, topicArn );
+        }
+        else {
+            logger.error( "Error looking up topic ARN for queue=[{}] and createOnMissing=[{}]", queueName,
+                createOnMissing );
         }
 
-        if (logger.isDebugEnabled())
-            logger.debug("Returning Topic ARN=[{}] for Queue=[{}]", topicArn, queueName);
+        if ( logger.isDebugEnabled() ) {
+            logger.debug( "Returning Topic ARN=[{}] for Queue=[{}]", topicArn, queueName );
+        }
 
 
         return topicArn;
     }
 
-    public static String getQueueUrlByName(final AmazonSQSClient sqs,
-                                           final String queueName) {
+
+    public static String getQueueUrlByName( final AmazonSQSClient sqs, final String queueName ) {
 
         try {
-            GetQueueUrlResult result = sqs.getQueueUrl(queueName);
+            GetQueueUrlResult result = sqs.getQueueUrl( queueName );
             return result.getQueueUrl();
-        } catch (QueueDoesNotExistException e) {
-            logger.error("Queue {} does not exist", queueName);
-            throw e;
-        } catch (Exception e) {
-            logger.error("failed to get queue from service", e);
+        }
+        catch ( QueueDoesNotExistException e ) {
+            //no op, return null
+            logger.error( "Queue {} does not exist", queueName );
+            return null;
+        }
+        catch ( Exception e ) {
+            logger.error( "failed to get queue from service", e );
             throw e;
         }
     }