Example usage for com.amazonaws.services.sqs.model GetQueueAttributesRequest setAttributeNames

List of usage examples for com.amazonaws.services.sqs.model GetQueueAttributesRequest setAttributeNames

Introduction

In this page you can find the example usage for com.amazonaws.services.sqs.model GetQueueAttributesRequest setAttributeNames.

Prototype


public void setAttributeNames(java.util.Collection<String> attributeNames) 

Source Link

Document

A list of attributes for which to retrieve information.

Usage

From source file:com.comcast.cqs.controller.CQSEditQueueAttributePage.java

License:Apache License

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    if (redirectUnauthenticatedUser(request, response)) {
        return;/*from   w ww .j  a  va  2  s .c om*/
    }

    CMBControllerServlet.valueAccumulator.initializeAllCounters();
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    String userId = request.getParameter("userId");
    Map<?, ?> params = request.getParameterMap();
    String queueName = request.getParameter("queueName");
    String queueUrl = Util.getAbsoluteQueueUrlForName(queueName, userId);

    connect(request);

    out.println("<html>");

    simpleHeader(request, out, "View/Edit Queue Attributes");

    if (params.containsKey("Update")) {

        String visibilityTimeout = request.getParameter("visibilityTimeout");
        String maximumMessageSize = request.getParameter("maximumMessageSize");
        String messageRetentionPeriod = request.getParameter("messageRetentionPeriod");
        String delaySeconds = request.getParameter("delaySeconds");
        String receiveMessageWaitTimeSeconds = request.getParameter("receiveMessageWaitTimeSeconds");
        String numberOfPartitions = request.getParameter("numberOfPartitions");
        String numberOfShards = request.getParameter("numberOfShards");
        String isCompressed = request.getParameter("isCompressed");

        try {

            Map<String, String> attributes = new HashMap<String, String>();

            if (visibilityTimeout != null && !visibilityTimeout.equals("")) {
                attributes.put("VisibilityTimeout", visibilityTimeout);
            }

            if (maximumMessageSize != null && !maximumMessageSize.equals("")) {
                attributes.put("MaximumMessageSize", maximumMessageSize);
            }

            if (messageRetentionPeriod != null && !messageRetentionPeriod.equals("")) {
                attributes.put("MessageRetentionPeriod", messageRetentionPeriod);
            }

            if (delaySeconds != null && !delaySeconds.equals("")) {
                attributes.put("DelaySeconds", delaySeconds);
            }

            if (receiveMessageWaitTimeSeconds != null && !receiveMessageWaitTimeSeconds.equals("")) {
                attributes.put("ReceiveMessageWaitTimeSeconds", receiveMessageWaitTimeSeconds);
            }

            if (numberOfPartitions != null && !numberOfPartitions.equals("")) {
                attributes.put("NumberOfPartitions", numberOfPartitions);
            }

            if (numberOfPartitions != null && !numberOfPartitions.equals("")) {
                attributes.put("NumberOfShards", numberOfShards);
            }

            if (isCompressed != null && !isCompressed.equals("")) {
                attributes.put("IsCompressed", isCompressed);
            }

            SetQueueAttributesRequest setQueueAttributesRequest = new SetQueueAttributesRequest(queueUrl,
                    attributes);
            sqs.setQueueAttributes(setQueueAttributesRequest);

            logger.debug("event=set_queue_attributes queue_ulr=" + queueUrl + " user_id= " + userId);

        } catch (Exception ex) {
            logger.error("event=set_queue_attributes queue_ulr=" + queueUrl + " user_id= " + userId, ex);
            throw new ServletException(ex);
        }

        out.println("<body onload='javascript:window.opener.location.reload();window.close();'>");

    } else {

        String visibilityTimeout = "";
        String maximumMessageSize = "";
        String messageRetentionPeriod = "";
        String delaySeconds = "";
        String receiveMessageWaitTimeSeconds = "";
        String numberOfPartitions = "";
        String numberOfShards = "";
        String isCompressed = "";

        if (queueUrl != null) {

            Map<String, String> attributes = null;

            try {
                GetQueueAttributesRequest getQueueAttributesRequest = new GetQueueAttributesRequest(queueUrl);
                getQueueAttributesRequest
                        .setAttributeNames(Arrays.asList("VisibilityTimeout", "MaximumMessageSize",
                                "MessageRetentionPeriod", "DelaySeconds", "ReceiveMessageWaitTimeSeconds",
                                "NumberOfPartitions", "NumberOfShards", "IsCompressed"));
                GetQueueAttributesResult getQueueAttributesResult = sqs
                        .getQueueAttributes(getQueueAttributesRequest);
                attributes = getQueueAttributesResult.getAttributes();
                visibilityTimeout = attributes.get("VisibilityTimeout");
                maximumMessageSize = attributes.get("MaximumMessageSize");
                messageRetentionPeriod = attributes.get("MessageRetentionPeriod");
                delaySeconds = attributes.get("DelaySeconds");
                receiveMessageWaitTimeSeconds = attributes.get("ReceiveMessageWaitTimeSeconds");
                numberOfPartitions = attributes.get("NumberOfPartitions");
                numberOfShards = attributes.get("NumberOfShards");
                isCompressed = attributes.get("IsCompressed");
            } catch (Exception ex) {
                logger.error("event=failed_to_get_attributes queue_url=" + queueUrl, ex);
                throw new ServletException(ex);
            }
        }

        out.println("<body>");
        out.println("<h1>View/Edit Queue Attributes</h1>");
        out.println("<h3>" + queueUrl + "</h3>");
        out.println(
                "<form action=\"/webui/cqsuser/editqueueattributes?queueName=" + queueName + "\" method=POST>");
        out.println("<input type='hidden' name='userId' value='" + userId + "'>");
        out.println("<table>");
        out.println("<tr><td colspan=2><b><font color='orange'>Queue Attributes</font></b></td></tr>");
        out.println("<tr><td colspan=2><b>Apply these attributes to the queue:</b></td></tr>");

        out.println(
                "<tr><td>Visibility Timeout:</td><td><input type='text' name='visibilityTimeout' size='50' value='"
                        + visibilityTimeout + "'></td></tr>");
        out.println("<tr><td>&nbsp;</td><td><I><font color='grey'>Default "
                + CMBProperties.getInstance().getCQSVisibilityTimeOut() + " sec</font></I></td></tr>");

        out.println(
                "<tr><td>Maximum Message Size:</td><td><input type='text' name='maximumMessageSize' size='50' value='"
                        + maximumMessageSize + "'></td></tr>");
        out.println("<tr><td>&nbsp;</td><td><I><font color='grey'>Default "
                + CMBProperties.getInstance().getCQSMaxMessageSize() + " bytes</font></I></td></tr>");

        out.println(
                "<tr><td>Message Retention Period:</td><td><input type='text' name='messageRetentionPeriod' size='50' value='"
                        + messageRetentionPeriod + "'></td></tr>");
        out.println("<tr><td>&nbsp;</td><td><I><font color='grey'>Default "
                + CMBProperties.getInstance().getCQSMessageRetentionPeriod() + " sec</font></I></td></tr>");

        out.println("<tr><td>Delay Seconds:</td><td><input type='text' name='delaySeconds' size='50' value='"
                + delaySeconds + "'></td></tr>");
        out.println("<tr><td>&nbsp;</td><td><I><font color='grey'>Default "
                + CMBProperties.getInstance().getCQSMessageDelaySeconds() + " sec</font></I></td></tr>");

        out.println(
                "<tr><td>Receive Message Wait Time Seconds:</td><td><input type='text' name='receiveMessageWaitTimeSeconds' size='50' value='"
                        + receiveMessageWaitTimeSeconds + "'></td></tr>");
        out.println(
                "<tr><td>&nbsp;</td><td><I><font color='grey'>Default 0 sec, max 20 sec</font></I></td></tr>");

        out.println(
                "<tr><td>Number Of Partitions:</td><td><input type='text' name='numberOfPartitions' size='50' value='"
                        + numberOfPartitions + "'></td></tr>");
        out.println(
                "<tr><td>&nbsp;</td><td><I><font color='grey'>Default 100, minimum 1 partition(s)</font></I></td></tr>");

        out.println(
                "<tr><td>Number Of Shards:</td><td><input type='text' name='numberOfShards' size='50' value='"
                        + numberOfShards + "'></td></tr>");
        out.println(
                "<tr><td>&nbsp;</td><td><I><font color='grey'>Default 1, maximum 100 shards</font></I></td></tr>");

        out.println("<tr><td>Compressed:</td><td><input type='text' name='isCompressed' size='50' value='"
                + isCompressed + "'></td></tr>");
        out.println(
                "<tr><td>&nbsp;</td><td><I><font color='grey'>Valid values: true or false</font></I></td></tr>");

        out.println("<tr><td>&nbsp;</td><td>&nbsp;</td></tr>");

        out.println("<tr><td colspan=2><hr/></td></tr>");
        out.println(
                "<tr><td colspan=2 align=right><input type='button' onclick='window.close()' value='Cancel'><input type='submit' name='Update' value='Update'></td></tr></table></form>");
    }

    out.println("</body></html>");

    CMBControllerServlet.valueAccumulator.deleteAllCounters();
}

