Package com.comcast.cmb.common.util

Examples of com.comcast.cmb.common.util.CMBException


           
            ICNSAttributesPersistence attributePers = PersistenceFactory.getCNSAttributePersistence();
            CNSSubscriptionAttributes subAttr = attributePers.getSubscriptionAttributes(subArn);
           
            if (subAttr == null) {
                throw new CMBException(CMBErrorCodes.InternalError, "Could not get subscription delivery policy for subscripiton " + subArn);
            }
           
            CNSSubscriptionDeliveryPolicy deliveryPolicy = subAttr.getEffectiveDeliveryPolicy();
            CNSRetryPolicy retryPolicy = deliveryPolicy.getHealthyRetryPolicy();
View Full Code Here


      logger.debug("event=cns_list_topics_by_subscription topic_arn=" + topicArn + " userId=" + userId);
    }

    if ((topicArn == null) || (userId == null)) {
      logger.error("event=cns_list_topics_by_subscription error_code=InvalidParameters  topic_arn=" + topicArn + " user_id=" + userId);
      throw new CMBException(CNSErrorCodes.CNS_InvalidParameter,"request parameter does not comply with the associated constraints.");
    }

    if (!Util.isValidTopicArn(topicArn)) {
      logger.error("event=cns_list_topics_by_subscription error_code=InvalidParameters  topic_arn=" + topicArn + " user_id=" + userId);
      throw new CMBException(CNSErrorCodes.CNS_InvalidParameter,"request parameter does not comply with the associated constraints.");
    }

    List<CNSSubscription> subscriptions = null;
   
    try {
      subscriptions = PersistenceFactory.getSubscriptionPersistence().listSubscriptionsByTopic(nextToken, topicArn, null);
    } catch (SubscriberNotFoundException ex) {
      throw new CMBException(CMBErrorCodes.InvalidParameterValue, "Invalid parameter nextToken");
    }
   
    if (subscriptions.size() >= 100) {
      //Check if there are more
      nextToken = subscriptions.get(99).getArn();
View Full Code Here

      String attributeValue = request.getParameter("AttributeValue");
      String topicArn = request.getParameter("TopicArn");
     
      if ((userId == null) || (topicArn == null) || (attributeName == null) || (attributeValue == null)) {
        logger.error("event=cns_set_topic_attributes error_code=InvalidParameters attribute_name=" + attributeName + " attribute_value=" + attributeValue + " topic_arn=" + topicArn + " user_id=" + userId);
      throw new CMBException(CNSErrorCodes.CNS_InvalidParameter,"missing parameters");
      }   
     
      CNSTopicAttributes topicAttributes = new CNSTopicAttributes();

      if (attributeName.equals("DeliveryPolicy")) {     
       
        JSONObject json = new JSONObject(attributeValue);      
        CNSTopicDeliveryPolicy deliveryPolicy = new CNSTopicDeliveryPolicy(json);
        topicAttributes.setDeliveryPolicy(deliveryPolicy);
        logger.debug("event=cns_set_topic_delivery_policy topic_arn=" + topicArn + " value=" + topicAttributes.getEffectiveDeliveryPolicy());
     
      } else if (attributeName.equals("Policy")) {     
       
      // validate policy before updating
     
      try {
        new CMBPolicy(attributeValue);
      } catch (Exception ex) {
                logger.warn("event=invalid_policy topic_arn=" + topicArn + " policy=" + attributeValue, ex);
          throw ex;
        }

      topicAttributes.setPolicy(attributeValue);
        logger.debug("event=cns_set_topic_policy topic_arn=" + topicArn + "  value=" + topicAttributes.getPolicy());
     
      } else if (attributeName.equals("DisplayName")) {   
       
        if (validateDisplayName(attributeValue)) {
          topicAttributes.setDisplayName(attributeValue);
          logger.debug("event=cns_set_topic_display_name topic_arn=" + topicArn + "  value=" + attributeValue);
        } else {
          throw new CMBException(CNSErrorCodes.CNS_InvalidParameter,"Bad Display Name");
        }
       
      } else {
        logger.error("event=cns_set_topic_attributes error_code=InvalidParameters attribute_name=" + attributeName + " attribute_value=" + attributeValue + " topic_arn=" + topicArn + " user_id=" + userId);
      throw new CMBException(CNSErrorCodes.CNS_InvalidParameter,"AttributeName: " + attributeName + " is not a valid value");
      }
     
      PersistenceFactory.getCNSAttributePersistence().setTopicAttributes(topicAttributes, topicArn);
      String out = CNSAttributePopulator.getSetTopicAttributesResponse();
      logger.debug("event=cns_set_topic_attributes attribute_name=" + attributeName + " attribute_value=" + attributeValue + " topic_arn=" + topicArn + " user_id=" + userId);
View Full Code Here

           
            ICNSAttributesPersistence attributePers = PersistenceFactory.getCNSAttributePersistence();
            CNSSubscriptionAttributes subAttr = attributePers.getSubscriptionAttributes(subArn);
           
            if (subAttr == null) {
                throw new CMBException(CMBErrorCodes.InternalError, "Could not get subscription delivery policy for subscripiton " + subArn);
            }
           
            CNSSubscriptionDeliveryPolicy deliveryPolicy = subAttr.getEffectiveDeliveryPolicy();
            CNSRetryPolicy retryPolicy = deliveryPolicy.getHealthyRetryPolicy();
View Full Code Here

       
        messageStructure = request.getParameter("MessageStructure");    
       
        if (!messageStructure.equals("json")) {
          logger.error("event=cns_publish error_code=InvalidParameters message=" + message + " message_structure=" + messageStructure + " topic_arn=" + topicArn + " user_id=" + userId);
          throw new CMBException(CNSErrorCodes.CNS_InvalidParameter,"Invalid parameter: Invalid Message Structure parameter: " + messageStructure);
        }
       
        cnsMessage.setMessageStructure(CNSMessage.CNSMessageStructure.valueOf(messageStructure));
    }
     
      if (request.getParameter("Subject") != null) {
        subject = request.getParameter("Subject");
        cnsMessage.setSubject(subject);
    }
     
      if ((userId == null) || (message == null)) {
        logger.error("event=cns_publish error_code=InvalidParameters message=" + message + " topic_arn=" + topicArn + " user_id=" + userId);
      throw new CMBException(CNSErrorCodes.CNS_ValidationError,"1 validation error detected: Value null at 'message' failed to satisfy constraint: Member must not be null");
      }
     
    if ((topicArn == null) || !Util.isValidTopicArn(topicArn)) {
      logger.error("event=cns_publish error_code=InvalidParameters message=" + message + " topic_arn=" + topicArn + " user_id=" + userId);
      throw new CMBException(CNSErrorCodes.CNS_InvalidParameter,"TopicArn");
      }
   
    CNSTopic topic = CNSCache.getTopic(topicArn);
   
      if (topic == null) {
        logger.error("event=cns_publish error_code=NotFound message=" + message + " topic_arn=" + topicArn + " user_id=" + userId);
      throw new CMBException(CNSErrorCodes.CNS_NotFound,"Resource not found.");
      }
   
      cnsMessage.setUserId(topic.getUserId());
      cnsMessage.setTopicArn(topicArn);
      cnsMessage.setMessageType(CNSMessageType.Notification);
     
      cnsMessage.checkIsValid();
     
      CNSTopicAttributes topicAttributes = CNSCache.getTopicAttributes(topicArn);
      List<String> receiptHandles = new ArrayList<String>();
     
      boolean success = true;
     
      if (topicAttributes != null && topicAttributes.getSubscriptionsConfirmed() == 0) {
       
        // optimization: don't do anything if there are no confirmed subscribers
       
        logger.warn("event=no_confirmed_subscribers action=publish topic_arn=" + topicArn);
     
      } else if (CMBProperties.getInstance().isCNSBypassPublishJobQueueForSmallTopics() && topicAttributes != null && topicAttributes.getSubscriptionsConfirmed() <= CMBProperties.getInstance().getCNSMaxSubscriptionsPerEndpointPublishJob()) {
       
        // optimization: if there's only one chunk due to few subscribers, write directly into endpoint publish queue bypassing the publish job queue
       
        logger.debug("event=using_job_queue_overpass");
       
        List<CNSEndpointPublishJob.CNSEndpointSubscriptionInfo> subscriptions = CNSEndpointPublisherJobProducer.getSubscriptionsForTopic(topicArn);
       
            if (subscriptions != null && subscriptions.size() > 0) {
             
                List<CNSEndpointPublishJob> epPublishJobs = CNSEndpointPublisherJobProducer.createEndpointPublishJobs(cnsMessage, subscriptions);
               
                if (epPublishJobs.size() != 1) {
                  logger.warn("event=unexpected_number_of_endpoint_publish_jobs count=" + epPublishJobs.size());
                }
               
                for (CNSEndpointPublishJob epPublishJob: epPublishJobs) {
                String handle = sendMessageOnRandomShardAndCreateQueueIfAbsent(CNS_ENDPOINT_QUEUE_NAME_PREFIX, CMBProperties.getInstance().getCNSNumEndpointPublishJobQueues(), epPublishJob.serialize(), cnsInternalUser.getUserId());
                if (handle != null && !handle.equals("")) {
                  receiptHandles.add(handle);
                } else {
                  success = false;
                }
                }
            }
       
      } else {
     
        // otherwise pick publish job queue

        logger.debug("event=going_through_job_queue_town_center");
       
        String handle = sendMessageOnRandomShardAndCreateQueueIfAbsent(CNS_PUBLISH_QUEUE_NAME_PREFIX, CMBProperties.getInstance().getCNSNumPublishJobQueues(), cnsMessage.serialize(), cnsInternalUser.getUserId());
        if (handle != null && !handle.equals("")) {
          receiptHandles.add(handle);
        } else {
          success = false;
        }
      } 
     
      if (!success) {
        throw new CMBException(CMBErrorCodes.InternalError, "Failed to place message on internal cns queue");
      }
     
      request.setReceiptHandles(receiptHandles);
     
      String out = CNSSubscriptionPopulator.getPublishResponse(receiptHandles);
