diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/name/herlin/command/AbstractProcessableCommand.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/name/herlin/command/AbstractProcessableCommand.java index b1bf2dfd3f..e035d151fa 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/name/herlin/command/AbstractProcessableCommand.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/name/herlin/command/AbstractProcessableCommand.java @@ -163,14 +163,14 @@ public abstract class AbstractProcessableCommand implements Command { * @return the command processor for that command */ protected CommandProcessor getCommandProcessor() throws CommandException { - if (this.commandProcessor == null) { + if (commandProcessor == null) { final CommandProcessorStrategy strategy = getCommandProcessorStrategy(); - this.commandProcessor = strategy.getCommandProcessor(this); - if (this.commandProcessor == null) { + commandProcessor = strategy.getCommandProcessor(this); + if (commandProcessor == null) { throw new UnregisteredCommandException("Processor cannot be found for that command"); } } - return this.commandProcessor; + return commandProcessor; } } diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/name/herlin/command/DefaultCommandProcessorStrategy.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/name/herlin/command/DefaultCommandProcessorStrategy.java index 1e478b2194..9399ec4393 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/name/herlin/command/DefaultCommandProcessorStrategy.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/name/herlin/command/DefaultCommandProcessorStrategy.java @@ -96,12 +96,12 @@ public class DefaultCommandProcessorStrategy implements CommandProcessorStrategy */ private void loadBundle() { try { - final ResourceBundle bundle = ResourceBundle.getBundle(COMMAND_PROCESSOR_STRATEGY_BUNDLE); - final Enumeration e = bundle.getKeys(); + ResourceBundle bundle = ResourceBundle.getBundle(COMMAND_PROCESSOR_STRATEGY_BUNDLE); + Enumeration e = bundle.getKeys(); while (e.hasMoreElements()) { - final String key = e.nextElement(); - final String value = bundle.getString(key); - this.registeredCommandProcessors.put(key, value); + String key = e.nextElement(); + String value = bundle.getString(key); + registeredCommandProcessors.put(key, value); } } catch (RuntimeException e) { // @PMD:REVIEWED:EmptyCatchBlock: by Herlin on 01/05/05 18:10 diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/ext/RuleSetsExtensionProcessor.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/ext/RuleSetsExtensionProcessor.java index 7bf835bb33..53df823312 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/ext/RuleSetsExtensionProcessor.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/ext/RuleSetsExtensionProcessor.java @@ -87,8 +87,8 @@ public class RuleSetsExtensionProcessor { if (object instanceof IRuleSetsExtension) { final IRuleSetsExtension extension = (IRuleSetsExtension) object; - extension.registerRuleSets(this.ruleSetManager.getRegisteredRuleSets()); - extension.registerDefaultRuleSets(this.ruleSetManager.getDefaultRuleSets()); + extension.registerRuleSets(ruleSetManager.getRegisteredRuleSets()); + extension.registerDefaultRuleSets(ruleSetManager.getDefaultRuleSets()); } else { PMDPlugin.getDefault().log(IStatus.ERROR, "Extension " + element.getName() + " is not an instance of IRuleSetsExtension", null); diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/impl/RuleSetManagerImpl.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/impl/RuleSetManagerImpl.java index 56cf558a95..478b21f62b 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/impl/RuleSetManagerImpl.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/impl/RuleSetManagerImpl.java @@ -62,44 +62,44 @@ public class RuleSetManagerImpl implements IRuleSetManager { /** * @see net.sourceforge.pmd.eclipse.core.IRuleSetManager#registerRuleSet(net.sourceforge.pmd.RuleSet) */ - public void registerRuleSet(final RuleSet ruleSet) { + public void registerRuleSet(RuleSet ruleSet) { checkForNull(ruleSet); - this.ruleSets.add(ruleSet); + ruleSets.add(ruleSet); } /** * @see net.sourceforge.pmd.eclipse.core.IRuleSetManager#unregisterRuleSet(net.sourceforge.pmd.RuleSet) */ - public void unregisterRuleSet(final RuleSet ruleSet) { + public void unregisterRuleSet(RuleSet ruleSet) { checkForNull(ruleSet); - this.ruleSets.remove(ruleSet); + ruleSets.remove(ruleSet); } /** * @see net.sourceforge.pmd.eclipse.core.IRuleSetManager#getDefaultRuleSets() */ public Set getDefaultRuleSets() { - return this.defaultRuleSets; + return defaultRuleSets; } /** * @see net.sourceforge.pmd.eclipse.core.IRuleSetManager#registerDefaultRuleSet(net.sourceforge.pmd.RuleSet) */ - public void registerDefaultRuleSet(final RuleSet ruleSet) { + public void registerDefaultRuleSet(RuleSet ruleSet) { checkForNull(ruleSet); - this.defaultRuleSets.add(ruleSet); + defaultRuleSets.add(ruleSet); } /** * @see net.sourceforge.pmd.eclipse.core.IRuleSetManager#unregisterDefaultRuleSet(net.sourceforge.pmd.RuleSet) */ - public void unregisterDefaultRuleSet(final RuleSet ruleSet) { + public void unregisterDefaultRuleSet(RuleSet ruleSet) { checkForNull(ruleSet); - this.defaultRuleSets.remove(ruleSet); + defaultRuleSets.remove(ruleSet); } private void checkForNull(RuleSet ruleSet) { diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/impl/RuleSetsManagerImpl.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/impl/RuleSetsManagerImpl.java index 1b74d2cfe8..d44749e091 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/impl/RuleSetsManagerImpl.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/impl/RuleSetsManagerImpl.java @@ -50,6 +50,7 @@ import net.sourceforge.pmd.eclipse.core.rulesets.IRuleSetsManager; import net.sourceforge.pmd.eclipse.core.rulesets.vo.Rule; import net.sourceforge.pmd.eclipse.core.rulesets.vo.RuleSet; import net.sourceforge.pmd.eclipse.core.rulesets.vo.RuleSets; +import net.sourceforge.pmd.eclipse.util.IOUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -114,12 +115,13 @@ public class RuleSetsManagerImpl implements IRuleSetsManager { throw new PMDCoreException("A RuleSetsNotFound Exception was thrown.", e); } } - + /** * @see net.sourceforge.pmd.eclipse.core.rulesets.IRuleSetsManager#writeToXml(net.sourceforge.pmd.eclipse.core.rulesets.vo.RuleSets, java.io.OutputStream) */ public void writeToXml(RuleSets ruleSets, OutputStream output) throws PMDCoreException { LOG.debug("Storing plug-in rulesets"); + StringWriter writer = null; try { LocalConfiguration.getInstance().getProperties().setProperty("org.exolab.castor.indent", "true"); @@ -127,12 +129,11 @@ public class RuleSetsManagerImpl implements IRuleSetsManager { final URL mappingSpecUrl = this.getClass().getResource(RULESETS_MAPPING); mapping.loadMapping(mappingSpecUrl); - final StringWriter writer = new StringWriter(); + writer = new StringWriter(); final Marshaller marshaller = new Marshaller(writer); marshaller.setMapping(mapping); marshaller.marshal(ruleSets); writer.flush(); - writer.close(); output.write(writer.getBuffer().toString().getBytes()); output.flush(); @@ -149,6 +150,8 @@ public class RuleSetsManagerImpl implements IRuleSetsManager { } catch (IOException e) { LOG.error("A IO Exception was thrown."); throw new PMDCoreException("A IO Exception was thrown.", e); + } finally { + IOUtil.closeQuietly(writer); } } } diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/Properties.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/Properties.java index 5307cbb3e2..ebd2e2c7ca 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/Properties.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/Properties.java @@ -81,7 +81,7 @@ public class Properties { if (arg0 instanceof Properties) { final Properties p = (Properties) arg0; - equal = this.propertiesSet.equals(p.propertiesSet); + equal = propertiesSet.equals(p.propertiesSet); } return equal; @@ -92,7 +92,7 @@ public class Properties { */ @Override public int hashCode() { - return this.propertiesSet.hashCode(); + return propertiesSet.hashCode(); } /** @@ -100,9 +100,9 @@ public class Properties { */ @Override public String toString() { - final StringBuilder buffer = new StringBuilder("Properties"); - for (Property property : this.propertiesSet) { - final Property p = property; + StringBuilder buffer = new StringBuilder("Properties"); + for (Property property : propertiesSet) { + Property p = property; buffer.append(' ').append(p); } diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/Property.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/Property.java index 49c5d270f2..ee7e44de87 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/Property.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/Property.java @@ -54,7 +54,7 @@ public class Property { * @return Returns the name. */ public String getName() { - return this.name; + return name; } /** @@ -76,7 +76,7 @@ public class Property { * @return Returns the value. */ public String getValue() { - return this.value; + return value; } /** @@ -99,8 +99,8 @@ public class Property { boolean equal = false; if (arg0 instanceof Property) { - final Property p = (Property) arg0; - equal = this.name.equals(p.name) && this.value.equals(p.value); + Property p = (Property) arg0; + equal = name.equals(p.name) && value.equals(p.value); } return equal; @@ -110,14 +110,14 @@ public class Property { * @see java.lang.Object#hashCode() */ public int hashCode() { - return (this.name + this.value).hashCode(); + return (name + value).hashCode(); } /** * @see java.lang.Object#toString() */ public String toString() { - return "property name=" + this.name + " value=" + this.value; + return "property name=" + name + " value=" + value; } } diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/Rule.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/Rule.java index e97b6cb056..0864e33b63 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/Rule.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/Rule.java @@ -119,7 +119,7 @@ public class Rule { * @return Returns the ref. */ public String getRef() { - return this.ref; + return ref; } /** @@ -145,9 +145,9 @@ public class Rule { if (arg0 instanceof Rule) { final Rule r = (Rule) arg0; - equal = this.ref.equals(r.ref); - equal = equal && (((this.priority == null) && (r.priority == null)) || (this.priority.equals(r.priority))); - equal = equal && (((this.properties == null) && (r.properties == null)) || (this.properties.equals(r.properties))); + equal = ref.equals(r.ref); + equal = equal && (((priority == null) && (r.priority == null)) || (this.priority.equals(r.priority))); + equal = equal && (((properties == null) && (r.properties == null)) || (this.properties.equals(r.properties))); } return equal; @@ -157,12 +157,12 @@ public class Rule { * @see java.lang.Object#hashCode() */ public int hashCode() { - int hashCode = this.ref.hashCode(); - if (this.priority != null) { - hashCode += this.priority.hashCode() * 13 * 13; + int hashCode = ref.hashCode(); + if (priority != null) { + hashCode += priority.hashCode() * 13 * 13; } - if (this.properties != null) { - hashCode += this.properties.hashCode() * 21 * 21; + if (properties != null) { + hashCode += properties.hashCode() * 21 * 21; } return hashCode; @@ -172,8 +172,8 @@ public class Rule { * @see java.lang.Object#toString() */ public String toString() { - return "Rule ref=" + this.ref + " message=" + this.message + " priority=" + this.priority.toString() + " properties=" - + this.properties.toString(); + return "Rule ref=" + ref + " message=" + message + " priority=" + priority.toString() + " properties=" + + properties.toString(); } /** @@ -183,7 +183,7 @@ public class Rule { * @return Returns the PMD Rule object. */ public net.sourceforge.pmd.Rule getPmdRule() { - return this.pmdRule; + return pmdRule; } /** diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/RuleSets.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/RuleSets.java index 6cd4210dad..3864179e1b 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/RuleSets.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/core/rulesets/vo/RuleSets.java @@ -62,7 +62,7 @@ public class RuleSets { * @return Returns the defaultRuleSet. */ public RuleSet getDefaultRuleSet() { - return this.defaultRuleSet; + return defaultRuleSet; } /** @@ -75,7 +75,7 @@ public class RuleSets { if (defaultRuleSet == null) { throw new IllegalArgumentException("default rule set cannot be null"); } - if (!this.ruleSetsList.contains(defaultRuleSet)) { + if (!ruleSetsList.contains(defaultRuleSet)) { throw new IllegalArgumentException("The rule set " + defaultRuleSet.getName() + " must belong to the rule set list to be set as default."); } @@ -89,7 +89,7 @@ public class RuleSets { * @return Returns the ruleSet list. */ public List getRuleSets() { - return this.ruleSetsList; + return ruleSetsList; } /** @@ -110,7 +110,7 @@ public class RuleSets { * @return the name of the default ruleset */ public String getDefaultRuleSetName() { - return this.defaultRuleSet.getName(); + return defaultRuleSet.getName(); } /** @@ -123,8 +123,8 @@ public class RuleSets { throw new IllegalArgumentException("The default ruleset name must not be null or empty"); } - for (RuleSet ruleSet2 : this.ruleSetsList) { - final RuleSet ruleSet = ruleSet2; + for (RuleSet ruleSet2 : ruleSetsList) { + RuleSet ruleSet = ruleSet2; if (ruleSet.getName().equals(ruleSetName)) { setDefaultRuleSet(ruleSet); break; @@ -137,11 +137,11 @@ public class RuleSets { */ @Override public String toString() { - final StringBuilder buffer = new StringBuilder("RuleSets defaultRuleSet="); - buffer.append(this.defaultRuleSet.getName()); + StringBuilder buffer = new StringBuilder("RuleSets defaultRuleSet="); + buffer.append(defaultRuleSet.getName()); buffer.append(" ruleSetsList="); - for (RuleSet ruleSet : this.ruleSetsList) { + for (RuleSet ruleSet : ruleSetsList) { buffer.append(ruleSet); } diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/PMDPlugin.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/PMDPlugin.java index 940d102dfb..4cc907cd8c 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/PMDPlugin.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/PMDPlugin.java @@ -8,6 +8,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.Map; import net.sourceforge.pmd.RuleSet; import net.sourceforge.pmd.RuleSetFactory; @@ -65,7 +66,7 @@ public class PMDPlugin extends AbstractUIPlugin { private static File pluginFolder; - private HashMap coloursByRGB = new HashMap(); + private Map coloursByRGB = new HashMap(); public static final String PLUGIN_ID = "net.sourceforge.pmd.eclipse.plugin"; diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/BaseVisitor.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/BaseVisitor.java index 4c8bc9748d..e077cfd5c3 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/BaseVisitor.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/BaseVisitor.java @@ -47,6 +47,7 @@ import net.sourceforge.pmd.eclipse.plugin.PMDPlugin; import net.sourceforge.pmd.eclipse.runtime.PMDRuntimeConstants; import net.sourceforge.pmd.eclipse.runtime.properties.IProjectProperties; import net.sourceforge.pmd.eclipse.runtime.properties.PropertiesException; +import net.sourceforge.pmd.eclipse.util.IOUtil; import net.sourceforge.pmd.util.NumericConstants; import net.sourceforge.pmd.util.StringUtil; @@ -255,12 +256,12 @@ public class BaseVisitor { input.close(); timer.stop(); - this.pmdDuration += timer.getDuration(); + pmdDuration += timer.getDuration(); updateMarkers(file, context, isUseTaskMarker(), getAccumulator()); worked(1); - this.fileCount++; + fileCount++; } else { log.debug("The file " + file.getName() + " is not in the working set"); } @@ -294,9 +295,9 @@ public class BaseVisitor { */ private boolean isFileInWorkingSet(final IFile file) throws PropertiesException { boolean fileInWorkingSet = true; - final IWorkingSet workingSet = this.projectProperties.getProjectWorkingSet(); + IWorkingSet workingSet = projectProperties.getProjectWorkingSet(); if (workingSet != null) { - final ResourceWorkingSetFilter filter = new ResourceWorkingSetFilter(); + ResourceWorkingSetFilter filter = new ResourceWorkingSetFilter(); filter.setWorkingSet(workingSet); fileInWorkingSet = filter.select(null, null, file); } @@ -401,12 +402,13 @@ public class BaseVisitor { */ private List findReviewedViolations(final IFile file) { final List reviews = new ArrayList(); + BufferedReader reader = null; try { int lineNumber = 0; boolean findLine = false; boolean comment = false; final Stack pendingReviews = new Stack(); - final BufferedReader reader = new BufferedReader(new InputStreamReader(file.getContents())); + reader = new BufferedReader(new InputStreamReader(file.getContents())); while (reader.ready()) { String line = reader.readLine(); if (line != null) { @@ -447,6 +449,8 @@ public class BaseVisitor { PMDPlugin.getDefault().logError("Core Exception when searching reviewed violations", e); } catch (IOException e) { PMDPlugin.getDefault().logError("IO Exception when searching reviewed violations", e); + } finally { + IOUtil.closeQuietly(reader); } return reviews; diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/DetectCutAndPasteCmd.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/DetectCutAndPasteCmd.java index 3678f66ee8..1bca13201d 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/DetectCutAndPasteCmd.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/DetectCutAndPasteCmd.java @@ -53,6 +53,7 @@ import net.sourceforge.pmd.eclipse.plugin.PMDPlugin; import net.sourceforge.pmd.eclipse.runtime.PMDRuntimeConstants; import net.sourceforge.pmd.eclipse.runtime.properties.IProjectProperties; import net.sourceforge.pmd.eclipse.runtime.properties.PropertiesException; +import net.sourceforge.pmd.eclipse.util.IOUtil; import org.apache.log4j.Logger; import org.eclipse.core.resources.IFile; @@ -100,7 +101,7 @@ public class DetectCutAndPasteCmd extends AbstractProjectCommand { public void execute() throws CommandException { try { // find the files - final List files = findFiles(); + List files = findFiles(); if (files.size() == 0) { logInfo("No files found for specified language."); @@ -116,7 +117,7 @@ public class DetectCutAndPasteCmd extends AbstractProjectCommand { if (!isCanceled()) { // if the command was not canceled - if (this.createReport) { + if (createReport) { // create the report optionally this.renderReport(cpd.getMatches()); } @@ -138,7 +139,7 @@ public class DetectCutAndPasteCmd extends AbstractProjectCommand { log.debug("Properties Exception: " + e.getMessage(), e); throw new CommandException(e); } finally { - this.setTerminated(true); + setTerminated(true); } } @@ -263,7 +264,7 @@ public class DetectCutAndPasteCmd extends AbstractProjectCommand { return cpd; } - + /** * Renders a report using the matches of the CPD. Creates a report folder * and report file. @@ -271,6 +272,8 @@ public class DetectCutAndPasteCmd extends AbstractProjectCommand { * @throws CommandException */ private void renderReport(Iterator matches) throws CommandException { + InputStream contentsStream = null; + try { log.debug("Rendering CPD report"); subTask("Rendering CPD report"); @@ -286,7 +289,7 @@ public class DetectCutAndPasteCmd extends AbstractProjectCommand { // Create the report file log.debug("Create the report file"); final IFile reportFile = folder.getFile(reportName); - final InputStream contentsStream = new ByteArrayInputStream(reportString.getBytes()); + contentsStream = new ByteArrayInputStream(reportString.getBytes()); if (reportFile.exists()) { log.debug(" Overwritting the report file"); reportFile.setContents(contentsStream, true, false, getMonitor()); @@ -302,6 +305,8 @@ public class DetectCutAndPasteCmd extends AbstractProjectCommand { } catch (IOException e) { log.debug("IO Exception: " + e.getMessage(), e); throw new CommandException(e); + } finally { + IOUtil.closeQuietly(contentsStream); } } } \ No newline at end of file diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/FakeRuleViolation.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/FakeRuleViolation.java index 7c1ae99d57..66b206ac09 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/FakeRuleViolation.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/FakeRuleViolation.java @@ -75,70 +75,70 @@ public class FakeRuleViolation implements RuleViolation { * @see net.sourceforge.pmd.IRuleViolation#getFilename() */ public String getFilename() { - return this.filename; + return filename; } /** * @see net.sourceforge.pmd.IRuleViolation#getBeginLine() */ public int getBeginLine() { - return this.beginLine; + return beginLine; } /** * @see net.sourceforge.pmd.IRuleViolation#getBeginColumn() */ public int getBeginColumn() { - return this.beginColumn; + return beginColumn; } /** * @see net.sourceforge.pmd.IRuleViolation#getEndLine() */ public int getEndLine() { - return this.endLine; + return endLine; } /** * @see net.sourceforge.pmd.IRuleViolation#getEndColumn() */ public int getEndColumn() { - return this.endColumn; + return endColumn; } /** * @see net.sourceforge.pmd.IRuleViolation#getRule() */ public Rule getRule() { - return this.rule; + return rule; } /** * @see net.sourceforge.pmd.IRuleViolation#getDescription() */ public String getDescription() { - return this.description; + return description; } /** * @see net.sourceforge.pmd.IRuleViolation#getPackageName() */ public String getPackageName() { - return this.packageName; + return packageName; } /** * @see net.sourceforge.pmd.IRuleViolation#getMethodName() */ public String getMethodName() { - return this.methodName; + return methodName; } /** * @see net.sourceforge.pmd.IRuleViolation#getClassName() */ public String getClassName() { - return this.className; + return className; } /** @@ -152,7 +152,7 @@ public class FakeRuleViolation implements RuleViolation { * @see net.sourceforge.pmd.IRuleViolation#getVariableName() */ public String getVariableName() { - return this.variableName; + return variableName; } /** diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/RenderReportCmd.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/RenderReportCmd.java index f936972ea9..9594ea65e9 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/RenderReportCmd.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/RenderReportCmd.java @@ -49,6 +49,7 @@ import net.sourceforge.pmd.RuleSet; import net.sourceforge.pmd.eclipse.plugin.PMDPlugin; import net.sourceforge.pmd.eclipse.runtime.PMDRuntimeConstants; import net.sourceforge.pmd.eclipse.runtime.builder.MarkerUtil; +import net.sourceforge.pmd.eclipse.util.IOUtil; import net.sourceforge.pmd.renderers.Renderer; import org.apache.log4j.Logger; @@ -106,6 +107,7 @@ public class RenderReportCmd extends AbstractProjectCommand { */ @Override public void execute() throws CommandException { + StringWriter writer = null; try { log.debug("Starting RenderReport command"); log.debug(" Create a report object"); @@ -122,23 +124,23 @@ public class RenderReportCmd extends AbstractProjectCommand { final Renderer renderer = entry.getValue(); log.debug(" Render the report"); - final StringWriter w = new StringWriter(); - renderer.setWriter(w); + writer = new StringWriter(); + renderer.setWriter(writer); renderer.start(); renderer.renderFileReport(report); renderer.end(); - final String reportString = w.toString(); + String reportString = writer.toString(); log.debug(" Creating the report file"); final IFile reportFile = folder.getFile(reportName); final InputStream contentsStream = new ByteArrayInputStream(reportString.getBytes()); if (reportFile.exists()) { - reportFile.setContents(contentsStream, true, false, this.getMonitor()); + reportFile.setContents(contentsStream, true, false, getMonitor()); } else { - reportFile.create(contentsStream, true, this.getMonitor()); + reportFile.create(contentsStream, true, getMonitor()); } - reportFile.refreshLocal(IResource.DEPTH_INFINITE, this.getMonitor()); + reportFile.refreshLocal(IResource.DEPTH_INFINITE, getMonitor()); contentsStream.close(); } } catch (CoreException e) { @@ -148,8 +150,9 @@ public class RenderReportCmd extends AbstractProjectCommand { log.debug("Core Exception: " + e.getMessage(), e); throw new CommandException(e); } finally { + IOUtil.closeQuietly(writer); log.debug("End of RenderReport command"); - this.setTerminated(true); + setTerminated(true); } } @@ -158,9 +161,9 @@ public class RenderReportCmd extends AbstractProjectCommand { */ @Override public void reset() { - this.setProject(null); - this.renderers = new HashMap(); - this.setTerminated(false); + setProject(null); + renderers = new HashMap(); + setTerminated(false); } /** diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/ReviewResourceForRuleCommand.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/ReviewResourceForRuleCommand.java index 46a220b624..0de9a42739 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/ReviewResourceForRuleCommand.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/ReviewResourceForRuleCommand.java @@ -118,24 +118,24 @@ public class ReviewResourceForRuleCommand extends AbstractDefaultCommand { */ @Override public void execute() throws CommandException { - final IProject project = resource.getProject(); - final IFile file = (IFile) resource.getAdapter(IFile.class); + IProject project = resource.getProject(); + IFile file = (IFile) resource.getAdapter(IFile.class); beginTask("PMD checking for rule: " + rule.getName(), 1); if (file != null) { - final RuleSet ruleSet = new RuleSet(); + RuleSet ruleSet = new RuleSet(); ruleSet.addRule(rule); final PMDEngine pmdEngine = getPmdEngineForProject(project); - final File sourceCodeFile = file.getFullPath().toFile(); + File sourceCodeFile = file.getFullPath().toFile(); if (pmdEngine.applies(sourceCodeFile, ruleSet)) { try { - this.context = new RuleContext(); - this.context.setSourceCodeFile(sourceCodeFile); - this.context.setSourceCodeFilename(file.getName()); - this.context.setReport(new Report()); + context = new RuleContext(); + context.setSourceCodeFile(sourceCodeFile); + context.setSourceCodeFilename(file.getName()); + context.setReport(new Report()); - final Reader input = new InputStreamReader(file.getContents(), file.getCharset()); - pmdEngine.processFile(input, ruleSet, this.context); + Reader input = new InputStreamReader(file.getContents(), file.getCharset()); + pmdEngine.processFile(input, ruleSet, context); input.close(); } catch (CoreException e) { throw new CommandException(e); diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/preferences/impl/PreferencesManagerImpl.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/preferences/impl/PreferencesManagerImpl.java index 2a477f1356..a7af6d048c 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/preferences/impl/PreferencesManagerImpl.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/preferences/impl/PreferencesManagerImpl.java @@ -62,6 +62,7 @@ import net.sourceforge.pmd.eclipse.runtime.properties.PropertiesException; import net.sourceforge.pmd.eclipse.runtime.writer.IRuleSetWriter; import net.sourceforge.pmd.eclipse.runtime.writer.WriterException; import net.sourceforge.pmd.eclipse.ui.priority.PriorityDescriptor; +import net.sourceforge.pmd.eclipse.util.IOUtil; import net.sourceforge.pmd.util.StringUtil; import org.apache.log4j.Level; @@ -528,17 +529,20 @@ class PreferencesManagerImpl implements IPreferencesManager { * Store the rule set in preference store */ private void storeRuleSetInStateLocation(RuleSet ruleSet) { + OutputStream out = null; try { IPath ruleSetLocation = PMDPlugin.getDefault().getStateLocation().append(PREFERENCE_RULESET_FILE); - OutputStream out = new FileOutputStream(ruleSetLocation.toOSString()); + out = new FileOutputStream(ruleSetLocation.toOSString()); IRuleSetWriter writer = PMDPlugin.getDefault().getRuleSetWriter(); writer.write(out, ruleSet); out.flush(); - out.close(); + } catch (IOException e) { PMDPlugin.getDefault().logError("IO Exception when storing ruleset in state location", e); } catch (WriterException e) { PMDPlugin.getDefault().logError("General PMD Eclipse Exception when storing ruleset in state location", e); + } finally { + IOUtil.closeQuietly(out); } } } diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/properties/impl/ProjectPropertiesImpl.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/properties/impl/ProjectPropertiesImpl.java index c522df78ea..f970e03528 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/properties/impl/ProjectPropertiesImpl.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/properties/impl/ProjectPropertiesImpl.java @@ -48,6 +48,7 @@ import net.sourceforge.pmd.eclipse.runtime.properties.IProjectPropertiesManager; import net.sourceforge.pmd.eclipse.runtime.properties.PropertiesException; import net.sourceforge.pmd.eclipse.runtime.writer.IRuleSetWriter; import net.sourceforge.pmd.eclipse.runtime.writer.WriterException; +import net.sourceforge.pmd.eclipse.util.IOUtil; import net.sourceforge.pmd.util.StringUtil; import org.apache.log4j.Logger; @@ -220,7 +221,7 @@ public class ProjectPropertiesImpl implements IProjectProperties { */ public File getResolvedRuleSetFile() { // Check as project file, otherwise as standard file - final IFile file = this.project.getFile(getRuleSetFile()); + IFile file = project.getFile(getRuleSetFile()); boolean exists = file.exists() && file.isAccessible(); File f; if (exists) { @@ -230,7 +231,7 @@ public class ProjectPropertiesImpl implements IProjectProperties { f = new File(getRuleSetFile()); } } else { - f = new File(getRuleSetFile()); + f = new File(getRuleSetFile()); } return f; } @@ -241,13 +242,14 @@ public class ProjectPropertiesImpl implements IProjectProperties { */ public void createDefaultRuleSetFile() throws PropertiesException { log.info("Create a default rule set file for project " + this.project.getName()); + ByteArrayOutputStream baos = null; try { - final IRuleSetWriter writer = PMDPlugin.getDefault().getRuleSetWriter(); - final ByteArrayOutputStream baos = new ByteArrayOutputStream(); - writer.write(baos, this.projectRuleSet); + IRuleSetWriter writer = PMDPlugin.getDefault().getRuleSetWriter(); + baos = new ByteArrayOutputStream(); + writer.write(baos, projectRuleSet); baos.close(); - final IFile file = this.project.getFile(PROJECT_RULESET_FILE); + final IFile file = project.getFile(PROJECT_RULESET_FILE); if (file.exists() && file.isAccessible()) { throw new PropertiesException("Project ruleset file already exists"); } else { @@ -261,6 +263,8 @@ public class ProjectPropertiesImpl implements IProjectProperties { throw new PropertiesException(e); } catch (CoreException e) { throw new PropertiesException(e); + } finally { + IOUtil.closeQuietly(baos); } } @@ -269,7 +273,7 @@ public class ProjectPropertiesImpl implements IProjectProperties { * @see net.sourceforge.pmd.eclipse.runtime.properties.IProjectProperties#isIncludeDerivedFiles() */ public boolean isIncludeDerivedFiles() { - return this.includeDerivedFiles; + return includeDerivedFiles; } /** diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/properties/impl/ProjectPropertiesManagerImpl.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/properties/impl/ProjectPropertiesManagerImpl.java index 7e74f4e46d..3a51baca19 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/properties/impl/ProjectPropertiesManagerImpl.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/properties/impl/ProjectPropertiesManagerImpl.java @@ -57,6 +57,7 @@ import net.sourceforge.pmd.eclipse.runtime.builder.PMDNature; import net.sourceforge.pmd.eclipse.runtime.properties.IProjectProperties; import net.sourceforge.pmd.eclipse.runtime.properties.IProjectPropertiesManager; import net.sourceforge.pmd.eclipse.runtime.properties.PropertiesException; +import net.sourceforge.pmd.eclipse.util.IOUtil; import org.apache.log4j.Logger; import org.eclipse.core.resources.IFile; @@ -167,7 +168,7 @@ public class ProjectPropertiesManagerImpl implements IProjectPropertiesManager { */ private ProjectPropertiesTO readProjectProperties(final IProject project) throws PropertiesException { ProjectPropertiesTO projectProperties = null; - + Reader reader = null; try { final Mapping mapping = new Mapping(this.getClass().getClassLoader()); final URL mappingSpecUrl = this.getClass().getResource(PROPERTIES_MAPPING); @@ -175,7 +176,7 @@ public class ProjectPropertiesManagerImpl implements IProjectPropertiesManager { final IFile propertiesFile = project.getFile(PROPERTIES_FILE); if (propertiesFile.exists() && propertiesFile.isAccessible()) { - final Reader reader = new InputStreamReader(propertiesFile.getContents()); + reader = new InputStreamReader(propertiesFile.getContents()); final Unmarshaller unmarshaller = new Unmarshaller(mapping); projectProperties = (ProjectPropertiesTO) unmarshaller.unmarshal(reader); reader.close(); @@ -190,6 +191,8 @@ public class ProjectPropertiesManagerImpl implements IProjectPropertiesManager { throw new PropertiesException(e); } catch (CoreException e) { throw new PropertiesException(e); + } finally { + IOUtil.closeQuietly(reader); } return projectProperties; @@ -258,14 +261,15 @@ public class ProjectPropertiesManagerImpl implements IProjectPropertiesManager { */ private void writeProjectProperties(final IProject project, final ProjectPropertiesTO projectProperties) throws PropertiesException { + StringWriter writer = null; try { LocalConfiguration.getInstance().getProperties().setProperty("org.exolab.castor.indent", "true"); - final Mapping mapping = new Mapping(this.getClass().getClassLoader()); - final URL mappingSpecUrl = this.getClass().getResource(PROPERTIES_MAPPING); + final Mapping mapping = new Mapping(getClass().getClassLoader()); + final URL mappingSpecUrl = getClass().getResource(PROPERTIES_MAPPING); mapping.loadMapping(mappingSpecUrl); - final StringWriter writer = new StringWriter(); + writer = new StringWriter(); final Marshaller marshaller = new Marshaller(writer); marshaller.setMapping(mapping); marshaller.marshal(projectProperties); @@ -288,6 +292,8 @@ public class ProjectPropertiesManagerImpl implements IProjectPropertiesManager { throw new PropertiesException(e); } catch (CoreException e) { throw new PropertiesException(e); + } finally { + IOUtil.closeQuietly(writer); } } diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/ShapePicker.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/ShapePicker.java index c5fdbca778..4d86b4fa12 100755 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/ShapePicker.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/ShapePicker.java @@ -1,6 +1,7 @@ package net.sourceforge.pmd.eclipse.ui; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Vector; @@ -43,7 +44,7 @@ public class ShapePicker extends Canvas implements ISelectionP private Map shapeDescriptorsByItem; // private Map tooltipsByItem; - private Vector listeners; + private List listeners; private static Map coloursByRGB = new HashMap(); diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/actions/ClearReviewsAction.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/actions/ClearReviewsAction.java index 76a4e33ed4..3aeec3c257 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/actions/ClearReviewsAction.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/actions/ClearReviewsAction.java @@ -45,6 +45,7 @@ import java.util.Iterator; import net.sourceforge.pmd.eclipse.runtime.PMDRuntimeConstants; import net.sourceforge.pmd.eclipse.runtime.cmd.AbstractDefaultCommand; import net.sourceforge.pmd.eclipse.ui.nls.StringKeys; +import net.sourceforge.pmd.eclipse.util.IOUtil; import org.apache.log4j.Logger; import org.eclipse.core.resources.IFile; @@ -245,11 +246,12 @@ public class ClearReviewsAction extends AbstractUIAction implements IResourceVis if (!isReviewable(file)) return null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); + PrintWriter out = null; boolean noChange = true; try { boolean comment = false; BufferedReader reader = new BufferedReader(new InputStreamReader(file.getContents())); - PrintWriter out = new PrintWriter(baos); + out = new PrintWriter(baos); while (reader.ready()) { String origLine = reader.readLine(); @@ -281,6 +283,9 @@ public class ClearReviewsAction extends AbstractUIAction implements IResourceVis logError(StringKeys.ERROR_CORE_EXCEPTION, e); } catch (IOException e) { logError(StringKeys.ERROR_IO_EXCEPTION, e); + } finally{ + IOUtil.closeQuietly(baos); + IOUtil.closeQuietly(out); } return noChange ? null : baos.toString(); diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/actions/PMDGenerateASTAction.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/actions/PMDGenerateASTAction.java index f15e73dbd5..009b07a02e 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/actions/PMDGenerateASTAction.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/actions/PMDGenerateASTAction.java @@ -43,6 +43,7 @@ import net.sourceforge.pmd.eclipse.plugin.PMDPlugin; import net.sourceforge.pmd.eclipse.runtime.writer.IAstWriter; import net.sourceforge.pmd.eclipse.runtime.writer.WriterException; import net.sourceforge.pmd.eclipse.ui.nls.StringKeys; +import net.sourceforge.pmd.eclipse.util.IOUtil; import net.sourceforge.pmd.lang.ast.JavaCharStream; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.JavaParser; @@ -132,10 +133,12 @@ public class PMDGenerateASTAction extends AbstractUIAction implements IRunnableW */ private void generateAST(IFile file) { log.info("Genrating AST for file " + file.getName()); + ByteArrayOutputStream byteArrayOutputStream = null; + ByteArrayInputStream astInputStream = null; try { JavaParser parser = new JavaParser(new JavaCharStream(file.getContents())); ASTCompilationUnit compilationUnit = parser.CompilationUnit(); - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + byteArrayOutputStream = new ByteArrayOutputStream(); IAstWriter astWriter = PMDPlugin.getDefault().getAstWriter(); astWriter.write(byteArrayOutputStream, compilationUnit); byteArrayOutputStream.flush(); @@ -156,7 +159,7 @@ public class PMDGenerateASTAction extends AbstractUIAction implements IRunnableW if (astFile.exists()) { astFile.delete(false, null); } - ByteArrayInputStream astInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); + astInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); astFile.create(astInputStream, false, null); } @@ -168,6 +171,9 @@ public class PMDGenerateASTAction extends AbstractUIAction implements IRunnableW showErrorById( StringKeys.ERROR_PMD_EXCEPTION, e); } catch (IOException e) { showErrorById(StringKeys.ERROR_IO_EXCEPTION, e); + } finally { + IOUtil.closeQuietly(byteArrayOutputStream); + IOUtil.closeQuietly(astInputStream); } } diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/RuleTableManager.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/RuleTableManager.java index 51f9dde5c0..39f6708606 100755 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/RuleTableManager.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/RuleTableManager.java @@ -23,6 +23,7 @@ import net.sourceforge.pmd.eclipse.ui.nls.StringKeys; import net.sourceforge.pmd.eclipse.ui.preferences.RuleSetSelectionDialog; import net.sourceforge.pmd.eclipse.ui.preferences.editors.SWTUtil; import net.sourceforge.pmd.eclipse.ui.preferences.panelmanagers.CreateRuleWizard; +import net.sourceforge.pmd.eclipse.util.IOUtil; import net.sourceforge.pmd.eclipse.util.Util; import net.sourceforge.pmd.util.FileUtil; import net.sourceforge.pmd.util.designer.Designer; @@ -351,12 +352,16 @@ public class RuleTableManager extends AbstractTreeTableManager implements } if (flContinue) { - ruleSet.setName(FileUtil.getFileNameWithoutExtension(file.getName())); - ruleSet.setDescription(input.getValue()); - OutputStream out = new FileOutputStream(fileName); - IRuleSetWriter writer = plugin.getRuleSetWriter(); - writer.write(out, ruleSet); - out.close(); + OutputStream out = null; + try { + ruleSet.setName(FileUtil.getFileNameWithoutExtension(file.getName())); + ruleSet.setDescription(input.getValue()); + out = new FileOutputStream(fileName); + IRuleSetWriter writer = plugin.getRuleSetWriter(); + writer.write(out, ruleSet); + } finally { + IOUtil.closeQuietly(out); + } MessageDialog.openInformation(shell, getMessage(StringKeys.INFORMATION_TITLE), getMessage(StringKeys.INFORMATION_RULESET_EXPORTED)); } diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/util/IOUtil.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/util/IOUtil.java new file mode 100644 index 0000000000..b54b98247c --- /dev/null +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/util/IOUtil.java @@ -0,0 +1,48 @@ +package net.sourceforge.pmd.eclipse.util; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Reader; +import java.io.Writer; + +public class IOUtil { + + private IOUtil() {} + + public static void closeQuietly(OutputStream stream) { + if (stream == null) return; + try { + stream.close(); + } catch (IOException ex) { + // ignore + } + } + + public static void closeQuietly(InputStream stream) { + if (stream == null) return; + try { + stream.close(); + } catch (IOException ex) { + // ignore + } + } + + public static void closeQuietly(Writer writer) { + if (writer == null) return; + try { + writer.close(); + } catch (IOException ex) { + // ignore it + } + } + + public static void closeQuietly(Reader reader) { + if (reader == null) return; + try { + reader.close(); + } catch (IOException ex) { + //ignore + } + } +}