From source file:com.comcast.cqs.controller.CQSQueueMessagesPageServlet.java

License:Apache License

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    if (redirectUnauthenticatedUser(request, response)) {
        return;/*from  w  w  w . j a v  a  2  s. c  o m*/
    }

    CMBControllerServlet.valueAccumulator.initializeAllCounters();
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    String userId = request.getParameter("userId");
    String queueName = request.getParameter("queueName");
    String msgStr = request.getParameter("message");
    String prevHandle = request.getParameter("prevHandle");
    String nextHandle = request.getParameter("nextHandle");
    String receiptHandle = request.getParameter("receiptHandle");
    Map<?, ?> parameters = request.getParameterMap();
    Message receivedMessage = null;
    int shard = 0;

    if (request.getParameter("shard") != null) {
        shard = Integer.parseInt(request.getParameter("shard"));
    }

    String queueUrl = Util.getAbsoluteQueueUrlForName(queueName, userId);

    connect(request);

    if (parameters.containsKey("Send")) {

        try {

            SendMessageRequest sendMessageRequest = new SendMessageRequest(queueUrl, msgStr);
            sqs.sendMessage(sendMessageRequest);
            logger.debug("event=send_message queue_url= " + queueUrl + " user_id=" + userId);

        } catch (Exception ex) {
            logger.error("event=send_message queue_url= " + queueUrl + " user_id=" + userId, ex);
            throw new ServletException(ex);
        }

    } else if (parameters.containsKey("Delete")) {

        try {

            DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest(queueUrl, receiptHandle);
            sqs.deleteMessage(deleteMessageRequest);
            logger.debug("event=delete_message queue_url= " + queueUrl + " receipt_handle=" + receiptHandle);

        } catch (Exception ex) {
            logger.error("event=delete_message queue_url= " + queueUrl + " receipt_handle=" + receiptHandle,
                    ex);
            throw new ServletException(ex);
        }
    } else if (parameters.containsKey("Receive")) {

        try {

            ReceiveMessageResult result = sqs.receiveMessage(new ReceiveMessageRequest(queueUrl));
            logger.debug("event=receive_message queue_url= " + queueUrl + " user_id=" + userId);
            List<Message> receivedMessages = null;

            if (result != null) {
                receivedMessages = result.getMessages();
                if (receivedMessages != null && receivedMessages.size() > 0) {
                    receivedMessage = receivedMessages.get(0);
                }
            }
        } catch (Exception ex) {
            logger.error("event=receive_message queue_url= " + queueUrl + " user_id=" + userId, ex);
            throw new ServletException(ex);
        }

    }

    int numberOfShards = 1;

    try {

        GetQueueAttributesRequest getQueueAttributesRequest = new GetQueueAttributesRequest(queueUrl);
        getQueueAttributesRequest.setAttributeNames(Arrays.asList("NumberOfShards"));
        GetQueueAttributesResult getQueueAttributesResult = sqs.getQueueAttributes(getQueueAttributesRequest);
        Map<String, String> attributes = getQueueAttributesResult.getAttributes();
        numberOfShards = Integer.parseInt(attributes.get("NumberOfShards"));

    } catch (Exception ex) {
        logger.error("event=get_queue_attributes url=" + queueUrl);
    }

    out.println("<html>");

    out.println("<script type='text/javascript' language='javascript'>");
    out.println("function setVisibility(id, buttonid) {");
    out.println("if(document.getElementById(buttonid).value=='Less'){");
    out.println("document.getElementById(buttonid).value = 'More';");
    out.println("document.getElementById(id).style.display = 'none';");
    out.println("}else{");
    out.println("document.getElementById(buttonid).value = 'Less';");
    out.println("document.getElementById(id).style.display = 'inline';");
    out.println("}");
    out.println("}");
    out.println("</script>");

    header(request, out, "Peek Messages for Queue " + queueName);

    out.println("<body>");
    out.println("<h2>Peek Messages for Queue " + queueName + "</h2>");

    if (user != null) {
        out.println("<table><tr><td><b>User Name:</b></td><td>" + user.getUserName() + "</td></tr>");
        out.println("<tr><td><b>User ID:</b></td><td>" + user.getUserId() + "</td></tr>");
        out.println("<tr><td><b>Access Key:</b></td><td>" + user.getAccessKey() + "</td></tr>");
        out.println("<tr><td><b>Access Secret:</b></td><td>" + user.getAccessSecret() + "</td></tr>");
        out.println("<tr><td><b>Queue Name:</b></td><td>" + queueName + "</td></tr></table>");
    }

    out.println("<p><table><tr><td><b>Send message:</b></td><td></td></tr>");
    out.println("<form id='frm1' action=\"/webui/cqsuser/message/?userId=" + userId + "&queueName=" + queueName
            + "\" method=POST>");
    out.println(
            "<tr><td><textarea rows='3' cols='50' name='message'></textarea><input type='hidden' name='userId' value='"
                    + userId
                    + "'></td><td valign='bottom'><input type='submit' value='Send' name='Send' /></td></tr></form>");
    out.println("<tr><td>&nbsp;</td></tr>");

    if (numberOfShards > 1) {
        out.println("<form id='frm2' action=\"/webui/cqsuser/message/?userId=" + userId + "&queueName="
                + queueName + "\" method=POST>");
        out.println(
                "<tr><td>Shard: <select name='shard' onChange='document.getElementById(\"frm2\").submit();'>");
        for (int i = 0; i < numberOfShards; i++) {
            out.print("<option value='" + i + "'");
            if (shard == i) {
                out.print(" selected");
            }
            out.println(">" + i + "</option>");
        }
        out.println("</form></select></td></tr></table></p>");
    } else {
        out.println("</table></p>");
    }

    // for receive message

    out.println("<form id='formsendmessage' action=\"/webui/cqsuser/message/?userId=" + userId + "&queueName="
            + queueName + "\" method=POST>");
    out.println("<table><tr><td><b>Receive Message:</b></td>");
    out.println("<td><input type='hidden' name='userId' value='" + userId
            + "'></td><td valign='bottom'><input type='submit' value='Receive Message' name='Receive' /></td>");
    out.println("</form></tr></table>");

    // showing received message

    out.println("<p><hr width='100%' align='left' /><p>");
    out.println("<h3>Received Messages</h3>");

    if (receivedMessage != null) {

        Map<String, String> attributes = receivedMessage.getAttributes();

        String timeSent = "";

        if (attributes.get("SentTimestamp") != null) {
            try {
                timeSent = new Date(Long.parseLong(attributes.get("SentTimestamp"))).toString();
            } catch (Exception ex) {
            }
        }

        String timeReceived = "";

        if (attributes.get("ApproximateFirstReceiveTimestamp") != null) {
            try {
                timeReceived = new Date(Long.parseLong(attributes.get("ApproximateFirstReceiveTimestamp")))
                        .toString();
            } catch (Exception ex) {
            }
        }

        out.println("<table class = 'alternatecolortable'>");
        out.println(
                "<tr><th></th><th>Receipt Handle</th><th>MD5</th><th>Body</th><th>Time Sent</th><th>Time First Received (Appr.)</th><th>Receive Count (Appr.)</th><th>Sender</th><th>&nbsp;</th></tr>");

        out.println("<tr>");
        out.println("<td>0</td>");
        out.println("<td>" + receivedMessage.getReceiptHandle() + "</td>");
        out.println("<td>" + receivedMessage.getMD5OfBody() + "</td>");
        String messageBody = receivedMessage.getBody();
        String messageBodyPart1 = null;
        String messageBodyPart2 = null;

        if ((messageBody != null) && (messageBody.length() > 300)) {

            messageBodyPart1 = messageBody.substring(0, 299);
            messageBodyPart2 = messageBody.substring(299);

            out.println("<td>");
            out.println(messageBodyPart1);
            out.println("<div id='rdetail' style=\"display: none;\">" + messageBodyPart2 + "</div>");
            out.println(
                    "<input type=button name=type id='rbt' value='More' onclick=\"setVisibility('rdetail', 'rbt');\";> ");
            out.println("</td>");
        } else {
            out.println("<td>" + receivedMessage.getBody() + "</td>");
        }

        out.println("<td>" + timeSent + "</td>");
        out.println("<td>" + timeReceived + "</td>");
        out.println("<td>" + attributes.get("ApproximateReceiveCount") + "</td>");
        out.println("<td>" + attributes.get("SenderId") + "</td>");
        out.println("<td><form action=\"/webui/cqsuser/message/?userId=" + user.getUserId() + "&queueName="
                + queueName + "&receiptHandle=" + receivedMessage.getReceiptHandle()
                + "\" method=POST><input type='submit' value='Delete' name='Delete'/><input type='hidden' name='queueUrl' value='"
                + queueUrl + "' /></form></td></tr>");
        out.println("</table>");

    } else {
        out.println("<p><i>no messages</i></p>");
    }

    List<CQSMessage> availableMessages = null;
    String queueFirstMessageHandle = null;

    try {

        if (queueUrl != null) {

            String peekRequestUrl = cqsServiceBaseUrl + user.getUserId() + "/" + queueName
                    + "?Action=PeekMessage&AWSAccessKeyId=" + user.getAccessKey()
                    + "&MaxNumberOfMessages=10&Shard=" + shard;

            if (prevHandle != null) {
                peekRequestUrl += "&PreviousReceiptHandle=" + prevHandle;
            } else if (nextHandle != null) {
                peekRequestUrl += "&NextReceiptHandle=" + nextHandle;
            }

            AWSCredentials awsCredentials = new BasicAWSCredentials(user.getAccessKey(),
                    user.getAccessSecret());
            String peekXml = httpPOST(cqsServiceBaseUrl, peekRequestUrl, awsCredentials);
            Element root = XmlUtil.buildDoc(peekXml);

            List<Element> messageElements = XmlUtil.getCurrentLevelChildNodes(
                    XmlUtil.getCurrentLevelChildNodes(root, "ReceiveMessageResult").get(0), "Message");

            for (Element messageElement : messageElements) {

                if (availableMessages == null) {
                    availableMessages = new ArrayList<CQSMessage>();
                }

                String body = XmlUtil.getCurrentLevelTextValue(messageElement, "Body");
                String id = XmlUtil.getCurrentLevelTextValue(messageElement, "MessageId").trim();
                String handle = XmlUtil.getCurrentLevelTextValue(messageElement, "ReceiptHandle").trim();

                CQSMessage msg = new CQSMessage(id, body);
                msg.setReceiptHandle(handle);

                List<Element> attributeElements = XmlUtil.getCurrentLevelChildNodes(messageElement,
                        "Attribute");
                Map<String, String> attributes = new HashMap<String, String>();

                for (Element attribute : attributeElements) {

                    String name = XmlUtil.getCurrentLevelTextValue(attribute, "Name");
                    String value = XmlUtil.getCurrentLevelTextValue(attribute, "Value");

                    if (name != null && value != null) {
                        attributes.put(name, value);
                    }
                }

                msg.setAttributes(attributes);

                availableMessages.add(msg);
            }

            //retrieve first messageId from queue. this is for pagination
            String peekRequestFirstMessageUrl = cqsServiceBaseUrl + user.getUserId() + "/" + queueName
                    + "?Action=PeekMessage&AWSAccessKeyId=" + user.getAccessKey()
                    + "&MaxNumberOfMessages=1&Shard=" + shard;
            String peekFirstMessageXml = httpPOST(cqsServiceBaseUrl, peekRequestFirstMessageUrl,
                    awsCredentials);
            Element rootFirstMessage = XmlUtil.buildDoc(peekFirstMessageXml);

            List<Element> messageElementsForFirstMessage = XmlUtil.getCurrentLevelChildNodes(
                    XmlUtil.getCurrentLevelChildNodes(rootFirstMessage, "ReceiveMessageResult").get(0),
                    "Message");
            if (messageElementsForFirstMessage.size() == 1) {
                queueFirstMessageHandle = XmlUtil
                        .getCurrentLevelTextValue(messageElementsForFirstMessage.get(0), "ReceiptHandle")
                        .trim();
            }
        }

    } catch (Exception ex) {
        logger.error("event=peek_message queue_url=" + queueUrl, ex);
        throw new ServletException(ex);
    }

    String previousHandle = null;
    nextHandle = null;

    out.println("<p><hr width='100%' align='left' /><p>");
    out.println("<h3>Available Messages</h3>");

    if ((availableMessages == null) || (availableMessages.size() == 0)) {
        out.println("<p><i>no messages</i></p>");
    }

    for (int i = 0; availableMessages != null && i < availableMessages.size(); i++) {

        CQSMessage message = availableMessages.get(i);

        Map<String, String> attributes = message.getAttributes();

        String timeSent = "";

        if (attributes.get("SentTimestamp") != null) {
            try {
                timeSent = new Date(Long.parseLong(attributes.get("SentTimestamp"))).toString();
            } catch (Exception ex) {
            }
        }

        String timeReceived = "";

        if (attributes.get("ApproximateFirstReceiveTimestamp") != null) {
            try {
                timeReceived = new Date(Long.parseLong(attributes.get("ApproximateFirstReceiveTimestamp")))
                        .toString();
            } catch (Exception ex) {
            }
        }

        if (i == 0) {
            out.println("<table class = 'alternatecolortable'>");
            out.println(
                    "<tr><th></th><th>Receipt Handle</th><th>MD5</th><th>Body</th><th>Time Sent</th><th>Time First Received (Appr.)</th><th>Receive Count (Appr.)</th><th>Sender</th><th>&nbsp;</th></tr>");
            previousHandle = message.getReceiptHandle();
        }

        out.println("<tr>");
        out.println("<td>" + i + "</td>");
        out.println("<td>" + message.getReceiptHandle() + "</td>");
        out.println("<td>" + message.getMD5OfBody() + "</td>");
        String messageBody = message.getBody();
        String messageBodyPart1 = null;
        String messageBodyPart2 = null;
        if ((messageBody != null) && (messageBody.length() > 300)) {
            messageBodyPart1 = messageBody.substring(0, 299);
            messageBodyPart2 = messageBody.substring(299);

            out.println("<td>");
            out.println(messageBodyPart1);
            out.println("<div id='detail" + i + "' style=\"display: none;\">" + messageBodyPart2 + "</div>");
            out.println("<input type=button name=type id='bt" + i
                    + "' value='More' onclick=\"setVisibility('detail" + i + "', 'bt" + i + "');\";> ");
            out.println("</td>");
        } else {
            out.println("<td>" + message.getBody() + "</td>");
        }
        out.println("<td>" + timeSent + "</td>");
        out.println("<td>" + timeReceived + "</td>");
        out.println("<td>" + attributes.get("ApproximateReceiveCount") + "</td>");
        out.println("<td>" + attributes.get("SenderId") + "</td>");
        out.println("<td></td></tr>");

        if (i == availableMessages.size() - 1) {
            nextHandle = message.getReceiptHandle();
        }
    }

    out.println("</table>");

    //This case is for click on "Next" button of the previous page
    if (prevHandle != null) {

        if ((previousHandle) != null) {
            out.println("<a style='float:left;' href='/webui/cqsuser/message/?userId=" + user.getUserId()
                    + "&queueName=" + queueName + "&nextHandle=" + previousHandle + "'>Prev</a>");
        } else {
            out.println("<a style='float:left;' href='javascript:history.back()'>Prev</a>");
        }
    } else if ((previousHandle != null) && (!previousHandle.equals(queueFirstMessageHandle))) { //this is for all other cases
        out.println("<a style='float:left;' href='/webui/cqsuser/message/?userId=" + user.getUserId()
                + "&queueName=" + queueName + "&nextHandle=" + previousHandle + "'>Prev</a>");
    }

    if (availableMessages != null && availableMessages.size() > 0) {
        out.println("<a style='float:right;' href='/webui/cqsuser/message/?userId=" + user.getUserId()
                + "&queueName=" + queueName + "&prevHandle=" + nextHandle + "'>Next</a>");
    }

    out.println("<h5 style='text-align:center;'><a href='/webui'>ADMIN HOME</a>");
    out.println("<a href='/webui/cqsuser?userId=" + userId + "'>BACK TO QUEUE</a></h5>");

    out.println("</body></html>");

    CMBControllerServlet.valueAccumulator.deleteAllCounters();
}