View Full Code Here

            logger.warn("event=ping_failed", ex);
          }
        }
     
      if (!CMBProperties.getInstance().getCNSServiceEnabled()) {
            throw new CMBException(CMBErrorCodes.InternalError, "CNS service is disabled");
      }
     
      if (actionMap == null || subscriptionHandler == null || topicHandler == null) {
        init();
      }
     
      if (isAuthenticationRequired(action)) {

        String topicArn = request.getParameter("TopicArn");
           
        CNSTopicAttributes attributes = CNSCache.getTopicAttributes(topicArn);         
            if (attributes != null) {
                if (!actionMap.get(action).isActionAllowed(user, request, "CNS", new CMBPolicy(attributes.getPolicy()))) {
                    throw new CMBException(CMBErrorCodes.AccessDenied, "You don't have permission for " + actionMap.get(action).getName());
                }
            }
      }

      if (actionMap.containsKey(action)) {
        return actionMap.get(action).doAction(user, asyncContext);
      }
     
        throw new CMBException(CMBErrorCodes.InvalidAction, action + " is not a valid action");
    }
View Full Code Here

    String arn = request.getParameter("SubscriptionArn");
      String userId = user.getUserId();
     
      if ((arn == null) || (userId == null)) {
        logger.error("event=cns_unsubscribe error_code=InvalidParameters arn=" + arn + " user_id=" + userId);
      throw new CMBException(CNSErrorCodes.CNS_InvalidParameter,"request parameter does not comply with the associated constraints.");
    }
     
      if (!Util.isValidSubscriptionArn(arn)) {
        logger.error("event=cns_unsubscribe error_code=InvalidParameters arn=" + arn + " user_id=" + userId);
      throw new CMBException(CNSErrorCodes.CNS_InvalidParameter,"request parameter does not comply with the associated constraints.");
      }
     
      PersistenceFactory.getSubscriptionPersistence().unsubscribe(arn);
        String out = CNSSubscriptionPopulator.getUnsubscribeResponse();
        writeResponse(out, response);
