diff --git a/config/checkstyle-checks.xml b/config/checkstyle-checks.xml
index d4b0830cb..d1f28eef8 100644
--- a/config/checkstyle-checks.xml
+++ b/config/checkstyle-checks.xml
@@ -657,6 +657,9 @@
SuppressWarnings, FunctionalInterface, NoSuchMethodException,
InvocationTargetException, IllegalAccessException"/>
+
+
+
diff --git a/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/builder/CheckstyleBuilder.java b/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/builder/CheckstyleBuilder.java
index 59e0d730a..6f5c070f9 100644
--- a/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/builder/CheckstyleBuilder.java
+++ b/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/builder/CheckstyleBuilder.java
@@ -228,59 +228,9 @@ public final void handleBuildSelection(final Collection
boolean backgroundFullBuild = CheckstylePluginPrefs
.getBoolean(CheckstylePluginPrefs.PREF_BACKGROUND_FULL_BUILD);
- List enabledFileSets = configuration.getFileSets().stream()
- .filter(FileSet::isEnabled)
- .toList();
-
- List files = resources.stream()
- .filter(resource -> resource instanceof IFile)
- .map(resource -> (IFile) resource)
- .toList();
-
- //
- // Build a set of auditors from the file sets of this project
- // configuration.
- // File sets that share the same check configuration merge into
- // one Auditor.
- //
- Map audits = new HashMap<>();
+ Map audits = resolveAudits(resources, configuration, project);
try {
- for (FileSet fileSet : enabledFileSets) {
- ICheckConfiguration checkConfig = fileSet.getCheckConfig();
- if (checkConfig == null) {
- throw new CheckstylePluginException(
- NLS.bind(Messages.errorNoCheckConfig, project.getName()));
- }
-
- Auditor audit = audits.computeIfAbsent(checkConfig, Auditor::new);
-
- // check which files belong to the file set
- List filesInFileset = files.stream()
- .filter(fileSet::includesFile)
- .toList();
-
- for (IFile file : filesInFileset) {
- boolean hasCompileErrors = IMarker.SEVERITY_ERROR == file.findMaxProblemSeverity(
- IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_ZERO);
-
- // remove markers on this file
- file.deleteMarkers(CheckstyleMarker.MARKER_ID, false, IResource.DEPTH_ZERO);
-
- // avoid checkstyle parser errors being shown
- if (hasCompileErrors) {
- continue;
- }
-
- audit.addFile(file);
-
- // remove markers from package to prevent
- // packagehtml messages from accumulatin
- file.getParent().deleteMarkers(CheckstyleMarker.MARKER_ID, false,
- IResource.DEPTH_ZERO);
- }
- }
-
// run all auditors
for (Auditor audit : audits.values()) {
if (monitor.isCanceled()) {
@@ -288,7 +238,6 @@ public final void handleBuildSelection(final Collection
}
if (backgroundFullBuild && kind == FULL_BUILD) {
-
AuditorJob job = new AuditorJob(project, audit);
job.schedule();
} else {
@@ -302,6 +251,60 @@ public final void handleBuildSelection(final Collection
}
}
+ /**
+ * Build a set of auditors from the file sets of this project
+ * configuration.
+ * File sets that share the same check configuration merge into
+ * one Auditor.
+ */
+ private Map resolveAudits(
+ Collection resources, IProjectConfiguration configuration,
+ IProject project) throws CoreException {
+ List enabledFileSets = configuration.getFileSets().stream()
+ .filter(FileSet::isEnabled)
+ .toList();
+
+ List files = resources.stream()
+ .filter(resource -> resource instanceof IFile)
+ .map(resource -> (IFile) resource)
+ .toList();
+ Map audits = new HashMap<>();
+ for (FileSet fileSet : enabledFileSets) {
+ ICheckConfiguration checkConfig = fileSet.getCheckConfig();
+ if (checkConfig == null) {
+ throw new CoreException(new Status(IStatus.ERROR, CheckstylePlugin.PLUGIN_ID,
+ NLS.bind(Messages.errorNoCheckConfig, project.getName())));
+ }
+
+ Auditor audit = audits.computeIfAbsent(checkConfig, Auditor::new);
+
+ // check which files belong to the file set
+ List filesInFileset = files.stream()
+ .filter(fileSet::includesFile)
+ .toList();
+
+ for (IFile file : filesInFileset) {
+ boolean hasCompileErrors = IMarker.SEVERITY_ERROR == file.findMaxProblemSeverity(
+ IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_ZERO);
+
+ // remove markers on this file
+ file.deleteMarkers(CheckstyleMarker.MARKER_ID, false, IResource.DEPTH_ZERO);
+
+ // avoid checkstyle parser errors being shown
+ if (hasCompileErrors) {
+ continue;
+ }
+
+ audit.addFile(file);
+
+ // remove markers from package to prevent
+ // packagehtml messages from accumulatin
+ file.getParent().deleteMarkers(CheckstyleMarker.MARKER_ID, false, IResource.DEPTH_ZERO);
+ }
+ }
+ return audits;
+ }
+
/**
* Get the files for the build by analyzing the resource delta.
*
diff --git a/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/config/configtypes/RemoteConfigurationType.java b/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/config/configtypes/RemoteConfigurationType.java
index d4e0d1c97..be40dbedb 100644
--- a/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/config/configtypes/RemoteConfigurationType.java
+++ b/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/config/configtypes/RemoteConfigurationType.java
@@ -37,7 +37,6 @@
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
-
import org.eclipse.core.runtime.IPath;
import org.eclipse.equinox.security.storage.EncodingUtils;
import org.eclipse.equinox.security.storage.ISecurePreferences;
@@ -100,7 +99,6 @@ public CheckstyleConfigurationFile getCheckstyleConfiguration(
byte[] configurationFileData = null;
try {
-
System.setProperty(KEY_MAX_REDIRECTS, "3");
final URLConnection connection = data.getResolvedConfigFileURL().openConnection();
@@ -128,15 +126,8 @@ public CheckstyleConfigurationFile getCheckstyleConfiguration(
data.setCheckConfigFileBytes(configurationFileData);
- // get the properties bundle
- Optional additionalPropertiesBytes = Optional.empty();
- if (originalFileSuccess) {
- additionalPropertiesBytes = getAdditionPropertiesBundleBytes(
- data.getResolvedConfigFileURL());
- } else if (useCacheFile) {
- additionalPropertiesBytes = getBytesFromCacheBundleFile(checkConfiguration);
- }
-
+ Optional additionalPropertiesBytes = getPropertiesBundle(originalFileSuccess,
+ useCacheFile, data, checkConfiguration);
additionalPropertiesBytes.ifPresent(data::setAdditionalPropertyBundleBytes);
// get the property resolver
@@ -172,6 +163,17 @@ public CheckstyleConfigurationFile getCheckstyleConfiguration(
return data;
}
+ private Optional getPropertiesBundle(boolean originalFileSuccess, boolean useCacheFile,
+ CheckstyleConfigurationFile data, ICheckConfiguration checkConfiguration) {
+ if (originalFileSuccess) {
+ return getAdditionPropertiesBundleBytes(data.getResolvedConfigFileURL());
+ }
+ if (useCacheFile) {
+ return getBytesFromCacheBundleFile(checkConfiguration);
+ }
+ return Optional.empty();
+ }
+
@Override
protected URL resolveLocation(ICheckConfiguration checkConfiguration) throws IOException {
return new URL(checkConfiguration.getLocation());
diff --git a/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/config/meta/MetadataXmlReader.java b/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/config/meta/MetadataXmlReader.java
index dac283f45..474a1bebc 100644
--- a/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/config/meta/MetadataXmlReader.java
+++ b/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/config/meta/MetadataXmlReader.java
@@ -220,10 +220,9 @@ private static List processProperties(Element moduleElem
}
// get explicit enumeration option values
- for (Element optionEl : enumEl
- .elements(XMLTags.PROPERTY_VALUE_OPTIONS_TAG)) {
- property.getPropertyEnumeration().add(optionEl.attributeValue(XMLTags.VALUE_TAG));
- }
+ enumEl.elements(XMLTags.PROPERTY_VALUE_OPTIONS_TAG).stream()
+ .map(optionEl -> optionEl.attributeValue(XMLTags.VALUE_TAG))
+ .forEach(property.getPropertyEnumeration()::add);
}
}
return properties;
diff --git a/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/transformer/ctransformerclasses/LeftCurlyTransformer.java b/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/transformer/ctransformerclasses/LeftCurlyTransformer.java
index ffc91d57f..840cead09 100644
--- a/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/transformer/ctransformerclasses/LeftCurlyTransformer.java
+++ b/net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/transformer/ctransformerclasses/LeftCurlyTransformer.java
@@ -20,6 +20,8 @@
package net.sf.eclipsecs.core.transformer.ctransformerclasses;
+import java.util.Collections;
+import java.util.List;
import java.util.StringTokenizer;
import net.sf.eclipsecs.core.transformer.AbstractCTransformationClass;
@@ -40,36 +42,31 @@ public FormatterConfiguration transformRule() {
}
final StringTokenizer token = new StringTokenizer(tokens, ", ");
- String option = getAttribute("option");
- if (option == null || "eol".equals(option)) {
- option = "end_of_line";
- } else if ("nl".equals(option) || "nlow".equals(option)) {
- option = "next_line";
- }
+ String option = switch (getAttribute("option")) {
+ case null -> "end_of_line";
+ case "eol" -> "end_of_line";
+ case "nl", "nlow" -> "next_line";
+ case String s -> s;
+ };
while (token.hasMoreTokens()) {
- String tok = token.nextToken();
- if ("CLASS_DEF".equals(tok)) {
- userFormatterSetting("brace_position_for_anonymous_type_declaration", option);
- userFormatterSetting("brace_position_for_enum_constant", option);
- userFormatterSetting("brace_position_for_enum_declaration", option);
- userFormatterSetting("brace_position_for_type_declaration", option);
- userFormatterSetting("brace_position_for_annotation_type_declaration", option);
- } else if ("INTERFACE_DEF".equals(tok)) {
- userFormatterSetting("brace_position_for_annotation_type_declaration", option);
- userFormatterSetting("brace_position_for_type_declaration", option);
- } else if ("CTOR_DEF".equals(tok)) {
- userFormatterSetting("brace_position_for_constructor_declaration", option);
- } else if ("METHOD_DEF".equals(tok)) {
- userFormatterSetting("brace_position_for_method_declaration", option);
- } else if ("LITERAL_DO".equals(tok) || "LITERAL_ELSE".equals(tok) || "LITERAL_FOR".equals(tok)
- || "LITERAL_IF".equals(tok) || "LITERAL_WHILE".equals(tok)
- || "LITERAL_CATCH".equals(tok) || "LITERAL_FINALLY".equals(tok)
- || "LITERAL_TRY".equals(tok)) {
- userFormatterSetting("brace_position_for_block", option);
- } else if ("LITERAL_SWITCH".equals(tok)) {
- userFormatterSetting("brace_position_for_switch", option);
- }
+ List settings = switch (token.nextToken()) {
+ case "CLASS_DEF" -> List.of("brace_position_for_anonymous_type_declaration",
+ "brace_position_for_enum_constant",
+ "brace_position_for_enum_declaration",
+ "brace_position_for_type_declaration",
+ "brace_position_for_annotation_type_declaration");
+ case "INTERFACE_DEF" -> List.of(
+ "brace_position_for_annotation_type_declaration",
+ "brace_position_for_type_declaration");
+ case "CTOR_DEF" -> List.of("brace_position_for_constructor_declaration");
+ case "METHOD_DEF" -> List.of("brace_position_for_method_declaration");
+ case "LITERAL_DO", "LITERAL_ELSE", "LITERAL_FOR", "LITERAL_IF", "LITERAL_WHILE", "LITERAL_CATCH",
+ "LITERAL_FINALLY", "LITERAL_TRY" -> List.of("brace_position_for_block");
+ case "LITERAL_SWITCH" -> List.of("brace_position_for_switch");
+ default -> Collections.emptyList();
+ };
+ settings.forEach(setting -> userFormatterSetting(setting, option));
}
return getFormatterSetting();
}
diff --git a/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/preferences/CheckstylePreferencePage.java b/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/preferences/CheckstylePreferencePage.java
index 45439fe04..8cdc87f68 100644
--- a/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/preferences/CheckstylePreferencePage.java
+++ b/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/preferences/CheckstylePreferencePage.java
@@ -381,9 +381,7 @@ public void init(IWorkbench workbench) {
@Override
public boolean performOk() {
-
try {
-
//
// Save the check configurations.
//
@@ -408,35 +406,27 @@ public boolean performOk() {
//
// Include rule names preference.
//
- boolean includeRuleNamesNow = mIncludeRuleNamesButton.getSelection();
- boolean includeRuleNamesOriginal = CheckstylePluginPrefs
- .getBoolean(CheckstylePluginPrefs.PREF_INCLUDE_RULE_NAMES);
- CheckstylePluginPrefs.setBoolean(CheckstylePluginPrefs.PREF_INCLUDE_RULE_NAMES,
- includeRuleNamesNow);
+ boolean includeRuleNamesHasChanged = updateBooleanPreference(mIncludeRuleNamesButton,
+ CheckstylePluginPrefs.PREF_INCLUDE_RULE_NAMES);
//
// Include module id preference.
//
- boolean includeModuleIdNow = mIncludeModuleIdButton.getSelection();
- boolean includeModuleIdOriginal = CheckstylePluginPrefs
- .getBoolean(CheckstylePluginPrefs.PREF_INCLUDE_MODULE_IDS);
- CheckstylePluginPrefs.setBoolean(CheckstylePluginPrefs.PREF_INCLUDE_MODULE_IDS,
- includeModuleIdNow);
+ boolean includeModuleIdHasChanged = updateBooleanPreference(mIncludeModuleIdButton,
+ CheckstylePluginPrefs.PREF_INCLUDE_MODULE_IDS);
//
// Limit markers preference
//
- boolean limitMarkersNow = mLimitCheckstyleMarkers.getSelection();
- boolean limitMarkersOriginal = CheckstylePluginPrefs
- .getBoolean(CheckstylePluginPrefs.PREF_LIMIT_MARKERS_PER_RESOURCE);
- CheckstylePluginPrefs.setBoolean(CheckstylePluginPrefs.PREF_LIMIT_MARKERS_PER_RESOURCE,
- limitMarkersNow);
+ boolean limitMarkersHasChanged = updateBooleanPreference(mLimitCheckstyleMarkers,
+ CheckstylePluginPrefs.PREF_LIMIT_MARKERS_PER_RESOURCE);
int markerLimitNow = Integer.parseInt(mTxtMarkerLimit.getText());
int markerLimitOriginal = CheckstylePluginPrefs
.getInt(CheckstylePluginPrefs.PREF_MARKER_AMOUNT_LIMIT);
CheckstylePluginPrefs.setInt(CheckstylePluginPrefs.PREF_MARKER_AMOUNT_LIMIT, markerLimitNow);
+ boolean markerLimitHasChanged = markerLimitNow != markerLimitOriginal;
//
// Include background build preference.
@@ -446,47 +436,45 @@ public boolean performOk() {
runInBackgroundNow);
// See if all projects need rebuild
- boolean needRebuildAllProjects = (includeRuleNamesNow != includeRuleNamesOriginal)
- || (includeModuleIdNow != includeModuleIdOriginal)
- || (limitMarkersNow != limitMarkersOriginal)
- || (markerLimitNow != markerLimitOriginal) || mRebuildAll;
+ boolean needRebuildAllProjects = needRebuildAllProjects(includeRuleNamesHasChanged,
+ includeModuleIdHasChanged, limitMarkersHasChanged, markerLimitHasChanged);
// Get projects that need rebuild considering the changes
Collection projectsToBuild = mWorkingSet.getAffectedProjects();
- String promptRebuildPref = CheckstyleUIPluginPrefs
- .getString(CheckstyleUIPluginPrefs.PREF_ASK_BEFORE_REBUILD);
+ if (needRebuildAllProjects || !projectsToBuild.isEmpty()) {
+ String promptRebuildPref = CheckstyleUIPluginPrefs
+ .getString(CheckstyleUIPluginPrefs.PREF_ASK_BEFORE_REBUILD);
- boolean rebuild = MessageDialogWithToggle.ALWAYS.equals(promptRebuildPref)
- && (needRebuildAllProjects || !projectsToBuild.isEmpty());
+ boolean rebuild = MessageDialogWithToggle.ALWAYS.equals(promptRebuildPref);
- //
- // Prompt for rebuild
- //
- if (MessageDialogWithToggle.PROMPT.equals(promptRebuildPref)
- && (needRebuildAllProjects || !projectsToBuild.isEmpty())) {
+ //
+ // Prompt for rebuild
+ //
+ if (MessageDialogWithToggle.PROMPT.equals(promptRebuildPref)) {
- MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoQuestion(getShell(),
- Messages.CheckstylePreferencePage_titleRebuild,
- Messages.CheckstylePreferencePage_msgRebuild,
- Messages.CheckstylePreferencePage_nagRebuild, false,
- CheckstyleUIPlugin.getDefault().getPreferenceStore(),
- CheckstyleUIPluginPrefs.PREF_ASK_BEFORE_REBUILD);
+ MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoQuestion(getShell(),
+ Messages.CheckstylePreferencePage_titleRebuild,
+ Messages.CheckstylePreferencePage_msgRebuild,
+ Messages.CheckstylePreferencePage_nagRebuild, false,
+ CheckstyleUIPlugin.getDefault().getPreferenceStore(),
+ CheckstyleUIPluginPrefs.PREF_ASK_BEFORE_REBUILD);
- rebuild = dialog.getReturnCode() == IDialogConstants.YES_ID;
- }
+ rebuild = dialog.getReturnCode() == IDialogConstants.YES_ID;
+ }
- if (rebuild) {
- try {
- if (needRebuildAllProjects) {
- CheckstyleBuilder.buildAllProjects();
- } else {
- CheckstyleBuilder.buildProjects(projectsToBuild);
+ if (rebuild) {
+ try {
+ if (needRebuildAllProjects) {
+ CheckstyleBuilder.buildAllProjects();
+ } else {
+ CheckstyleBuilder.buildProjects(projectsToBuild);
+ }
+
+ } catch (CheckstylePluginException ex) {
+ CheckstyleUIPlugin.errorDialog(getShell(),
+ NLS.bind(Messages.errorFailedRebuild, ex.getMessage()), ex, true);
}
-
- } catch (CheckstylePluginException ex) {
- CheckstyleUIPlugin.errorDialog(getShell(),
- NLS.bind(Messages.errorFailedRebuild, ex.getMessage()), ex, true);
}
}
} catch (CheckstylePluginException | BackingStoreException ex) {
@@ -497,6 +485,21 @@ public boolean performOk() {
return true;
}
+ private static final boolean updateBooleanPreference(Button button, String preference)
+ throws BackingStoreException {
+ boolean now = button.getSelection();
+ boolean original = CheckstylePluginPrefs.getBoolean(preference);
+ CheckstylePluginPrefs.setBoolean(preference, now);
+ return now != original;
+ }
+
+ private boolean needRebuildAllProjects(boolean includeRuleNamesHasChanged,
+ boolean includeModuleIdHasChanged, boolean limitMarkersHasChanged,
+ boolean markerLimitHasChanged) {
+ return includeRuleNamesHasChanged || includeModuleIdHasChanged || limitMarkersHasChanged
+ || markerLimitHasChanged || mRebuildAll;
+ }
+
/**
* Controller for this page.
*
diff --git a/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/properties/CheckstylePropertyApplyOperation.java b/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/properties/CheckstylePropertyApplyOperation.java
index f53172f7a..32ff27ad1 100644
--- a/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/properties/CheckstylePropertyApplyOperation.java
+++ b/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/properties/CheckstylePropertyApplyOperation.java
@@ -54,55 +54,52 @@ public static boolean apply(Shell shell, ProjectConfigurationWorkingCopy project
projectConfig.store();
}
- boolean needRebuild = projectConfig.isRebuildNeeded();
-
// check if checkstyle nature has to be configured/deconfigured
if (checkstyleEnabled != checkstyleInitiallyEnabled) {
-
ConfigureDeconfigureNatureJob configOperation = new ConfigureDeconfigureNatureJob(project,
CheckstyleNature.NATURE_ID);
configOperation.setRule(ResourcesPlugin.getWorkspace().getRoot());
configOperation.schedule();
-
- needRebuild = needRebuild || !checkstyleInitiallyEnabled;
- }
-
- if (checkstyleEnabled && projectConfig.isSyncFormatter()) {
-
- TransformCheckstyleRulesJob transFormJob = new TransformCheckstyleRulesJob(project);
- transFormJob.schedule();
}
- // if a rebuild is advised, check/prompt if the rebuild should
- // really be done.
- if (checkstyleEnabled && needRebuild) {
-
- String promptRebuildPref = CheckstyleUIPluginPrefs
- .getString(CheckstyleUIPluginPrefs.PREF_ASK_BEFORE_REBUILD);
-
- boolean doRebuild = needRebuild && MessageDialogWithToggle.ALWAYS.equals(promptRebuildPref);
+ if (checkstyleEnabled) {
+ boolean needRebuild = !checkstyleInitiallyEnabled || projectConfig.isRebuildNeeded();
- //
- // Prompt for rebuild
- //
- if (needRebuild && MessageDialogWithToggle.PROMPT.equals(promptRebuildPref)) {
- MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoQuestion(shell,
- Messages.CheckstylePropertyPage_titleRebuild,
- Messages.CheckstylePropertyPage_msgRebuild,
- Messages.CheckstylePropertyPage_nagRebuild, false,
- CheckstyleUIPlugin.getDefault().getPreferenceStore(),
- CheckstyleUIPluginPrefs.PREF_ASK_BEFORE_REBUILD);
-
- doRebuild = dialog.getReturnCode() == IDialogConstants.YES_ID;
+ if (projectConfig.isSyncFormatter()) {
+ TransformCheckstyleRulesJob transFormJob = new TransformCheckstyleRulesJob(project);
+ transFormJob.schedule();
}
- // check if a rebuild is necessary
- if (checkstyleEnabled && doRebuild) {
-
- BuildProjectJob rebuildOperation = new BuildProjectJob(project,
- IncrementalProjectBuilder.FULL_BUILD);
- rebuildOperation.setRule(ResourcesPlugin.getWorkspace().getRoot());
- rebuildOperation.schedule();
+ // if a rebuild is advised, check/prompt if the rebuild should
+ // really be done.
+ if (needRebuild) {
+ String promptRebuildPref = CheckstyleUIPluginPrefs
+ .getString(CheckstyleUIPluginPrefs.PREF_ASK_BEFORE_REBUILD);
+
+ boolean doRebuild = MessageDialogWithToggle.ALWAYS.equals(promptRebuildPref);
+
+ //
+ // Prompt for rebuild
+ //
+ if (MessageDialogWithToggle.PROMPT.equals(promptRebuildPref)) {
+ MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoQuestion(shell,
+ Messages.CheckstylePropertyPage_titleRebuild,
+ Messages.CheckstylePropertyPage_msgRebuild,
+ Messages.CheckstylePropertyPage_nagRebuild, false,
+ CheckstyleUIPlugin.getDefault().getPreferenceStore(),
+ CheckstyleUIPluginPrefs.PREF_ASK_BEFORE_REBUILD);
+
+ doRebuild = dialog.getReturnCode() == IDialogConstants.YES_ID;
+ }
+
+ // check if a rebuild is necessary
+ if (doRebuild) {
+
+ BuildProjectJob rebuildOperation = new BuildProjectJob(project,
+ IncrementalProjectBuilder.FULL_BUILD);
+ rebuildOperation.setRule(ResourcesPlugin.getWorkspace().getRoot());
+ rebuildOperation.schedule();
+ }
}
}
} catch (CheckstylePluginException ex) {
diff --git a/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/properties/filter/CheckFileOnOpenPartListener.java b/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/properties/filter/CheckFileOnOpenPartListener.java
index 7c80931d6..5b1c77df2 100644
--- a/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/properties/filter/CheckFileOnOpenPartListener.java
+++ b/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/properties/filter/CheckFileOnOpenPartListener.java
@@ -153,9 +153,6 @@ private IFile getEditorFile(IWorkbenchPartReference partRef) {
* @return true if the file is affected, false otherwise
*/
private boolean isFileAffected(IFile file) {
-
- boolean affected = false;
-
IProject project = file.getProject();
try {
@@ -169,24 +166,22 @@ private boolean isFileAffected(IFile file) {
boolean filtered = false;
List filters = config.getFilters();
for (IFilter filter : filters) {
-
- if (filter instanceof UnOpenedFilesFilter && ((UnOpenedFilesFilter) filter).isEnabled()) {
- unOpenedFilesFilterActive = true;
- }
-
- // check if the file would be filtered out
- if (filter.isEnabled() && !(filter instanceof UnOpenedFilesFilter)) {
- filtered = filtered || !filter.accept(file);
+ if (filter.isEnabled()) {
+ if (filter instanceof UnOpenedFilesFilter) {
+ unOpenedFilesFilterActive = true;
+ } else {
+ filtered = filtered || !filter.accept(file);
+ }
}
}
- affected = unOpenedFilesFilterActive && !filtered;
+ return unOpenedFilesFilterActive && !filtered;
}
} catch (CoreException | CheckstylePluginException ex) {
CheckstyleLog.log(ex);
}
- return affected;
+ return false;
}
private class PartsOpenedJob extends AbstractCheckJob {
diff --git a/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/properties/filter/PackageFilterEditor.java b/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/properties/filter/PackageFilterEditor.java
index 143d43b39..e9262067f 100644
--- a/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/properties/filter/PackageFilterEditor.java
+++ b/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/properties/filter/PackageFilterEditor.java
@@ -215,38 +215,28 @@ public Object[] getChildren(Object parentElement) {
private List handleProject(IProject project) {
List children = new ArrayList<>();
-
if (project.isAccessible()) {
-
- try {
-
- IJavaProject javaProject = JavaCore.create(project);
- if (javaProject.exists()) {
-
+ IJavaProject javaProject = JavaCore.create(project);
+ if (javaProject.exists()) {
+ try {
IPackageFragmentRoot[] packageRoots = javaProject.getAllPackageFragmentRoots();
-
- for (int i = 0, size = packageRoots.length; i < size; i++) {
-
+ for (IPackageFragmentRoot packageRoot : packageRoots) {
// special case - project itself is package root
- if (project.equals(packageRoots[i].getResource())) {
-
- IResource[] members = project.members();
- for (int j = 0; j < members.length; j++) {
- if (members[j].getType() != IResource.FILE) {
- children.add(members[j]);
- }
- }
- } else if (!packageRoots[i].isArchive()
- && packageRoots[i].getParent().equals(javaProject)) {
- children.add(packageRoots[i].getResource());
+ if (project.equals(packageRoot.getResource())) {
+ Arrays.stream(project.members())
+ .filter(member -> member.getType() != IResource.FILE)
+ .forEach(children::add);
+ } else if (!packageRoot.isArchive() && packageRoot.getParent().equals(javaProject)) {
+ children.add(packageRoot.getResource());
}
}
+
+ } catch (JavaModelException ex) {
+ CheckstyleLog.log(ex);
+ } catch (CoreException ex) {
+ // this should never happen because we call
+ // #isAccessible before invoking #members
}
- } catch (JavaModelException ex) {
- CheckstyleLog.log(ex);
- } catch (CoreException ex) {
- // this should never happen because we call
- // #isAccessible before invoking #members
}
}
return children;
diff --git a/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/stats/views/internal/CheckstyleMarkerFilter.java b/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/stats/views/internal/CheckstyleMarkerFilter.java
index 87264f7b9..f477d1c85 100644
--- a/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/stats/views/internal/CheckstyleMarkerFilter.java
+++ b/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/stats/views/internal/CheckstyleMarkerFilter.java
@@ -22,13 +22,12 @@
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
-
+import java.util.stream.Stream;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -272,50 +271,29 @@ public static CheckstyleMarkerFilter resetState(IResource[] focusResources) {
* @throws CoreException
* if the resource does not exist or the project is not open
*/
- private List findCheckstyleMarkers(IResource[] resources, int depth, IProgressMonitor mon)
- throws CoreException {
+ private List findCheckstyleMarkers(IResource[] resources, int depth,
+ IProgressMonitor mon) throws CoreException {
if (resources == null) {
return Collections.emptyList();
}
-
- List resultList = new ArrayList<>(resources.length * 2);
-
- for (int i = 0, size = resources.length; i < size; i++) {
- if (resources[i].isAccessible()) {
- Collection markers = Arrays
- .asList(resources[i].findMarkers(CheckstyleMarker.MARKER_ID, true, depth));
-
- resultList.addAll(markers);
+ List markers = new ArrayList<>();
+ for (IResource resource : resources) {
+ if (resource.isAccessible()) {
+ markers.addAll(Arrays.asList(resource.findMarkers(CheckstyleMarker.MARKER_ID, true, depth)));
}
}
-
if (!enabled) {
- return resultList;
+ return markers;
}
-
+ Stream filteredMarkers = markers.stream();
if (selectBySeverity) {
- // further filter the markers by severity
- int size = resultList.size();
- for (int i = size - 1; i >= 0; i--) {
- IMarker marker = resultList.get(i);
- if (!doSelectBySeverity(marker)) {
- resultList.remove(i);
- }
- }
+ filteredMarkers = filteredMarkers.filter(this::doSelectBySeverity);
}
-
if (filterByRegex) {
- // further filter the markers by regular expressions
- int size = resultList.size();
- for (int i = size - 1; i >= 0; i--) {
- IMarker marker = resultList.get(i);
- if (!selectByRegex(marker)) {
- resultList.remove(i);
- }
- }
+ filteredMarkers = filteredMarkers.filter(this::selectByRegex);
}
- return resultList;
+ return filteredMarkers.toList();
}
/**
diff --git a/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/stats/views/internal/CheckstyleMarkerFilterDialog.java b/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/stats/views/internal/CheckstyleMarkerFilterDialog.java
index f1609e7e3..037053b5e 100644
--- a/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/stats/views/internal/CheckstyleMarkerFilterDialog.java
+++ b/net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/stats/views/internal/CheckstyleMarkerFilterDialog.java
@@ -154,7 +154,8 @@ protected Control createDialogArea(Composite parent) {
mChkFilterEnabled = new Button(dialog, SWT.CHECK);
mChkFilterEnabled.setText(Messages.CheckstyleMarkerFilterDialog_btnEnabled);
- mChkFilterEnabled.addSelectionListener(mController);
+ mChkFilterEnabled.addSelectionListener(
+ SelectionListener.widgetSelectedAdapter(event -> updateControlState()));
Group onResourceGroup = new Group(dialog, SWT.NULL);
onResourceGroup.setText(Messages.CheckstyleMarkerFilterDialog_groupResourceSetting);
@@ -215,7 +216,8 @@ protected Control createDialogArea(Composite parent) {
mChkSeverityEnabled = new Button(severityGroup, SWT.CHECK);
mChkSeverityEnabled.setText(Messages.CheckstyleMarkerFilterDialog_btnMarkerSeverity);
mChkSeverityEnabled.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- mChkSeverityEnabled.addSelectionListener(mController);
+ mChkSeverityEnabled.addSelectionListener(
+ SelectionListener.widgetSelectedAdapter(event -> updateControlState()));
mChkSeverityError = new Button(severityGroup, SWT.CHECK);
mChkSeverityError.setText(Messages.CheckstyleMarkerFilterDialog_btnSeverityError);
@@ -318,7 +320,7 @@ private void updateUIFromFilter() {
mRegularExpressions = mFilter.filterRegex();
initRegexLabel();
- mController.updateControlState();
+ updateControlState();
}
/**
@@ -388,6 +390,35 @@ private void initRegexLabel() {
mLblRegexFilter.setText(buf.toString());
}
+ /**
+ * updates the enablement state of the controls.
+ */
+ private void updateControlState() {
+
+ mFilterComposite.setEnabled(mChkFilterEnabled.getSelection());
+ mRadioOnAnyResource.setEnabled(mChkFilterEnabled.getSelection());
+ mRadioAnyResourceInSameProject.setEnabled(mChkFilterEnabled.getSelection());
+ mRadioSelectedResource.setEnabled(mChkFilterEnabled.getSelection());
+ mRadioSelectedResourceAndChildren.setEnabled(mChkFilterEnabled.getSelection());
+ mRadioSelectedWorkingSet.setEnabled(mChkFilterEnabled.getSelection());
+ mLblSelectedWorkingSet.setEnabled(mChkFilterEnabled.getSelection());
+ mBtnWorkingSet
+ .setEnabled(mChkFilterEnabled.getSelection() && mChkFilterEnabled.getSelection());
+ mChkSeverityEnabled.setEnabled(mChkFilterEnabled.getSelection());
+
+ mChkSeverityError
+ .setEnabled(mChkFilterEnabled.getSelection() && mChkSeverityEnabled.getSelection());
+ mChkSeverityWarning
+ .setEnabled(mChkFilterEnabled.getSelection() && mChkSeverityEnabled.getSelection());
+ mChkSeverityInfo
+ .setEnabled(mChkFilterEnabled.getSelection() && mChkSeverityEnabled.getSelection());
+
+ mGrpRegex.setEnabled(mChkFilterEnabled.getSelection());
+ mChkSelectByRegex.setEnabled(mChkFilterEnabled.getSelection());
+ mLblRegexFilter.setEnabled(mChkFilterEnabled.getSelection());
+ mBtnEditRegex.setEnabled(mChkFilterEnabled.getSelection());
+ }
+
/**
* The controller for this dialog.
*
@@ -396,9 +427,7 @@ private class PageController implements SelectionListener {
@Override
public void widgetSelected(SelectionEvent e) {
- if (e.widget == mChkFilterEnabled || e.widget == mChkSeverityEnabled) {
- updateControlState();
- } else if (mBtnDefault == e.widget) {
+ if (mBtnDefault == e.widget) {
mFilter = CheckstyleMarkerFilter.resetState(mFilter.focusResources());
updateUIFromFilter();
} else if (mBtnWorkingSet == e.widget) {
@@ -431,35 +460,6 @@ public void widgetSelected(SelectionEvent e) {
public void widgetDefaultSelected(SelectionEvent e) {
// NOOP
}
-
- /**
- * updates the enablement state of the controls.
- */
- private void updateControlState() {
-
- mFilterComposite.setEnabled(mChkFilterEnabled.getSelection());
- mRadioOnAnyResource.setEnabled(mChkFilterEnabled.getSelection());
- mRadioAnyResourceInSameProject.setEnabled(mChkFilterEnabled.getSelection());
- mRadioSelectedResource.setEnabled(mChkFilterEnabled.getSelection());
- mRadioSelectedResourceAndChildren.setEnabled(mChkFilterEnabled.getSelection());
- mRadioSelectedWorkingSet.setEnabled(mChkFilterEnabled.getSelection());
- mLblSelectedWorkingSet.setEnabled(mChkFilterEnabled.getSelection());
- mBtnWorkingSet
- .setEnabled(mChkFilterEnabled.getSelection() && mChkFilterEnabled.getSelection());
- mChkSeverityEnabled.setEnabled(mChkFilterEnabled.getSelection());
-
- mChkSeverityError
- .setEnabled(mChkFilterEnabled.getSelection() && mChkSeverityEnabled.getSelection());
- mChkSeverityWarning
- .setEnabled(mChkFilterEnabled.getSelection() && mChkSeverityEnabled.getSelection());
- mChkSeverityInfo
- .setEnabled(mChkFilterEnabled.getSelection() && mChkSeverityEnabled.getSelection());
-
- mGrpRegex.setEnabled(mChkFilterEnabled.getSelection());
- mChkSelectByRegex.setEnabled(mChkFilterEnabled.getSelection());
- mLblRegexFilter.setEnabled(mChkFilterEnabled.getSelection());
- mBtnEditRegex.setEnabled(mChkFilterEnabled.getSelection());
- }
}
/**