From source file:com.comcast.cqs.controller.CQSQueuePermissionsPage.java

License:Apache License

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    if (redirectUnauthenticatedUser(request, response)) {
        return;//from  ww w.  ja  v a  2  s. c  o  m
    }

    CMBControllerServlet.valueAccumulator.initializeAllCounters();
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    String userId = request.getParameter("userId");
    String queueName = request.getParameter("queueName");
    String labelSid = request.getParameter("sid");
    Map<?, ?> params = request.getParameterMap();

    String queueUrl = Util.getAbsoluteQueueUrlForName(queueName, userId);

    connect(request);

    if (params.containsKey("Remove")) {

        try {
            RemovePermissionRequest removePermissionRequest = new RemovePermissionRequest(queueUrl, labelSid);
            sqs.removePermission(removePermissionRequest);
            logger.debug("event=remove_permission queue_url=" + queueUrl + " label=" + labelSid + " user_id="
                    + userId);
        } catch (Exception ex) {
            logger.error("event=remove_permission queue_url=" + queueUrl + " label=" + labelSid + " user_id="
                    + userId, ex);
            throw new ServletException(ex);
        }
    }

    out.println("<html>");

    header(request, out, "Permissions for Queue " + Util.getNameForAbsoluteQueueUrl(queueUrl));

    out.println("<body>");

    out.println("<h2>Permissions for Queue " + Util.getNameForAbsoluteQueueUrl(queueUrl) + "</h2>");

    if (user != null) {

        out.println("<table><tr><td><b>User Name:</b></td><td>" + user.getUserName() + "</td></tr>");
        out.println("<tr><td><b>User ID:</b></td><td>" + user.getUserId() + "</td></tr>");
        out.println("<tr><td><b>Access Key:</b></td><td>" + user.getAccessKey() + "</td></tr>");
        out.println("<tr><td><b>Access Secret:</b></td><td>" + user.getAccessSecret() + "</td></tr>");
        out.println("<tr><td><b>Queue Name:</b></td><td>" + Util.getNameForAbsoluteQueueUrl(queueUrl)
                + "</td></tr>");
        out.println("<tr><td><b>Queue Url:</b></td><td>" + queueUrl + "</td></tr></table><br>");
    }

    Map<String, String> attributes = null;

    try {
        GetQueueAttributesRequest getQueueAttributesRequest = new GetQueueAttributesRequest(queueUrl);
        getQueueAttributesRequest.setAttributeNames(Arrays.asList("Policy"));
        GetQueueAttributesResult getQueueAttributesResult = sqs.getQueueAttributes(getQueueAttributesRequest);
        attributes = getQueueAttributesResult.getAttributes();
    } catch (Exception ex) {
        logger.error("event_failed_to_get_attributes queue_url=" + queueUrl, ex);
        throw new ServletException(ex);
    }

    CMBPolicy policy;

    try {
        policy = new CMBPolicy(attributes.get("Policy"));
    } catch (Exception ex) {
        throw new ServletException(ex);
    }

    if (policy != null && !policy.getStatements().isEmpty()) {

        List<CMBStatement> stmts = policy.getStatements();

        if (stmts != null && stmts.size() > 0) {
            out.println(
                    "<span class='content'><table border='1' width='70%'><tr><th>Effect</th><th>Principals</th><th>Actions</th><th>Label</th><th>&nbsp;</th></tr>");
        }

        for (int i = 0; stmts != null && i < stmts.size(); i++) {

            out.print("<form action=\"/webui/cqsuser/permissions/?userId=" + user.getUserId() + "&queueUrl="
                    + queueUrl + "\" method=POST>");

            CMBStatement stmt = stmts.get(i);

            out.println("<tr><td>" + stmt.getEffect().toString() + "</td><td>");

            if (stmt.getPrincipal() != null && stmt.getPrincipal().size() > 0) {

                for (int k = 0; k < stmt.getPrincipal().size(); k++) {
                    String user1 = stmt.getPrincipal().get(k);
                    out.println(user1 + "<br>");
                }
            }

            out.println("</td><td>");

            if (stmt.getAction() != null && stmt.getAction().size() > 0) {

                for (int j = 0; j < stmt.getAction().size(); j++) {
                    String action1 = stmt.getAction().get(j);
                    out.println(action1 + "<br>");
                }
            }

            String sid = stmt.getSid();
            out.println("</td>");
            out.println("<td>" + sid + "</td>");
            out.println(
                    "<td><input type='submit' value='Remove' name='Remove'><input type='hidden' name='sid' value='"
                            + sid + "'><input type='hidden' name='userId' value='" + userId
                            + "'><input type='hidden' name='queueName' value='" + queueName
                            + "'></td></tr></form>");
        }

        out.println("</table></span>");
    }

    out.println("<p><a href='' onclick=\"window.open('/webui/cqsuser/addpermission/?queueName=" + queueName
            + "&userId=" + userId
            + "', 'AddQueuePermission', 'location=0,menubar=0,scrollbars=0,status=0,titlebar=0,toolbar=0,height=470,width=730')\">Add permission</a></p>");
    out.println("<h5 style='text-align:center;'><a href='/webui'>ADMIN HOME</a>");
    out.println("<a href='/webui/cqsuser?userId=" + userId + "'>BACK TO QUEUE</a></h5>");
    out.println("</body></html>");

    CMBControllerServlet.valueAccumulator.deleteAllCounters();
}