View Full Code Here

   
    logger.debug("event=cns_topic_create name=" + name + " display_name=" + displayName + " user_id=" + userId);

    if (name == null || userId == null) {
      logger.error("event=cns_topic_create error_code=InvalidParameters name=" + name + " user_id=" + userId);
      throw new CMBException(CNSErrorCodes.CNS_InvalidParameter,"request parameter does not comply with the associated constraints.");
    }
   
    if (!Util.isValidTopicName(name)) {
      throw new CMBException(CNSErrorCodes.InvalidParameterValue, "Invalid parameter topic name.");
    }

    CNSTopic newTopic;
    newTopic = PersistenceFactory.getTopicPersistence().createTopic(name, displayName, userId);
    String topicArn = newTopic.getArn();
View Full Code Here

  public void deleteTopic(String topicArn) throws Exception {

    CNSTopic topic = getTopic(topicArn);

    if (topic == null) {
      throw new CMBException(CNSErrorCodes.CNS_NotFound, "Topic not found.");
    }

    // delete all subscriptions first

    PersistenceFactory.getSubscriptionPersistence().unsubscribeAll(topic.getArn());   
View Full Code Here

   * @throws CMBException if not valid
   */
  public void checkIsValid() throws CMBException {

    if (arn == null) {
      throw new CMBException(CMBErrorCodes.InternalError, "Must set arn for subscription");
    }
   
    if (!com.comcast.cns.util.Util.isValidSubscriptionArn(arn)) {
      throw new CMBException(CMBErrorCodes.InternalError, "Invalid subscription arn");
    }

    if (topicArn == null) {
      throw new CMBException(CMBErrorCodes.InternalError, "Must set topic arn for subscription");
    }
   
    if (!com.comcast.cns.util.Util.isValidTopicArn(topicArn)) {
      throw new CMBException(CMBErrorCodes.InternalError, "Invalid topic arn");
    }
   
    if (userId == null) {
      throw new CMBException(CMBErrorCodes.InternalError, "Must set user id for subscription");
    }
   
    if (protocol == null) {
      throw new CMBException(CMBErrorCodes.InternalError, "Must set protocol for subscription");
    }
   
    if (endpoint == null) {
      throw new CMBException(CMBErrorCodes.InternalError, "Must set endpoint for subscription");
    }
   
    if (confirmed && confirmDate == null) {
      throw new CMBException(CMBErrorCodes.InternalError, "Bad confirmation data");
    }
   
    if (!confirmed && confirmDate != null) {
      throw new CMBException(CMBErrorCodes.InternalError, "Bad confirmation data");
    }
  }
View Full Code Here

TOP

Related Classes of com.comcast.cmb.common.util.CMBException

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.