From 94bb35445a8e388addbc224fa7e67ed04a73a5ba Mon Sep 17 00:00:00 2001 From: Misagh Moayyed Date: Mon, 9 Apr 2018 13:38:17 +0430 Subject: [PATCH] optimize map iterations using entry-sets. --- .../web/component/DropDownMultiChoice.java | 8 +++--- .../web/security/MidPointApplication.java | 16 +++++------ .../prism/marshaller/ItemPathHolder.java | 7 ++--- .../midpoint/prism/xml/XsdTypeMapper.java | 14 +++++----- .../util/aspect/ProfilingDataManager.java | 8 +++--- .../stringpolicy/ValuePolicyProcessor.java | 27 ++++++++++--------- .../impl/api/transports/MailTransport.java | 2 +- .../schema/xjc/schema/SchemaProcessor.java | 16 +++++------ 8 files changed, 51 insertions(+), 47 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/DropDownMultiChoice.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/DropDownMultiChoice.java index 74c6ca85398..215e9d3906f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/DropDownMultiChoice.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/DropDownMultiChoice.java @@ -71,11 +71,11 @@ private void appendOptions(StringBuilder sb) { } sb.append('{'); - Iterator keys = map.keySet().iterator(); + Iterator> keys = map.entrySet().iterator(); while (keys.hasNext()) { - String key = keys.next(); - sb.append(key).append(":"); - sb.append('\'').append(map.get(key)).append('\''); + final Map.Entry key = keys.next(); + sb.append(key.getKey()).append(":"); + sb.append('\'').append(key.getValue()).append('\''); if (keys.hasNext()) { sb.append(",\n"); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java index 327a837345b..92dc6437125 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java @@ -357,18 +357,18 @@ private static List loadLocaleDescriptors(Resource resource) t map.put(key, properties.getProperty(key)); } - for (String key : localeMap.keySet()) { - Map localeDefinition = localeMap.get(key); - if (!localeDefinition.containsKey(key + PROP_NAME) - || !localeDefinition.containsKey(key + PROP_FLAG)) { + for (Map.Entry> entry : localeMap.entrySet()) { + Map localeDefinition = entry.getValue(); + if (!localeDefinition.containsKey(entry + PROP_NAME) + || !localeDefinition.containsKey(entry + PROP_FLAG)) { continue; } LocaleDescriptor descriptor = new LocaleDescriptor( - localeDefinition.get(key + PROP_NAME), - localeDefinition.get(key + PROP_FLAG), - localeDefinition.get(key + PROP_DEFAULT), - WebComponentUtil.getLocaleFromString(key) + localeDefinition.get(entry + PROP_NAME), + localeDefinition.get(entry + PROP_FLAG), + localeDefinition.get(entry + PROP_DEFAULT), + WebComponentUtil.getLocaleFromString(entry.getKey()) ); locales.add(descriptor); } diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/marshaller/ItemPathHolder.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/marshaller/ItemPathHolder.java index f786dfe18f4..8fdd483080f 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/marshaller/ItemPathHolder.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/marshaller/ItemPathHolder.java @@ -543,17 +543,18 @@ public ItemPathHolder transposedPath(List parentPath) { private void addExplicitNsDeclarations(StringBuilder sb) { if (explicitNamespaceDeclarations != null) { - for (String prefix : explicitNamespaceDeclarations.keySet()) { + for (Map.Entry prefix : explicitNamespaceDeclarations.entrySet()) { sb.append("declare "); + final String declaration = explicitNamespaceDeclarations.get(prefix); if (prefix.equals("")) { sb.append("default namespace '"); - sb.append(explicitNamespaceDeclarations.get(prefix)); + sb.append(declaration); sb.append("'; "); } else { sb.append("namespace "); sb.append(prefix); sb.append("='"); - sb.append(explicitNamespaceDeclarations.get(prefix)); + sb.append(declaration); sb.append("'; "); } } diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/xml/XsdTypeMapper.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/xml/XsdTypeMapper.java index 43862c35b6a..206650d1377 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/xml/XsdTypeMapper.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/xml/XsdTypeMapper.java @@ -152,13 +152,13 @@ public static QName determineQNameWithNs(QName xsdType){ public static Class getXsdToJavaMapping(QName xsdType) { Class clazz = xsdToJavaTypeMap.get(xsdType); if (clazz == null){ - Set keys = xsdToJavaTypeMap.keySet(); - for (Iterator iterator = keys.iterator(); iterator.hasNext();){ - QName key = iterator.next(); - if (QNameUtil.match(key, xsdType)){ - return xsdToJavaTypeMap.get(key); - } - } + Set> entries = xsdToJavaTypeMap.entrySet(); + for (Map.Entry entry : entries) { + QName key = entry.getKey(); + if (QNameUtil.match(key, xsdType)){ + return entry.getValue(); + } + } } return xsdToJavaTypeMap.get(xsdType); } diff --git a/infra/util/src/main/java/com/evolveum/midpoint/util/aspect/ProfilingDataManager.java b/infra/util/src/main/java/com/evolveum/midpoint/util/aspect/ProfilingDataManager.java index 34ceb5c9929..c5c35b1a70a 100644 --- a/infra/util/src/main/java/com/evolveum/midpoint/util/aspect/ProfilingDataManager.java +++ b/infra/util/src/main/java/com/evolveum/midpoint/util/aspect/ProfilingDataManager.java @@ -268,10 +268,10 @@ private synchronized void updateOverallStatistics(Map logMap, Subsystem subsystem, boolean afterTest){ - - for(String key: logMap.keySet()){ - if(logMap.get(key) != null && subsystem.equals(logMap.get(key).getSubsystem())){ - logMap.get(key).appendToLogger(afterTest); + for (Map.Entry usage : logMap.entrySet()){ + final MethodUsageStatistics value = usage.getValue(); + if(subsystem.equals(value.getSubsystem())){ + value.appendToLogger(afterTest); } } } diff --git a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/stringpolicy/ValuePolicyProcessor.java b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/stringpolicy/ValuePolicyProcessor.java index e38ec233534..7e3b9cb00bc 100644 --- a/model/model-common/src/main/java/com/evolveum/midpoint/model/common/stringpolicy/ValuePolicyProcessor.java +++ b/model/model-common/src/main/java/com/evolveum/midpoint/model/common/stringpolicy/ValuePolicyProcessor.java @@ -554,9 +554,10 @@ private String generateAttempt(ValuePolicyType policy, int defaultLength, boolea * first in password */ Map> mustBeFirst = new HashMap<>(); - for (StringLimitType l : lims.keySet()) { - if (l.isMustBeFirst() != null && l.isMustBeFirst()) { - mustBeFirst.put(l, lims.get(l)); + for (Map.Entry> entry : lims.entrySet()) { + final StringLimitType key = entry.getKey(); + if (key.isMustBeFirst() != null && key.isMustBeFirst()) { + mustBeFirst.put(key, entry.getValue()); } } @@ -771,26 +772,28 @@ private Map> cardinalityCounter(Map password, Boolean skipMatchedLims, boolean uniquenessReached, OperationResult op) { HashMap counter = new HashMap<>(); - for (StringLimitType l : lims.keySet()) { + Map> mustBeFirst = new HashMap<>(); + for (Map.Entry> entry : lims.entrySet()) { + final StringLimitType key = entry.getKey(); int counterKey = 1; - List chars = lims.get(l); + List chars = entry.getValue(); int i = 0; if (null != password) { - i = charIntersectionCounter(lims.get(l), password); + i = charIntersectionCounter(entry.getValue(), password); } // If max is exceed then error unable to continue - if (l.getMaxOccurs() != null && i > l.getMaxOccurs()) { - OperationResult o = new OperationResult("Limitation check :" + l.getDescription()); + if (key.getMaxOccurs() != null && i > key.getMaxOccurs()) { + OperationResult o = new OperationResult("Limitation check :" + key.getDescription()); o.recordFatalError( - "Exceeded maximal value for this limitation. " + i + ">" + l.getMaxOccurs()); + "Exceeded maximal value for this limitation. " + i + ">" + key.getMaxOccurs()); op.addSubresult(o); return null; // if max is all ready reached or skip enabled for minimal skip // counting - } else if (l.getMaxOccurs() != null && i == l.getMaxOccurs()) { + } else if (key.getMaxOccurs() != null && i == key.getMaxOccurs()) { continue; // other cases minimum is not reached - } else if ((l.getMinOccurs() == null || i >= l.getMinOccurs()) && !skipMatchedLims) { + } else if ((key.getMinOccurs() == null || i >= key.getMinOccurs()) && !skipMatchedLims) { continue; } for (String s : chars) { @@ -803,9 +806,9 @@ private Map> cardinalityCounter(Map field : fields.entrySet()) { + JFieldVar fieldVar = field.getValue(); + // marks a:rawType fields with @Raw - this has to be executed for any bean, not only for prism containers if (hasAnnotation(classOutline, fieldVar, A_RAW_TYPE) != null) { annotateFieldAsRaw(fieldVar); } @@ -1134,7 +1134,7 @@ private void updateFields(Outline outline) { } allFieldsToBeRemoved.forEach((jDefinedClass, jFieldVars) -> { - jFieldVars.forEach(field -> jDefinedClass.removeField(field)); + jFieldVars.forEach(jDefinedClass::removeField); }); } @@ -1148,8 +1148,8 @@ private void processContainerFields(ClassOutline classOutline, Map fieldsToBeRemoved = new ArrayList<>(); - for (String field : fields.keySet()) { - JFieldVar fieldVar = fields.get(field); + for (Map.Entry field : fields.entrySet()) { + JFieldVar fieldVar = field.getValue(); if (isAuxiliaryField(fieldVar)) { continue; } @@ -1183,8 +1183,8 @@ private void processContainerFields(ClassOutline classOutline, Map fields = sourceClass.implClass.fields(); - for (String field : fields.keySet()) { - JFieldVar fieldVar = fields.get(field); + for (Map.Entry field : fields.entrySet()) { + JFieldVar fieldVar = field.getValue(); if (!isAuxiliaryField(fieldVar) && !hasAnnotationClass(fieldVar, XmlAnyElement.class)) { createFluentFieldMethods(fieldVar, targetClass, sourceClass); }