From source file:com.comcast.cqs.controller.CQSUserPageServlet.java

License:Apache License

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    if (redirectUnauthenticatedUser(request, response)) {
        return;//  w  w w .  j a va2 s. c om
    }

    boolean showQueueAttributes = false;
    boolean showQueuesWithMessagesOnly = false;

    CMBControllerServlet.valueAccumulator.initializeAllCounters();
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    Map<?, ?> parameters = request.getParameterMap();
    String userId = request.getParameter("userId");
    String queueName = request.getParameter("queueName");
    String queueNamePrefix = request.getParameter("queueNamePrefix");
    String queueUrl = request.getParameter("qUrl");

    if (request.getParameter("ShowMessagesOnly") != null) {
        showQueuesWithMessagesOnly = true;
    }

    if (request.getParameter("ShowAttributes") != null) {
        showQueueAttributes = true;
    }

    List<String> queueUrls = new ArrayList<String>();

    connect(request);

    if (parameters.containsKey("Search")) {
    }

    try {

        String url = cqsServiceBaseUrl + "?Action=ListQueues&AWSAccessKeyId=" + user.getAccessKey();

        if (queueNamePrefix != null && !queueNamePrefix.equals("")) {
            url += "&QueueNamePrefix=" + queueNamePrefix;
        }

        if (showQueuesWithMessagesOnly) {
            url += "&ContainingMessagesOnly=true";
        }

        AWSCredentials awsCredentials = new BasicAWSCredentials(user.getAccessKey(), user.getAccessSecret());
        String apiStateXml = httpPOST(cqsServiceBaseUrl, url, awsCredentials);
        Element root = XmlUtil.buildDoc(apiStateXml);
        List<Element> resultList = XmlUtil.getCurrentLevelChildNodes(root, "ListQueuesResult");

        for (Element resultElement : resultList) {
            List<Element> urls = XmlUtil.getCurrentLevelChildNodes(resultElement, "QueueUrl");
            for (Element urlElement : urls) {
                queueUrls.add(urlElement.getTextContent().trim());
            }
        }

    } catch (Exception ex) {
        logger.error("event=list_queues user_id= " + userId, ex);
        throw new ServletException(ex);
    }

    if (parameters.containsKey("Create")) {

        try {
            CreateQueueRequest createQueueRequest = new CreateQueueRequest(queueName);
            CreateQueueResult createQueueResult = sqs.createQueue(createQueueRequest);
            queueUrl = createQueueResult.getQueueUrl();
            queueUrls.add(queueUrl);
            logger.debug("event=create_queue queue_url=" + queueUrl + " user_id= " + userId);
        } catch (Exception ex) {
            logger.error("event=create_queue queue_url=" + queueUrl + " user_id= " + userId, ex);
            throw new ServletException(ex);
        }

    } else if (parameters.containsKey("Delete")) {

        try {
            DeleteQueueRequest deleteQueueRequest = new DeleteQueueRequest(queueUrl);
            sqs.deleteQueue(deleteQueueRequest);
            queueUrls.remove(queueUrl);
            logger.debug("event=delete_queue queue_url=" + queueUrl + " user_id= " + userId);
        } catch (Exception ex) {
            logger.error("event=delete_queue queue_url=" + queueUrl + " user_id= " + userId, ex);
            throw new ServletException(ex);
        }

    } else if (parameters.containsKey("DeleteAll")) {

        for (int i = 0; queueUrls != null && i < queueUrls.size(); i++) {

            try {
                DeleteQueueRequest deleteQueueRequest = new DeleteQueueRequest(queueUrls.get(i));
                sqs.deleteQueue(deleteQueueRequest);
                logger.debug("event=delete_queue queue_url=" + queueUrls.get(i) + " user_id= " + userId);
            } catch (Exception ex) {
                logger.error("event=delete_queue queue_url=" + queueUrls.get(i) + " user_id= " + userId, ex);
            }
        }

        queueUrls = new ArrayList<String>();

    } else if (parameters.containsKey("ClearQueue")) {

        String qName = Util.getNameForAbsoluteQueueUrl(queueUrl);
        String qUserId = Util.getUserIdForAbsoluteQueueUrl(queueUrl);

        try {
            String url = cqsServiceBaseUrl;
            if (!url.endsWith("/")) {
                url += "/";
            }
            url += qUserId + "/" + qName + "?Action=ClearQueue&AWSAccessKeyId=" + user.getAccessKey();
            httpGet(url);
            logger.debug("event=clear_queue url=" + url + " user_id= " + userId);
        } catch (Exception ex) {
            logger.error("event=clear_queue queue_name=" + qName + " user_id= " + userId, ex);
            throw new ServletException(ex);
        }

    } else if (parameters.containsKey("ClearAllQueues")) {

        for (int i = 0; queueUrls != null && i < queueUrls.size(); i++) {

            String qName = Util.getNameForAbsoluteQueueUrl(queueUrls.get(i));
            String qUserId = Util.getUserIdForAbsoluteQueueUrl(queueUrls.get(i));

            try {
                String url = cqsServiceBaseUrl;
                if (!url.endsWith("/")) {
                    url += "/";
                }
                url += qUserId + "/" + qName + "?Action=ClearQueue&AWSAccessKeyId=" + user.getAccessKey();
                httpGet(url);
                logger.debug("event=clear_queue url=" + url + " user_id= " + userId);
            } catch (Exception ex) {
                logger.error("event=clear_queue queue_name=" + qName + " user_id= " + userId, ex);
            }
        }
    }

    out.println("<html>");

    header(request, out, "Queues");

    out.println("<body>");

    out.println("<h2>Queues</h2>");

    long numQueues = 0;

    try {
        numQueues = PersistenceFactory.getUserPersistence().getNumUserQueues(userId);
    } catch (PersistenceException ex) {
        logger.warn("event=queue_count_failure", ex);
    }

    if (user != null) {
        out.println("<table><tr><td><b>User Name:</b></td><td>" + user.getUserName() + "</td></tr>");
        out.println("<tr><td><b>User ID:</b></td><td>" + user.getUserId() + "</td></tr>");
        out.println("<tr><td><b>Access Key:</b></td><td>" + user.getAccessKey() + "</td></tr>");
        out.println("<tr><td><b>Access Secret:</b></td><td>" + user.getAccessSecret() + "</td>");
        out.println("<tr><td><b>Queue Count</b></td><td>" + numQueues + "</td></tr></table>");
    }

    out.println("<p><table>");

    out.println("<tr><td>Search queues with name prefix:</td><td></td></tr>");
    out.println("<tr><form action=\"/webui/cqsuser?userId=" + user.getUserId() + "\" method=POST>");
    out.println("<td><input type='text' name='queueNamePrefix' value='"
            + (queueNamePrefix != null ? queueNamePrefix : "") + "'/><input type='hidden' name='userId' value='"
            + userId + "'/>");
    out.println("<input type='checkbox' " + (showQueueAttributes ? "checked='true' " : "")
            + "name='ShowAttributes' value='ShowAttributes'>Show Attributes</input>");
    out.println("<input type='checkbox' " + (showQueuesWithMessagesOnly ? "checked='true' " : "")
            + " name='ShowMessagesOnly' value='ShowMessagesOnly'>Only Queues With Messages</input></td>");
    out.println("<td><input type='submit' value='Search' name='Search' /></td></form></tr>");

    out.println("<tr><td>Create queue with name:</td><td></td></tr>");
    out.println("<tr><form action=\"/webui/cqsuser?userId=" + user.getUserId() + "\" method=POST>");
    out.println("<td><input type='text' name='queueName' /><input type='hidden' name='userId' value='" + userId
            + "'></td>");
    out.println("<input type='hidden' name='queueNamePrefix' value='"
            + (queueNamePrefix != null ? queueNamePrefix : "") + "'/>");
    if (showQueuesWithMessagesOnly) {
        out.println("<input type='hidden' name='ShowMessagesOnly' value='true'/>");
    }
    if (showQueueAttributes) {
        out.println("<input type='hidden' name='ShowAttributes' value='true'/>");
    }
    out.println("<td><input type='submit' value='Create' name='Create' /></td></form></tr>");

    out.println("<tr><td>Delete all queues:</td><td></td></tr>");
    out.println("<tr><form action=\"/webui/cqsuser?userId=" + user.getUserId() + "\" "
            + "method=POST><td><input type='hidden' name='userId' value='" + userId + "'/>");
    out.println("<input type='hidden' name='queueNamePrefix' value='"
            + (queueNamePrefix != null ? queueNamePrefix : "") + "'/></td>");
    if (showQueuesWithMessagesOnly) {
        out.println("<input type='hidden' name='ShowMessagesOnly' value='true'/>");
    }
    if (showQueueAttributes) {
        out.println("<input type='hidden' name='ShowAttributes' value='true'/>");
    }
    out.println(
            "<td><input type='submit' value='Delete All' name='DeleteAll' onclick=\"return confirm('Are you sure you want to delete all?')\" /></td></form></tr>");

    out.println("<tr><td>Clear all queues:</td><td></td></tr>");
    out.println("<tr><form action=\"/webui/cqsuser?userId=" + user.getUserId() + "\" "
            + "method=POST><td><input type='hidden' name='userId' value='" + userId + "'/>");
    out.println("<input type='hidden' name='queueNamePrefix' value='"
            + (queueNamePrefix != null ? queueNamePrefix : "") + "'/></td>");
    if (showQueuesWithMessagesOnly) {
        out.println("<input type='hidden' name='ShowMessagesOnly' value='true'/>");
    }
    if (showQueueAttributes) {
        out.println("<input type='hidden' name='ShowAttributes' value='true'/>");
    }
    out.println("<td><input type='submit' value='Clear All' name='ClearAllQueues'/></td></form></tr>");

    out.println("</table></p>");

    out.println("<p><hr width='100%' align='left' /></p>");

    if ((queueUrls != null) && (queueUrls.size() >= 1000)) {
        out.println("Warning: Only first 1000 queues listed.  Use the search prefix method to find queues");
    }
    out.println("<p><table class = 'alternatecolortable' border='1'>");
    out.println("<tr><th>&nbsp;</th>");
    out.println("<th>Queue Url</th>");
    out.println("<th>Queue Arn</th>");
    out.println("<th>Queue Name</th>");
    out.println("<th>User Id</th>");
    out.println("<th>Region</th>");
    out.println("<th>Visibility TO</th>");
    out.println("<th>Max Msg Size</th>");
    out.println("<th>Msg Rention Period</th>");
    out.println("<th>Delay Seconds</th>");
    out.println("<th>Wait Time Seconds</th>");
    out.println("<th>Num Partitions</th>");
    out.println("<th>Num Shards</th>");
    out.println("<th>Compressed</th>");
    out.println("<th>Approx Num Msg</th>");
    out.println("<th>Approx Num Msg Not Visible</th>");
    out.println("<th>Approx Num Msg Delayed</th>");
    out.println("<th>&nbsp;</th><th>&nbsp;</th><th>&nbsp;</th><th>&nbsp;</th></tr>");

    for (int i = 0; queueUrls != null && i < queueUrls.size(); i++) {

        Map<String, String> attributes = new HashMap<String, String>();

        if (showQueueAttributes) {
            try {
                GetQueueAttributesRequest getQueueAttributesRequest = new GetQueueAttributesRequest(
                        queueUrls.get(i));
                getQueueAttributesRequest.setAttributeNames(Arrays.asList("VisibilityTimeout",
                        "MaximumMessageSize", "MessageRetentionPeriod", "DelaySeconds",
                        "ApproximateNumberOfMessages", "ApproximateNumberOfMessagesNotVisible",
                        "ApproximateNumberOfMessagesDelayed", "ReceiveMessageWaitTimeSeconds",
                        "NumberOfPartitions", "NumberOfShards", "IsCompressed"));
                GetQueueAttributesResult getQueueAttributesResult = sqs
                        .getQueueAttributes(getQueueAttributesRequest);
                attributes = getQueueAttributesResult.getAttributes();
            } catch (Exception ex) {
                logger.error("event=get_queue_attributes url=" + queueUrls.get(i));
            }
        }

        out.println("<tr>");
        out.println("<form action=\"/webui/cqsuser?userId=" + user.getUserId() + "\" method=POST>");
        out.println("<td>" + i + "</td>");
        out.println("<td>" + queueUrls.get(i) + "<input type='hidden' name='qUrl' value=" + queueUrls.get(i)
                + "><input type='hidden' name='qName' value="
                + Util.getNameForAbsoluteQueueUrl(queueUrls.get(i)) + "></td>");
        out.println("<td>" + Util.getArnForAbsoluteQueueUrl(queueUrls.get(i))
                + "<input type='hidden' name='arn' value=" + Util.getArnForAbsoluteQueueUrl(queueUrls.get(i))
                + "></td>");
        out.println("<td>" + Util.getNameForAbsoluteQueueUrl(queueUrls.get(i)) + "</td>");
        out.println("<td>" + user.getUserId() + "<input type='hidden' name='userId' value=" + user.getUserId()
                + "></td>");
        out.println("<td>" + CMBProperties.getInstance().getRegion() + "</td>");

        out.println("<td>"
                + (attributes.get("VisibilityTimeout") != null ? attributes.get("VisibilityTimeout") : "")
                + "</td>");
        out.println("<td>"
                + (attributes.get("MaximumMessageSize") != null ? attributes.get("MaximumMessageSize") : "")
                + "</td>");
        out.println("<td>"
                + (attributes.get("MessageRetentionPeriod") != null ? attributes.get("MessageRetentionPeriod")
                        : "")
                + "</td>");
        out.println("<td>" + (attributes.get("DelaySeconds") != null ? attributes.get("DelaySeconds") : "")
                + "</td>");
        out.println("<td>" + (attributes.get("ReceiveMessageWaitTimeSeconds") != null
                ? attributes.get("ReceiveMessageWaitTimeSeconds")
                : "") + "</td>");
        out.println("<td>"
                + (attributes.get("NumberOfPartitions") != null ? attributes.get("NumberOfPartitions") : "")
                + "</td>");
        out.println("<td>" + (attributes.get("NumberOfShards") != null ? attributes.get("NumberOfShards") : "")
                + "</td>");
        out.println("<td>" + (attributes.get("IsCompressed") != null ? attributes.get("IsCompressed") : "")
                + "</td>");
        out.println("<td>" + (attributes.get("ApproximateNumberOfMessages") != null
                ? attributes.get("ApproximateNumberOfMessages")
                : "") + "</td>");
        out.println("<td>" + (attributes.get("ApproximateNumberOfMessagesNotVisible") != null
                ? attributes.get("ApproximateNumberOfMessagesNotVisible")
                : "") + "</td>");
        out.println("<td>" + (attributes.get("ApproximateNumberOfMessagesDelayed") != null
                ? attributes.get("ApproximateNumberOfMessagesDelayed")
                : "") + "</td>");

        out.println("<td><a href='/webui/cqsuser/message?userId=" + user.getUserId() + "&queueName="
                + Util.getNameForAbsoluteQueueUrl(queueUrls.get(i)) + "'>Messages</a></td>");
        out.println("<td><a href='/webui/cqsuser/permissions?userId=" + user.getUserId() + "&queueName="
                + Util.getNameForAbsoluteQueueUrl(queueUrls.get(i)) + "'>Permissions</a></td>");
        out.println("<td><a href='' onclick=\"window.open('/webui/cqsuser/editqueueattributes?queueName="
                + Util.getNameForAbsoluteQueueUrl(queueUrls.get(i)) + "&userId=" + userId
                + "', 'EditQueueAttributes', 'height=630,width=580,toolbar=no')\">Attributes</a></td>");

        out.println("<input type='hidden' name='queueNamePrefix' value='"
                + (queueNamePrefix != null ? queueNamePrefix : "") + "'/>");
        if (showQueuesWithMessagesOnly) {
            out.println("<input type='hidden' name='ShowMessagesOnly' value='true'/>");
        }
        if (showQueueAttributes) {
            out.println("<input type='hidden' name='ShowAttributes' value='true'/>");
        }

        out.println(
                "<td><input type='submit' value='Clear' name='ClearQueue'/> <br/><input type='submit' value='Delete' name='Delete' onclick=\"return confirm('Are you sure you want to delete queue "
                        + Util.getNameForAbsoluteQueueUrl(queueUrls.get(i)) + "?')\" /></td></form></tr>");

    }

    out.println("</table></p>");
    out.println("<h5 style='text-align:center;'><a href='/webui'>ADMIN HOME</a></h5>");
    out.println("</body></html>");

    CMBControllerServlet.valueAccumulator.deleteAllCounters();
}

