Hi, The diff for the UI module of 4.1.7 in DLC is attached in the JIRA ticket https://wso2.org/jira/browse/MB-435. Please find the diff file attached herewith too.
Also the code is checked in the following scratch locations 4.1.3 - https://svn.wso2.org/repos/wso2/scratch/ss-dev/shani/MB-dev/4.1.3 4.1.7 - https://svn.wso2.org/repos/wso2/scratch/ss-dev/shani/MB-dev/4.1.7 -- Thanks and Regards *, Shani Ranasinghe* Software Engineer WSO2 Inc.; http://wso2.com lean.enterprise.middleware mobile: +94 77 2273555 linked in: lk.linkedin.com/pub/shani-ranasinghe/34/111/ab
Index: src/main/resources/org/wso2/carbon/andes/ui/i18n/JSResources.properties =================================================================== --- src/main/resources/org/wso2/carbon/andes/ui/i18n/JSResources.properties (revision 0) +++ src/main/resources/org/wso2/carbon/andes/ui/i18n/JSResources.properties (working copy) @@ -0,0 +1,8 @@ +confirmation.delete=Are you sure to delete? +confirmation.restore=Are you sure you want to restore? +info.successful.delete=Successfully deleted. +info.successful.restore=Successfully restored. +info.zero.items.selected=Please select one or more messages to +info.no.queueu.selected=Please select a queue to restore +delete=delete +restore=restore \ No newline at end of file Index: src/main/resources/web/queues/js/treecontrol.js =================================================================== --- src/main/resources/web/queues/js/treecontrol.js (revision 197189) +++ src/main/resources/web/queues/js/treecontrol.js (working copy) @@ -42,6 +42,72 @@ theform.queueName.value = queueName; theform.submit(); } + + + function doDeleteDLC(nameOfQueue) { + var checkedValues = getCheckedValues(); + if(checkedValues == null || checkedValues == "" ){ + var msg = org_wso2_carbon_andes_ui_jsi18n["info.zero.items.selected"]+ " " + org_wso2_carbon_andes_ui_jsi18n["delete"]; + CARBON.showInfoDialog(msg); + return; + } + CARBON.showConfirmationDialog(org_wso2_carbon_andes_ui_jsi18n["confirmation.delete"], function(){ + $.ajax({ + url:'../queues/dlc_message_delete_ajaxprocessor.jsp?nameOfQueue=' + nameOfQueue + '&msgList=' + checkedValues, + async:true, + dataType:"html", + success: function() { + CARBON.showInfoDialog(org_wso2_carbon_andes_ui_jsi18n["info.successful.delete"], function(){ + location.href = "../queues/dlc_messages_list.jsp?nameOfQueue=" + nameOfQueue; + }); + + }, + + failure: function(transport) { + CARBON.showErrorDialog(trim(transport.responseText),function(){ + location.href = "../queues/dlc_messages_list.jsp?nameOfQueue=" + nameOfQueue; + return; + }); + } + }); + }); +} + + function deRestoreMessages(nameOfQueue){ + var checkedValues = getCheckedValues(); + if(checkedValues == null || checkedValues == ""){ + var msg = org_wso2_carbon_andes_ui_jsi18n["info.zero.items.selected"]+ " " + org_wso2_carbon_andes_ui_jsi18n["restore"]; + CARBON.showInfoDialog(msg); + return; + } + CARBON.showConfirmationDialog(org_wso2_carbon_andes_ui_jsi18n["confirmation.restore"], function(){ + $.ajax({ + url:'../queues/dlc_message_restore_ajaxprocessor.jsp?nameOfQueue=' + nameOfQueue + '&msgList=' + checkedValues, + async:true, + dataType:"html", + success: function() { + CARBON.showInfoDialog(org_wso2_carbon_andes_ui_jsi18n["info.successful.restore"], function(){ + location.href = "../queues/dlc_messages_list.jsp?nameOfQueue=" + nameOfQueue; + }); + + }, + + failure: function(transport) { + CARBON.showErrorDialog(trim(transport.responseText),function(){ + location.href = "../queues/dlc_messages_list.jsp?nameOfQueue=" + nameOfQueue; + return; + }); + } + }); + }); + } + + function getCheckedValues(){ + return $('input[name="checkbox"]:checked').map( + function() { + return this.value; + }).get().join(','); + } function validateForm(){ var msg_count = document.getElementById("num_of_msgs"); Index: src/main/resources/web/queues/dlc_messages_list.jsp =================================================================== --- src/main/resources/web/queues/dlc_messages_list.jsp (revision 0) +++ src/main/resources/web/queues/dlc_messages_list.jsp (working copy) @@ -0,0 +1,227 @@ +<%@page import="java.sql.Array"%> +<%@page import="org.wso2.carbon.andes.stub.admin.types.Queue"%> +<%@page import="org.apache.axis2.AxisFault"%> +<%@ page import="org.wso2.carbon.andes.ui.UIUtils" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="carbon" uri="http://wso2.org/projects/carbon/taglibs/carbontags.jar" %> +<%@ page import="org.wso2.carbon.andes.ui.client.QueueBrowserClient" %> +<%@ page import="org.wso2.carbon.ui.CarbonUIMessage" %> +<%@ page import="javax.jms.JMSException" %> +<%@ page import="javax.jms.Message" %> +<%@ page import="java.util.ArrayList" %> +<%@ page import="java.util.Collections" %> +<%@ page import="java.util.Enumeration" %> +<%@ page import="org.wso2.carbon.andes.stub.AndesAdminServiceStub" %> +<script type="text/javascript" src="js/treecontrol.js"></script> +<fmt:bundle basename="org.wso2.carbon.andes.ui.i18n.Resources"> +<jsp:include page="resources-i18n-ajaxprocessor.jsp"/> + <carbon:jsi18n + resourceBundle="org.wso2.carbon.andes.ui.i18n.Resources" + request="<%=request%>"/> + + <script type="text/javascript" src="../admin/js/breadcrumbs.js"></script> + <script type="text/javascript" src="../admin/js/cookies.js"></script> + <script type="text/javascript" src="../admin/js/main.js"></script> + <link rel="stylesheet" href="../qpid/css/dsxmleditor.css"/> + <script type="text/javascript"> + + function toggleCheck(source) + { + + var allcheckBoxes = document.getElementsByName("checkbox"); + for (var i=0; i < allcheckBoxes.length; i++) { + if (allcheckBoxes[i].type == 'checkbox') + { + allcheckBoxes[i].checked = source.checked; + } + } + } + + function checkSelectAll(source) + { + var selectAllCheckBox = document.getElementsByName("selectAllCheckBox"); + if(selectAllCheckBox[0].checked){ + selectAllCheckBox[0].checked = source.checked; + } + + var allcheckBoxesInPage = $("input:checkbox"); + + var totalCheckboxCount = allcheckBoxesInPage.size() -1; ////removing the select all check box from the count. + + var checkedBoxes = $("input[@type=checkbox]:checked"); //the checked box count + var checkedBoxesCount = checkedBoxes.size(); + + if(totalCheckboxCount == checkedBoxesCount){ + selectAllCheckBox[0].checked = true;arg0 + } + } + + function Ondelete(){ + + } + + </script> + + <% + AndesAdminServiceStub stub = UIUtils.getAndesAdminServiceStub(config, session, request); + String nameOfQueue = request.getParameter("nameOfQueue"); + Queue[] queueList = null; + try { + queueList = stub.getAllQueues(); + + } catch (Exception e) { + CarbonUIMessage.sendCarbonUIMessage(e.getMessage(), CarbonUIMessage.ERROR, request, e); + e.printStackTrace(); + } + + QueueBrowserClient queueBrowserClient = new QueueBrowserClient(nameOfQueue, stub.getCurrentUser(),stub.getAccessKey()); + Enumeration queueEnu = queueBrowserClient.browseQueue(); + ArrayList msgArrayList = Collections.list(queueEnu); + Object[] filteredMsgArray = null; + int msgCountPerPage = 100; + int pageNumber = 0; + int numberOfPages = 1; + String concatenatedParameters = "nameOfQueue=" + nameOfQueue; + long totalMsgsInQueue; + String pageNumberAsStr = request.getParameter("pageNumber"); + if (pageNumberAsStr != null) { + pageNumber = Integer.parseInt(pageNumberAsStr); + } + + if (msgArrayList != null) { + totalMsgsInQueue = msgArrayList.size(); + numberOfPages = (int) Math.ceil(((float) totalMsgsInQueue) / msgCountPerPage); + filteredMsgArray = UIUtils.getFilteredMsgsList(msgArrayList, pageNumber * msgCountPerPage, msgCountPerPage); + } + + %> + <carbon:breadcrumb + label="queue.content" + resourceBundle="org.wso2.carbon.andes.ui.i18n.Resources" + topPage="false" + request="<%=request%>"/> + + <div id="middle"> + <h2><fmt:message key="dlc.queue.content"/> <%=nameOfQueue%></h2> + <div id="iconArea"> + <table align="right"> + <thead> + <tr align="right"> + <th align="right"> + <a style="background-image: url(../admin/images/delete.gif);" + class="icon-link" + onclick="doDeleteDLC('<%=nameOfQueue%>')">Delete</a> + </th> + <th align="right"> + <a style="background-image: url(../admin/images/move.gif);" + class="icon-link" + onclick="deRestoreMessages('<%=nameOfQueue%>')">Restore</a> + </th> + </tr> + </thead> + </table> + </div> + + <div id="workArea"> + <input type="hidden" name="pageNumber" value="<%=pageNumber%>"/> + <carbon:paginator pageNumber="<%=pageNumber%>" numberOfPages="<%=numberOfPages%>" + page="queue_messages_list.jsp" pageNumberParameterName="pageNumber" + resourceBundle="org.wso2.carbon.andes.ui.i18n.Resources" + prevKey="prev" nextKey="next" parameters="<%=concatenatedParameters%>"/> + + <table class="styledLeft" style="width:100%"> + <thead> + <tr> + <th><input type="checkbox" name="selectAllCheckBox" onClick="toggleCheck(this)" /></th> + <th><fmt:message key="message.contenttype"/></th> + <th><fmt:message key="message.messageId"/></th> + <th><fmt:message key="message.correlationId"/></th> + <th><fmt:message key="message.type"/></th> + <th><fmt:message key="message.redelivered"/></th> + <th><fmt:message key="message.deliverymode"/></th> + <th><fmt:message key="message.priority"/></th> + <th><fmt:message key="message.timestamp"/></th> + <th><fmt:message key="message.expiration"/></th> + <th><fmt:message key="message.properties"/></th> + <th><fmt:message key="message.summary"/></th> + </tr> + </thead> + <tbody> + <% + try { + for (Object message : filteredMsgArray) { + Message queueMessage = (Message) message; + if (queueMessage != null) { + String msgProperties = queueBrowserClient.getMsgProperties(queueMessage); + String contentType = queueBrowserClient.getMsgContentType(queueMessage); + String[] messageContent = queueBrowserClient.getMessageContentAsString(queueMessage); + %> + <tr> + <td><input type="checkbox" name="checkbox" onClick="checkSelectAll(this)" value="<%= queueMessage.getJMSMessageID() %>"/></td> + <td><img src="images/<%= contentType.toLowerCase()%>.png" + alt=""/> <%= contentType%> + </td> + <td><%= queueMessage.getJMSMessageID()%> + </td> + <td><%= queueMessage.getJMSCorrelationID()%> + </td> + <td><%= queueMessage.getJMSType()%> + </td> + <td><%= queueMessage.getJMSRedelivered()%> + </td> + <td><%= queueMessage.getJMSDeliveryMode()%> + </td> + <td><%= queueMessage.getJMSPriority()%> + </td> + <td><%= queueMessage.getJMSTimestamp()%> + </td> + <td><%= queueMessage.getJMSExpiration()%> + </td> + <td><%= msgProperties%> + </td> + <td><%= messageContent[0]%><a href="message_content.jsp?message=<%=messageContent[1]%>"> more...</a> + </td> + </tr> + + <% } + } + + } catch (JMSException e) { + CarbonUIMessage.sendCarbonUIMessage(e.getMessage(), CarbonUIMessage.ERROR, request, e); + e.printStackTrace(); + } + %> + </tbody> + </table> + + <% + try { + queueBrowserClient.closeBrowser(); + } catch (JMSException e) { + CarbonUIMessage.sendCarbonUIMessage(e.getMessage(), CarbonUIMessage.ERROR, request, e); + e.printStackTrace(); + } + %> + </div> + </div> + <div> + <form id="deleteForm" name="input" action="dlc_messages_list.jsp" method="get"><input type="HIDDEN" + name="deleteMsg" + value=""/> + <input type="HIDDEN" + name="nameOfQueue" + value=""/> + <input type="HIDDEN" + name="msgList" + value=""/></form> + <form id="restoreForm" name="input" action="dlc_messages_list.jsp" method="get"><input type="HIDDEN" + name="restoreMsgs" + value=""/> + <input type="HIDDEN" + name="nameOfQueue" + value=""/> + <input type="HIDDEN" + name="msgList" + value=""/></form> + </div> +</fmt:bundle> Index: src/main/resources/web/queues/queue_details.jsp =================================================================== --- src/main/resources/web/queues/queue_details.jsp (revision 197189) +++ src/main/resources/web/queues/queue_details.jsp (working copy) @@ -188,6 +188,7 @@ if (filteredQueueList != null) { for (Queue queue : filteredQueueList) { String nameOfQueue = queue.getQueueName(); + if(nameOfQueue != null && !nameOfQueue.equals("DeadLetterChannel")){ %> <tr> <td> @@ -205,6 +206,7 @@ </td> </tr> <% + } } } %> Index: src/main/resources/web/queues/dlc_message_delete_ajaxprocessor.jsp =================================================================== --- src/main/resources/web/queues/dlc_message_delete_ajaxprocessor.jsp (revision 0) +++ src/main/resources/web/queues/dlc_message_delete_ajaxprocessor.jsp (working copy) @@ -0,0 +1,18 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %> +<%@page import="org.wso2.carbon.ui.CarbonUIMessage"%> +<%@ page import="org.wso2.carbon.andes.stub.AndesAdminServiceStub" %> +<%@ page import="org.wso2.carbon.andes.ui.UIUtils" %> + +<% + AndesAdminServiceStub stub = UIUtils.getAndesAdminServiceStub(config, session, request); + String idList = request.getParameter("msgList"); + String[] idArray = idList.split(","); + System.out.println(idList); + try{ + stub.deleteMessagesFromDeadLetterQueue(idArray); + + } catch (Exception e) { + CarbonUIMessage uiMsg = new CarbonUIMessage(CarbonUIMessage.ERROR, e.getMessage(), e); + session.setAttribute(CarbonUIMessage.ID, uiMsg); + } +%> \ No newline at end of file Index: src/main/resources/web/queues/resources-i18n-ajaxprocessor.jsp =================================================================== --- src/main/resources/web/queues/resources-i18n-ajaxprocessor.jsp (revision 0) +++ src/main/resources/web/queues/resources-i18n-ajaxprocessor.jsp (working copy) @@ -0,0 +1,23 @@ +<!-- + ~ Copyright (c) 2005-2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + ~ + ~ WSO2 Inc. licenses this file to you under the Apache License, + ~ Version 2.0 (the "License"); you may not use this file except + ~ in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. + --> +<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> +<%@ taglib prefix="carbon" uri="http://wso2.org/projects/carbon/taglibs/carbontags.jar" %> + +<carbon:jsi18n + resourceBundle="org.wso2.carbon.andes.ui.i18n.JSResources" + request="<%=request%>" namespace="org.wso2.carbon.andes.ui" /> \ No newline at end of file Index: src/main/resources/web/queues/dlc_queue_details.jsp =================================================================== --- src/main/resources/web/queues/dlc_queue_details.jsp (revision 0) +++ src/main/resources/web/queues/dlc_queue_details.jsp (working copy) @@ -0,0 +1,123 @@ +<%@ page import="org.apache.axis2.AxisFault" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="carbon" uri="http://wso2.org/projects/carbon/taglibs/carbontags.jar" %> +<%@ page import="org.wso2.carbon.andes.stub.AndesAdminServiceStub" %> +<%@ page import="org.wso2.carbon.andes.stub.admin.types.Queue" %> +<%@ page import="org.wso2.carbon.andes.ui.UIUtils" %> +<%@ page import="org.wso2.carbon.ui.CarbonUIMessage" %> +<%@ page import="javax.jms.JMSException" %> +<%@ page import="javax.naming.NamingException" %> +<script type="text/javascript" src="js/treecontrol.js"></script> +<fmt:bundle basename="org.wso2.carbon.andes.ui.i18n.Resources"> + <carbon:jsi18n + resourceBundle="org.wso2.carbon.andes.ui.i18n.Resources" + request="<%=request%>"/> + + <script type="text/javascript" src="../admin/js/breadcrumbs.js"></script> + <script type="text/javascript" src="../admin/js/cookies.js"></script> + <script type="text/javascript" src="../admin/js/main.js"></script> + <link rel="stylesheet" href="../qpid/css/dsxmleditor.css"/> + + <% + AndesAdminServiceStub stub = UIUtils.getAndesAdminServiceStub(config, session, request); + Queue[] filteredQueueList = null; + Queue[] queueList; + int queueCountPerPage = 20; + int pageNumber = 0; + int numberOfPages = 1; + String concatenatedParams = "region=region1&item=queue_browse"; + try { + + //TODO- using this for testing purposes. Need to change to getDLCQueue. + //dlcQueue=stub.getAllDLCQueues(); + queueList = stub.getAllQueues(); + long totalQueueCount; + String pageNumberAsStr = request.getParameter("pageNumber"); + if (pageNumberAsStr != null) { + pageNumber = Integer.parseInt(pageNumberAsStr); + } + + if (queueList != null) { + totalQueueCount = queueList.length; + numberOfPages = (int) Math.ceil(((float) totalQueueCount) / queueCountPerPage); + filteredQueueList = UIUtils.getFilteredQueueList(queueList, pageNumber * queueCountPerPage, queueCountPerPage); + } + } catch (Exception e) { + CarbonUIMessage.sendCarbonUIMessage(e.getMessage(), CarbonUIMessage.ERROR, request, e); + e.printStackTrace(); + %> + + <script type="text/javascript"> + location.href = "../admin/error.jsp"; + alert("error"); + </script> + <% + return; + } + %> + + <carbon:breadcrumb + label="queues.list" + resourceBundle="org.wso2.carbon.andes.ui.i18n.Resources" + topPage="false" + request="<%=request%>"/> + + <div id="middle"> + <h2><fmt:message key="DLC"/></h2> + + <div id="workArea"> + + <% + if (queueList == null) { + %> + No queues are created. + <% + } else { + + %> + <input type="hidden" name="pageNumber" value="<%=pageNumber%>"/> + <carbon:paginator pageNumber="<%=pageNumber%>" numberOfPages="<%=numberOfPages%>" + page="queue_details.jsp" pageNumberParameterName="pageNumber" + resourceBundle="org.wso2.carbon.andes.ui.i18n.Resources" + prevKey="prev" nextKey="next" + parameters="<%=concatenatedParams%>"/> + <table class="styledLeft" style="width:100%"> + <thead> + <tr> + <th><fmt:message key="queue.name"/></th> + <th><fmt:message key="queue.messageCount"/></th> + <th><fmt:message key="queue.view"/></th> + </tr> + </thead> + <tbody> + <% + if (filteredQueueList != null) { + for (Queue queue : filteredQueueList) { + String nameOfQueue = queue.getQueueName(); + if(nameOfQueue != null && nameOfQueue.equals("DeadLetterChannel")){ + %> + <tr> + <td> + <%=queue.getQueueName()%> + </td> + <td><%=queue.getMessageCount()%> + </td> + <td> + <a href="javascript:void(null);" onclick="document.getElementById('dummyForm').submit();">Browse</a> + <form id="dummyForm" action="dlc_messages_list.jsp" method="post"> + <input type="hidden" name="nameOfQueue" value="<%=nameOfQueue%>" /> + </form> + </tr> + <% + } + } + } + %> + </tbody> + </table> + <% + } + %> + </div> + </div> +</fmt:bundle> Index: src/main/resources/web/queues/dlc_message_restore_ajaxprocessor.jsp =================================================================== --- src/main/resources/web/queues/dlc_message_restore_ajaxprocessor.jsp (revision 0) +++ src/main/resources/web/queues/dlc_message_restore_ajaxprocessor.jsp (working copy) @@ -0,0 +1,18 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %> +<%@page import="org.wso2.carbon.ui.CarbonUIMessage"%> +<%@ page import="org.wso2.carbon.andes.stub.AndesAdminServiceStub" %> +<%@ page import="org.wso2.carbon.andes.ui.UIUtils" %> + +<% + AndesAdminServiceStub stub = UIUtils.getAndesAdminServiceStub(config, session, request); + String idList = request.getParameter("msgList"); + String[] idArray = idList.split(","); + System.out.println(idList); + try{ + stub.restoreMessagesFromDeadLetterQueue(idArray); + + } catch (Exception e) { + CarbonUIMessage uiMsg = new CarbonUIMessage(CarbonUIMessage.ERROR, e.getMessage(), e); + session.setAttribute(CarbonUIMessage.ID, uiMsg); + } +%> \ No newline at end of file
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev