Skip to content

Commit 04bb90c

Browse files
committed
PMD improvements
1 parent 39424c3 commit 04bb90c

File tree

5 files changed

+33
-9
lines changed

5 files changed

+33
-9
lines changed

src/main/java/software/xdev/saveactions/core/component/Engine.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import static java.util.stream.Collectors.toSet;
44

55
import java.util.AbstractMap.SimpleEntry;
6+
import java.util.Collections;
67
import java.util.List;
8+
import java.util.Map;
79
import java.util.Objects;
810
import java.util.Set;
11+
import java.util.WeakHashMap;
912
import java.util.concurrent.atomic.AtomicInteger;
10-
import java.util.regex.Matcher;
1113
import java.util.regex.Pattern;
1214
import java.util.regex.PatternSyntaxException;
1315

@@ -45,6 +47,7 @@ public class Engine
4547
{
4648
private static final Logger LOGGER = Logger.getInstance(SaveActionsService.class);
4749
private static final String REGEX_STARTS_WITH_ANY_STRING = ".*?";
50+
private static final Map<String, Pattern> PATTERN_CACHE = Collections.synchronizedMap(new WeakHashMap<>());
4851

4952
private final Storage storage;
5053
private final List<Processor> processors;
@@ -327,14 +330,17 @@ private boolean isIncluded(final String path)
327330
return psiFileIncluded;
328331
}
329332

333+
@SuppressWarnings("PMD.AvoidRecompilingPatterns")
330334
private boolean atLeastOneMatch(final String psiFileUrl, final Set<String> patterns)
331335
{
332336
for(final String pattern : patterns)
333337
{
334338
try
335339
{
336-
final Matcher matcher = Pattern.compile(REGEX_STARTS_WITH_ANY_STRING + pattern).matcher(psiFileUrl);
337-
if(matcher.matches())
340+
final Pattern compiledPattern = PATTERN_CACHE.computeIfAbsent(
341+
pattern,
342+
p -> Pattern.compile(REGEX_STARTS_WITH_ANY_STRING + p));
343+
if(compiledPattern.matcher(psiFileUrl).matches())
338344
{
339345
return true;
340346
}

src/main/java/software/xdev/saveactions/model/java/EpfAction.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44

55
import java.util.Arrays;
66
import java.util.List;
7+
import java.util.Map;
78
import java.util.Optional;
9+
import java.util.function.Function;
10+
import java.util.stream.Collectors;
811
import java.util.stream.Stream;
912

1013
import software.xdev.saveactions.model.Action;
@@ -64,6 +67,9 @@ public enum EpfAction
6467
Action.explicitTypeCanBeDiamond,
6568
EpfKey.remove_redundant_type_arguments);
6669

70+
private static final Map<Action, EpfAction> ACTION_VALUES = stream()
71+
.collect(Collectors.toMap(EpfAction::getAction, Function.identity()));
72+
6773
private final Action action;
6874
private final List<EpfKey> epfKeys;
6975

@@ -85,7 +91,7 @@ public List<EpfKey> getEpfKeys()
8591

8692
public static Optional<EpfAction> getEpfActionForAction(final Action action)
8793
{
88-
return stream().filter(epfAction -> epfAction.action.equals(action)).findFirst();
94+
return Optional.ofNullable(ACTION_VALUES.get(action));
8995
}
9096

9197
public static Stream<EpfAction> stream()

src/main/java/software/xdev/saveactions/processors/GlobalProcessor.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22

33
import java.util.Arrays;
44
import java.util.EnumSet;
5+
import java.util.Map;
56
import java.util.Optional;
67
import java.util.Set;
78
import java.util.function.BiFunction;
9+
import java.util.function.Function;
10+
import java.util.stream.Collectors;
811
import java.util.stream.Stream;
912

1013
import org.jetbrains.annotations.NotNull;
@@ -38,6 +41,9 @@ public enum GlobalProcessor implements Processor
3841

3942
rearrange(Action.rearrange, GlobalProcessor::rearrangeCode);
4043

44+
private static final Map<Action, Processor> ACTION_VALUES = stream()
45+
.collect(Collectors.toMap(Processor::getAction, Function.identity()));
46+
4147
@NotNull
4248
private static Runnable rearrangeCode(final Project project, final PsiFile[] psiFiles)
4349
{
@@ -103,7 +109,7 @@ public BiFunction<Project, PsiFile[], Runnable> getCommand()
103109

104110
public static Optional<Processor> getProcessorForAction(final Action action)
105111
{
106-
return stream().filter(processor -> processor.getAction().equals(action)).findFirst();
112+
return Optional.ofNullable(ACTION_VALUES.get(action));
107113
}
108114

109115
public static Stream<Processor> stream()

src/main/java/software/xdev/saveactions/processors/java/JavaProcessor.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22

33
import java.util.Arrays;
44
import java.util.EnumSet;
5+
import java.util.Map;
56
import java.util.Optional;
67
import java.util.Set;
78
import java.util.function.BiFunction;
9+
import java.util.function.Function;
810
import java.util.function.Supplier;
11+
import java.util.stream.Collectors;
912
import java.util.stream.Stream;
1013

1114
import com.intellij.codeInspection.ExplicitTypeCanBeDiamondInspection;
@@ -129,6 +132,9 @@ public enum JavaProcessor implements Processor
129132
Action.accessCanBeTightened,
130133
() -> new CustomAccessCanBeTightenedInspection(new VisibilityInspection()));
131134

135+
private static final Map<Action, JavaProcessor> ACTION_VALUES = stream()
136+
.collect(Collectors.toMap(JavaProcessor::getAction, Function.identity()));
137+
132138
private final Action action;
133139
private final LocalInspectionTool inspection;
134140

@@ -169,12 +175,12 @@ public LocalInspectionTool getInspection()
169175
return this.inspection;
170176
}
171177

172-
public static Optional<Processor> getProcessorForAction(final Action action)
178+
public static Optional<JavaProcessor> getProcessorForAction(final Action action)
173179
{
174-
return stream().filter(processor -> processor.getAction().equals(action)).findFirst();
180+
return Optional.ofNullable(ACTION_VALUES.get(action));
175181
}
176182

177-
public static Stream<Processor> stream()
183+
public static Stream<JavaProcessor> stream()
178184
{
179185
return Arrays.stream(values());
180186
}

src/test/java/software/xdev/saveactions/processors/java/JavaProcessorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ void should_java_processor_have_valid_type_and_inspection()
2727
JavaProcessor.stream()
2828
.forEach(processor -> assertThat(processor.getAction().getType()).isEqualTo(java));
2929
JavaProcessor.stream()
30-
.forEach(processor -> assertThat(((JavaProcessor)processor).getInspection()).isNotNull());
30+
.forEach(processor -> assertThat(processor.getInspection()).isNotNull());
3131
}
3232

3333
@Test

0 commit comments

Comments
 (0)