From source file:org.apache.usergrid.apm.service.ApplicationServiceImpl.java

License:Apache License

public AccessKey createAuthorizedAppPrinciple(Long applicationId, String orgAppName) {
    CreateUserRequest createUserRequest = new CreateUserRequest();

    createUserRequest.setUserName(APP_PRINCIPLE_USER_PREFIX + "_" + orgAppName);

    createUserRequest.setRequestCredentials(awsCredentials);

    try {/*from ww  w .j av a 2s  .c  o m*/
        CreateUserResult createUserResult = identityManagementClient.createUser(createUserRequest);
        log.info("cloud user id for app with " + orgAppName + " created with "
                + createUserResult.getUser().getUserName());
        CreateAccessKeyRequest accessKeyRequest = new CreateAccessKeyRequest();

        accessKeyRequest.setUserName(createUserResult.getUser().getUserName());

        CreateAccessKeyResult accessKeyResult = identityManagementClient.createAccessKey(accessKeyRequest);

        //Create policy of queue

        GetQueueAttributesRequest attributesRequest = new GetQueueAttributesRequest();

        log.info("Going to secure sqs queue : " + AWSUtil.formFullQueueUrl(orgAppName));

        attributesRequest.setQueueUrl(AWSUtil.formFullQueueUrl(orgAppName));

        List<String> attributeNames = new ArrayList<String>();
        attributeNames.add("QueueArn");
        attributesRequest.setAttributeNames(attributeNames);

        GetQueueAttributesResult attributesResult = sqsClient.getQueueAttributes(attributesRequest);

        String queueArn = attributesResult.getAttributes().get("QueueArn");

        String policy = POLICY_DOCUMENT_TEMPLATE.replace("QUEUE_ARN", queueArn);

        String formattedPolicy = String.format(POLICY_DOCUMENT_TEMPLATE, queueArn);
        log.info("Applying authorization for following AWS resources" + formattedPolicy);

        PutUserPolicyRequest policyRequest = new PutUserPolicyRequest();

        policyRequest.setPolicyName(POLICY_NAME);

        policyRequest.setPolicyDocument(formattedPolicy);

        policyRequest.setUserName(createUserResult.getUser().getUserName());

        identityManagementClient.putUserPolicy(policyRequest);
        log.info("User policy for queue " + queueArn + " was set");

        return accessKeyResult.getAccessKey();
    } catch (EntityAlreadyExistsException e) {

        log.error("This should not happen in production. Swallowing the error fow now " + e.getMessage());
        log.error(e);
        return null;
    }
}

From source file:org.apache.usergrid.apm.service.MetricsInjestionServiceSQSImpl.java

License:Apache License

protected List<ReceiveMessageResult> getClientDataForApp(String fullAppName) {

    ArrayList<ReceiveMessageResult> messageResults = new ArrayList<ReceiveMessageResult>(
            MAX_NUMBER_OF_REQUEST_TO_PROCESS);

    try {//from   w  ww . java2s. c  o m
        GetQueueAttributesRequest queueAttributesRequest = new GetQueueAttributesRequest();

        ArrayList<String> attributeNames = new ArrayList<String>(2);

        attributeNames.add("ApproximateNumberOfMessages");
        attributeNames.add("LastModifiedTimestamp");
        //attributeNames.add("All");

        queueAttributesRequest.setAttributeNames(attributeNames);
        String qUrl = AWSUtil.formFullQueueUrl(fullAppName);
        log.info("Getting APM data from SQS queue" + qUrl);
        queueAttributesRequest.setQueueUrl(qUrl);

        GetQueueAttributesResult queueAttributeResult = sqsClient.getQueueAttributes(queueAttributesRequest);

        String numMessagesString = queueAttributeResult.getAttributes().get("ApproximateNumberOfMessages");

        //Calculate number of "ReceiveMessage" requests need to be made.
        //TODO might need to use AsyncClient in the future to make multiple requests

        int numMessages = Integer.parseInt(numMessagesString);

        log.info("Num Messages to Process " + numMessages + " messages");

        if (numMessages > 0) {
            int receiveMessages = 0;
            int receiveRequest = 0;
            int lastNumberOfRecievedMessages = 1;

            while ((receiveMessages < numMessages) && (receiveRequest < MAX_NUMBER_OF_REQUEST_TO_PROCESS)
                    && (lastNumberOfRecievedMessages != 0)) {
                ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest();
                receiveMessageRequest.setMaxNumberOfMessages(MAX_NUMBER_OF_MESSAGES);
                receiveMessageRequest.setQueueUrl(qUrl);

                ArrayList<String> requestMessageAttributeNames = new ArrayList<String>(1);
                requestMessageAttributeNames.add("All");

                receiveMessageRequest.setAttributeNames(requestMessageAttributeNames);

                try {
                    ReceiveMessageResult receiveMessageResult = sqsClient.receiveMessage(receiveMessageRequest);
                    log.info("For application " + fullAppName + " Received "
                            + receiveMessageResult.getMessages().size() + " messages.");
                    receiveMessages += receiveMessageResult.getMessages().size();
                    //check if any of these messages have been downloaded already. Since SQS is distributed and injestor
                    //could have failed before deleting particular message, we check for message read count to 3. In odd
                    //case, some messages could get processed at most 3 times.
                    List<Message> messages = receiveMessageResult.getMessages();
                    String receiveCount = null;
                    Message m = null;
                    for (Iterator<Message> iter = messages.iterator(); iter.hasNext();) {
                        m = iter.next();
                        receiveCount = m.getAttributes().get("ApproximateReceiveCount");
                        if (receiveCount != null && Integer.valueOf(receiveCount) > 3) {
                            log.warn("ReceiveCount of message for app " + fullAppName
                                    + " is greater than 3 so going to delete this message before further processing");
                            sqsClient.deleteMessage(new DeleteMessageRequest(qUrl, m.getReceiptHandle()));
                            iter.remove();
                        }
                    }

                    lastNumberOfRecievedMessages = receiveMessageResult.getMessages().size();
                    if (lastNumberOfRecievedMessages > 0) {
                        messageResults.add(receiveMessageResult);
                        receiveRequest++;
                    }
                    ;
                } catch (Exception ex) {
                    log.error("Problem getting messages for " + fullAppName, ex);
                }
            }
        }
    } catch (AmazonServiceException ce) {
        log.error("Problem pulling message from SQS for " + fullAppName, ce);
    } catch (Exception e) {
        log.error("Problem getting messages for " + fullAppName, e);
    }

    return messageResults;
}