This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit 8220785e46ea80ad0897f8d742ef8034c5c2186e Author: jcouteau <couteau@codelutin.com> Date: Wed Sep 26 15:17:54 2018 +0200 Fix Sonar - Performance issues --- .../entities/AbstractFaxToMailTopiaDao.java | 20 ++- .../persistence/entities/EmailTopiaDao.java | 187 +-------------------- .../swing/actions/PrintOnDefaultPrinterAction.java | 6 +- .../actions/ComputeQuantitiesByRangeAction.java | 12 +- .../OpenMailFolderChooserFromListAction.java | 8 +- .../transmit/MailFolderChooserUIHandler.java | 22 +-- .../content/transmit/actions/TransmitAction.java | 6 +- .../faxtomail/web/FaxToMailInterceptor.java | 7 +- 8 files changed, 50 insertions(+), 218 deletions(-) diff --git a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AbstractFaxToMailTopiaDao.java b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AbstractFaxToMailTopiaDao.java index 653c1ba7..4b4910db 100644 --- a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AbstractFaxToMailTopiaDao.java +++ b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AbstractFaxToMailTopiaDao.java @@ -60,11 +60,14 @@ public abstract class AbstractFaxToMailTopiaDao<E extends TopiaEntity> extends A public <K> List<K> find(String hql, Map<String, Object> hqlParameters, PaginationParameter pager) { if (log.isDebugEnabled()) { - String params = ""; - for (String key : hqlParameters.keySet()) { - params += key + " : " + hqlParameters.get(key) + "\n"; + StringBuilder params = new StringBuilder(); + for (Map.Entry<String,Object> entry : hqlParameters.entrySet()) { + params.append(entry.getKey()); + params.append(" : "); + params.append(entry.getValue()); + params.append("\n"); } - log.debug("find:\n\t" + hql + "\n\t" + params + "\t" + GSON_INSTANCE.toJson(pager)); + log.debug("find:\n\t" + hql + "\n\t" + params.toString() + "\t" + GSON_INSTANCE.toJson(pager)); } return super.find(hql, hqlParameters, pager); } @@ -72,9 +75,12 @@ public abstract class AbstractFaxToMailTopiaDao<E extends TopiaEntity> extends A /** only to log the query, in order to find why there is a java heap space exception */ protected <O> List<O> findAll(String hql, Map<String, Object> hqlParameters) { if (log.isDebugEnabled()) { - String params = ""; - for (String key : hqlParameters.keySet()) { - params += key + " : " + hqlParameters.get(key) + "\n"; + StringBuilder params = new StringBuilder(); + for (Map.Entry<String,Object> entry : hqlParameters.entrySet()) { + params.append(entry.getKey()); + params.append(" : "); + params.append(entry.getValue()); + params.append("\n"); } log.debug("findAll:\n\t" + hql + "\t" + params); diff --git a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java index a9a5eb18..00dfbadb 100644 --- a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java +++ b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java @@ -44,6 +44,7 @@ import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.pagination.PaginationParameter; import org.nuiton.util.pagination.PaginationResult; +import java.util.Arrays; import java.util.Calendar; import java.util.Collection; import java.util.Comparator; @@ -1068,141 +1069,6 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { } public QuantitiesByRange computeQuantitiesByRange(List<MailFolder> folders, boolean computeQuantitiesSubtotalsByState) { - - /*String allRangesQuery = "SELECT DISTINCT range" + - " FROM " + Email.class.getName() + " AS email " + - " INNER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" + - " INNER JOIN rangeRow." + RangeRow.PROPERTY_RANGE + " AS range" + - " WHERE email." + Email.PROPERTY_MAIL_FOLDER + " IN :folders"; - - Map<String, Object> args = new HashMap<>(); - args.put("folders", folders); - List<Range> allRanges = findAll(allRangesQuery, args); - Map<String, Range> rangesById = Maps.uniqueIndex(allRanges, TopiaEntities.getTopiaIdFunction()); - - // this has been modified from - // SELECT range - // to - // SELECT range.topiaId - // do to bug https://hibernate.atlassian.net/browse/HHH-1615 that can be reproduced - // on sql server - - String quantitiesByRangeQuery = "SELECT range." + Range.PROPERTY_TOPIA_ID + "," + - " SUM(rangeRow." + RangeRow.PROPERTY_PRODUCT_QUANTITY + ") AS prodQ," + - " SUM(rangeRow." + RangeRow.PROPERTY_SAV_QUANTITY + ") AS savQ," + - " SUM(rangeRow." + RangeRow.PROPERTY_QUOTATION_QUANTITY + ") AS quotQ" + - " FROM " + Email.class.getName() + " AS email " + - " INNER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" + - " INNER JOIN rangeRow." + RangeRow.PROPERTY_RANGE + " AS range" + - " WHERE email." + Email.PROPERTY_MAIL_FOLDER + " IN :folders" + - " GROUP BY range"; - - args = new HashMap<>(); - args.put("folders", folders); - - Map<Range, Quantities> quantitiesByRange = new TreeMap<>(new Comparator<Range>() { - @Override - public int compare(Range o1, Range o2) { - return o1.getLabel().compareTo(o2.getLabel()); - } - }); - Long productTotalQuantity = 0L; - Long savTotalQuantity = 0L; - Long quotationTotalQuantity = 0L; - - List<Object[]> queryResuts = findAll(quantitiesByRangeQuery, args); - for (Object[] queryResut : queryResuts) { - Range range = rangesById.get(String.valueOf(queryResut[0])); - - Long productQuantity = (Long) queryResut[1]; - if (productQuantity != null) { - productTotalQuantity += productQuantity; - } - - Long savQuantity = (Long) queryResut[2]; - if (savQuantity != null) { - savTotalQuantity += savQuantity; - } - - Long quotationQuantity = (Long) queryResut[3]; - if (quotationQuantity != null) { - quotationTotalQuantity += quotationQuantity; - } - - Quantities quantities = new Quantities(productQuantity, savQuantity, quotationQuantity); - quantitiesByRange.put(range, quantities); - } - - Quantities totalQuantities = new Quantities(productTotalQuantity, savTotalQuantity, quotationTotalQuantity); - - Quantities inProgressDemandsQuantities = null; - Quantities otherDemandsQuantities = null; - - if (computeQuantitiesSubtotalsByState) { - - //inProgressQuantities correspond aux "Pris par et sans état d'attente" - String inProgressQuantitiesQuery = "SELECT SUM(rangeRow." + RangeRow.PROPERTY_PRODUCT_QUANTITY + ") AS prodQ," + - " SUM(rangeRow." + RangeRow.PROPERTY_SAV_QUANTITY + ") AS savQ," + - " SUM(rangeRow." + RangeRow.PROPERTY_QUOTATION_QUANTITY + ") AS quotQ" + - " FROM " + Email.class.getName() + " AS email " + - " INNER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" + - " WHERE email." + Email.PROPERTY_MAIL_FOLDER + " IN :folders" + - " AND email." + Email.PROPERTY_TAKEN_BY + " IS NOT NULL" + - " AND email." + Email.PROPERTY_WAITING_STATE + " IS NULL"; - - args = new HashMap<>(); - args.put("folders", folders); - - Object[] queryResut = findUnique(inProgressQuantitiesQuery, args); - Long productInProgressQuantity = (Long) queryResut[0]; - if (productInProgressQuantity == null) { - productInProgressQuantity = 0L; - } - Long savInProgressQuantity = (Long) queryResut[1]; - if (savInProgressQuantity == null) { - savInProgressQuantity = 0L; - } - Long quotationInProgressQuantity = (Long) queryResut[2]; - if (quotationInProgressQuantity == null) { - quotationInProgressQuantity = 0L; - } - - inProgressDemandsQuantities = new Quantities(productInProgressQuantity, - savInProgressQuantity, - quotationInProgressQuantity); - - //otherDemandsQuantities correspond aux lignes "avec état d'attente" - String otherDemandsQuantitiesQuery = "SELECT SUM(rangeRow." + RangeRow.PROPERTY_PRODUCT_QUANTITY + ") AS prodQ," + - " SUM(rangeRow." + RangeRow.PROPERTY_SAV_QUANTITY + ") AS savQ," + - " SUM(rangeRow." + RangeRow.PROPERTY_QUOTATION_QUANTITY + ") AS quotQ" + - " FROM " + Email.class.getName() + " AS email " + - " INNER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" + - " WHERE email." + Email.PROPERTY_MAIL_FOLDER + " IN :folders" + - // " AND email." + Email.PROPERTY_TAKEN_BY + " IS NOT NULL" + - " AND email." + Email.PROPERTY_WAITING_STATE + " IS NOT NULL"; - - args = new HashMap<>(); - args.put("folders", folders); - - Object[] otherDemandsQueryResut = findUnique(otherDemandsQuantitiesQuery, args); - Long productOtherDemandsQuantity = (Long) otherDemandsQueryResut[0]; - if (productOtherDemandsQuantity == null) { - productOtherDemandsQuantity = 0L; - } - Long savOtherDemandsQuantity = (Long) otherDemandsQueryResut[1]; - if (savOtherDemandsQuantity == null) { - savOtherDemandsQuantity = 0L; - } - Long quotationOtherDemandsQuantity = (Long) otherDemandsQueryResut[2]; - if (quotationOtherDemandsQuantity == null) { - quotationOtherDemandsQuantity = 0L; - } - - otherDemandsQuantities = new Quantities(productOtherDemandsQuantity, - savOtherDemandsQuantity, - quotationOtherDemandsQuantity); - } */ - //compute inProgressQuantitiesByRange //compute inProgressQuantitiesSubtotal //correspond aux lignes sans état d'attente @@ -1367,7 +1233,6 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { @Deprecated protected String addAllFecthes(String... fetchProperties) { StringBuilder hqlFromClauseBuilder = new StringBuilder(); - //if (includeFetch) { int fetchedPropertiesAliasIndex = 0; Map<String, String> aliases = Maps.newHashMap(); for (String propertyName : fetchProperties) { @@ -1406,7 +1271,6 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { } } } - //} return hqlFromClauseBuilder.toString(); } @@ -1442,28 +1306,28 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { } else { propertyList = StringUtils.join(properties, ", "); } - String query = "SELECT DISTINCT " + propertyList + - " FROM " + Email.class.getName() + " AS email"; + StringBuilder query = new StringBuilder("SELECT DISTINCT " + propertyList + + " FROM " + Email.class.getName() + " AS email"); for (String property : properties) { if (property.startsWith("client.")) { - query += " LEFT OUTER JOIN email." + Email.PROPERTY_CLIENT + " AS client"; + query.append(" LEFT OUTER JOIN email." + Email.PROPERTY_CLIENT + " AS client"); break; } } for (String property : properties) { if (property.startsWith("rangeRow.")) { - query += " LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow"; + query.append(" LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow"); break; } } - query += folderAndStatusCondition; + query.append(folderAndStatusCondition); if (sum) { - query += " GROUP BY email." + Email.PROPERTY_TOPIA_ID; + query.append(" GROUP BY email." + Email.PROPERTY_TOPIA_ID); } - List<Object> queryResults = findAll(query, args); + List<Object> queryResults = findAll(query.toString(), args); Set<Object> result = new HashSet<>(); if (properties.length == 1) { result.addAll(queryResults); @@ -1471,42 +1335,9 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { } else { for (Object o1 : queryResults) { Object[] objects = (Object[]) o1; - for (Object o2 : objects) { - result.add(o2); - } + result.addAll(Arrays.asList(objects)); } } - - // check if the property is sometimes null - /*if (property.startsWith("rangeRow.")) { - query = "FROM " + Email.class.getName() + " AS email" + - " LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" + - folderAndStatusCondition + " AND rangeRow IS NULL"; - - queryResults = findAll(query, args); - if (!queryResults.isEmpty()) { - result.add(null); - } - } - - if (!result.contains(null)) { - query = "FROM " + Email.class.getName() + " AS email"; - if (property.startsWith("client.")) { - query += " LEFT OUTER JOIN email." + Email.PROPERTY_CLIENT + " AS client"; - - } else if (property.startsWith("rangeRow.")) { - query += " LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow"; - } - query += folderAndStatusCondition + " AND " + property + " IS NULL"; - - if (StringUtils.isNotBlank(condition)) { - query += " AND " + condition; - } - queryResults = findAll(query, args); - if (!queryResults.isEmpty()) { - result.add(null); - } - }*/ // TODO echatellier 20140918 : on ajoute null dans tous les cas car les requetes precendente // sont trop lente juste pour savoir si on a vraiment besoin de savoir si l'on doit vraiment diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/PrintOnDefaultPrinterAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/PrintOnDefaultPrinterAction.java index 1926d430..54e3ce86 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/PrintOnDefaultPrinterAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/PrintOnDefaultPrinterAction.java @@ -170,14 +170,14 @@ public class PrintOnDefaultPrinterAction extends AbstractFaxToMailAction { super.postSuccessAction(); if (!notPrintableDemands.isEmpty()) { - String notPrintableDemandTitles = ""; + StringBuilder notPrintableDemandTitles = new StringBuilder(); for (DemandeUIModel demandeUIModel : notPrintableDemands) { - notPrintableDemandTitles += "- " + demandeUIModel.getTitle() + "<br/>"; + notPrintableDemandTitles.append("- ").append(demandeUIModel.getTitle()).append("<br/>"); } displayWarningMessage(t("faxtomail.action.print.notPrintableDemands.title"), t("faxtomail.action.print.notPrintableDemands.message", - notPrintableDemandTitles)); + notPrintableDemandTitles.toString())); } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ComputeQuantitiesByRangeAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ComputeQuantitiesByRangeAction.java index f86c5664..dc6110f4 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ComputeQuantitiesByRangeAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ComputeQuantitiesByRangeAction.java @@ -65,11 +65,11 @@ public class ComputeQuantitiesByRangeAction extends AbstractFaxToMailAction<Quan //inProgress demands Model building List<RangeRowModel> inProgressRangeRows = new ArrayList<>(); Map<Range, Quantities> inProgressQuantitiesByRangeMap = quantitiesByRange.getInProgressQuantitiesByRange(); - for (Range range : inProgressQuantitiesByRangeMap.keySet()) { + for (Map.Entry<Range, Quantities> entry : inProgressQuantitiesByRangeMap.entrySet()) { RangeRowModel row = new RangeRowModel(); - row.setRange(range); + row.setRange(entry.getKey()); - Quantities quantities = inProgressQuantitiesByRangeMap.get(range); + Quantities quantities = entry.getValue(); Long productQuantity = quantities.getProductQuantity(); if (productQuantity == null) { @@ -102,11 +102,11 @@ public class ComputeQuantitiesByRangeAction extends AbstractFaxToMailAction<Quan //waiting demands Model building List<RangeRowModel> waitingRangeRows = new ArrayList<>(); Map<Range, Quantities> waitingQuantitiesByRangeMap = quantitiesByRange.getWaitingQuantitiesByRange(); - for (Range range : waitingQuantitiesByRangeMap.keySet()) { + for (Map.Entry<Range, Quantities> entry : waitingQuantitiesByRangeMap.entrySet()) { RangeRowModel row = new RangeRowModel(); - row.setRange(range); + row.setRange(entry.getKey()); - Quantities quantities = waitingQuantitiesByRangeMap.get(range); + Quantities quantities = entry.getValue(); Long productQuantity = quantities.getProductQuantity(); if (productQuantity == null) { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenMailFolderChooserFromListAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenMailFolderChooserFromListAction.java index 14a88cd2..ecc92777 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenMailFolderChooserFromListAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/OpenMailFolderChooserFromListAction.java @@ -64,12 +64,12 @@ public class OpenMailFolderChooserFromListAction extends AbstractFaxToMailAction List<DemandeUIModel> selectedEmails = getModel().getSelectedEmails(); demandsToTransmit = new ArrayList<DemandeUIModel>(); - String notTransmitableDemandsTitle = ""; + StringBuilder notTransmitableDemandsTitle = new StringBuilder(); for (DemandeUIModel demandeUIModel : selectedEmails) { if (!demandeUIModel.isEditable() || !handler.isActionEnabled(demandeUIModel, MailAction.TRANSMIT)) { - notTransmitableDemandsTitle += "- " + demandeUIModel.getTitle() + "<br/>"; + notTransmitableDemandsTitle.append("- ").append(demandeUIModel.getTitle()).append("<br/>"); } else { demandsToTransmit.add(demandeUIModel); } @@ -81,9 +81,9 @@ public class OpenMailFolderChooserFromListAction extends AbstractFaxToMailAction t("faxtomail.alert.noDemandToTransmit.message", notTransmitableDemandsTitle)); result = false; - } else if (!notTransmitableDemandsTitle.isEmpty()) { + } else if (!notTransmitableDemandsTitle.toString().isEmpty()) { displayWarningMessage(t("faxtomail.alert.demandsNotTransmittable.title"), - t("faxtomail.alert.demandsNotTransmittable.message", notTransmitableDemandsTitle)); + t("faxtomail.alert.demandsNotTransmittable.message", notTransmitableDemandsTitle.toString())); } return result; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIHandler.java index b6534562..c0637bf1 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/MailFolderChooserUIHandler.java @@ -82,19 +82,15 @@ public class MailFolderChooserUIHandler extends AbstractFaxToMailUIHandler<MailF Map<MailFolder, FolderTreeNode> nodesByFolder = FaxToMailUIUtil.initFolderTree(getContext(), navigationTree, folders, false); - for (MailFolder folder : nodesByFolder.keySet()) { - DefaultMutableTreeNode node = nodesByFolder.get(folder); - - if (node.getClass().isAssignableFrom(FolderTreeNode.class)) { - FolderTreeNode folderTreeNode = (FolderTreeNode) node; - - // le dossier n'est pas grisé si: - // - le n'est pas le dossier courrant - // - l'utilsateur à les droits sur le dossier - // - le dossier cible à les mêmes etatAttente/typeDemande que toutes les demandes à bouger - folderTreeNode.setCanSelect(!currentMailFolder.equals(folder) && folder.isFolderMoveable() && - (foldersWithWaitingState == null || foldersWithWaitingState.contains(folder))); - } + for (Map.Entry<MailFolder, FolderTreeNode> entry : nodesByFolder.entrySet()) { + FolderTreeNode node = nodesByFolder.get(entry.getKey()); + + // le dossier n'est pas grisé si: + // - le n'est pas le dossier courrant + // - l'utilsateur à les droits sur le dossier + // - le dossier cible à les mêmes etatAttente/typeDemande que toutes les demandes à bouger + node.setCanSelect(!currentMailFolder.equals(entry.getKey()) && entry.getKey().isFolderMoveable() && + (foldersWithWaitingState == null || foldersWithWaitingState.contains(entry.getKey()))); } navigationTree.addTreeSelectionListener(new TreeSelectionListener() { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/actions/TransmitAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/actions/TransmitAction.java index 6f15e9e0..600cc54f 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/actions/TransmitAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/transmit/actions/TransmitAction.java @@ -85,15 +85,15 @@ public class TransmitAction extends AbstractFaxToMailAction<MailFolderChooserUIM }); if (!sameFolderGroupedDemands.isEmpty()) { - String groupedDemandTitles = ""; + StringBuilder groupedDemandTitles = new StringBuilder(); for (DemandeUIModel groupedDemand : sameFolderGroupedDemands) { - groupedDemandTitles += "- " + groupedDemand.getTitle() + "<br/>"; + groupedDemandTitles.append("- ").append(groupedDemand.getTitle()).append("<br/>"); } int i = JOptionPane.showConfirmDialog(null, t("faxtomail.alert.transmit.groupedDemandsInSameFolder.message", demandeUIModel.getTitle(), - groupedDemandTitles), + groupedDemandTitles.toString()), t("faxtomail.alert.transmit.groupedDemandsInSameFolder.title"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); diff --git a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java index cf10f9eb..5a3027f5 100644 --- a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java +++ b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java @@ -166,11 +166,10 @@ public class FaxToMailInterceptor implements Interceptor { protected void saveLastAction(ActionInvocation invocation) { Map<String, Object> session = invocation.getInvocationContext().getSession(); ActionProxy proxy = invocation.getProxy(); - String lastLocation = proxy.getNamespace() + "/" + proxy.getActionName() + "!" + proxy.getMethod() + "?"; + StringBuilder lastLocation = new StringBuilder(proxy.getNamespace() + "/" + proxy.getActionName() + "!" + proxy.getMethod() + "?"); Map<String, Object> parameters = invocation.getInvocationContext().getParameters(); - for (String key : parameters.keySet()) { - Object[] value = (Object[]) parameters.get(key); - lastLocation += key + "=" + value[0] + "&"; + for (Map.Entry<String, Object> entry : parameters.entrySet()) { + lastLocation.append(entry.getKey()).append("=").append(entry.getValue()).append("&"); } session.put(SESSION_LAST_LOCATION, lastLocation); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.