summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2018-08-31 11:56:18 +0000
committerAndreas Beeker <kiwiwings@apache.org>2018-08-31 11:56:18 +0000
commite331ecb3f6e14ce054c664e7426b804fa32d6798 (patch)
treed02cfb2ee871fe63f6791d0b54dc925cf9c3b006
parent07705635a132a82a5866bdfa3aaa14279406e593 (diff)
downloadpoi-e331ecb3f6e14ce054c664e7426b804fa32d6798.tar.gz
poi-e331ecb3f6e14ce054c664e7426b804fa32d6798.zip
sonar fixes - blocker
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1839745 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/java/org/apache/poi/poifs/filesystem/EntryUtils.java10
-rw-r--r--src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java7
-rw-r--r--src/java/org/apache/poi/ss/usermodel/TableStyleType.java4
-rw-r--r--src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java2
-rw-r--r--src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java6
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java6
-rw-r--r--src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java2
-rw-r--r--src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java18
-rw-r--r--src/scratchpad/src/org/apache/poi/hwpf/converter/WordToTextConverter.java32
-rw-r--r--src/scratchpad/src/org/apache/poi/hwpf/model/OldTextPiece.java8
10 files changed, 64 insertions, 31 deletions
diff --git a/src/java/org/apache/poi/poifs/filesystem/EntryUtils.java b/src/java/org/apache/poi/poifs/filesystem/EntryUtils.java
index 0cc52e4d24..68bd85bae3 100644
--- a/src/java/org/apache/poi/poifs/filesystem/EntryUtils.java
+++ b/src/java/org/apache/poi/poifs/filesystem/EntryUtils.java
@@ -159,6 +159,11 @@ public final class EntryUtils {
}
@Override
+ public int hashCode() {
+ return dir.getName().hashCode();
+ }
+
+ @Override
public boolean equals(Object other) {
if (!(other instanceof DirectoryDelegate)) {
return false;
@@ -192,6 +197,11 @@ public final class EntryUtils {
}
@Override
+ public int hashCode() {
+ return doc.getName().hashCode();
+ }
+
+ @Override
public boolean equals(Object other) {
if (!(other instanceof DocumentDelegate)) {
return false;
diff --git a/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java b/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java
index 88094f2e62..f9549cf542 100644
--- a/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java
+++ b/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java
@@ -127,9 +127,10 @@ public class FileBackedDataSource extends DataSource {
@Override
public void copyTo(OutputStream stream) throws IOException {
// Wrap the OutputSteam as a channel
- WritableByteChannel out = Channels.newChannel(stream);
- // Now do the transfer
- channel.transferTo(0, channel.size(), out);
+ try (WritableByteChannel out = Channels.newChannel(stream)) {
+ // Now do the transfer
+ channel.transferTo(0, channel.size(), out);
+ }
}
@Override
diff --git a/src/java/org/apache/poi/ss/usermodel/TableStyleType.java b/src/java/org/apache/poi/ss/usermodel/TableStyleType.java
index be7c84c697..870436a3b4 100644
--- a/src/java/org/apache/poi/ss/usermodel/TableStyleType.java
+++ b/src/java/org/apache/poi/ss/usermodel/TableStyleType.java
@@ -65,7 +65,7 @@ public enum TableStyleType {
// could do fancy math, but tables can't be that wide, a simple loop is fine
// if not in this type of stripe, return null
while (firstStart <= c) {
- if (c >= firstStart && c <= secondStart -1) {
+ if (c <= secondStart -1) {
return new CellRangeAddress(table.getStartRowIndex(), table.getEndRowIndex(), firstStart, secondStart - 1);
}
firstStart = secondStart + c2Stripe;
@@ -121,7 +121,7 @@ public enum TableStyleType {
// could do fancy math, but tables can't be that wide, a simple loop is fine
// if not in this type of stripe, return null
while (firstStart <= c) {
- if (c >= firstStart && c <= secondStart -1) {
+ if (c <= secondStart -1) {
return new CellRangeAddress(firstStart, secondStart - 1, table.getStartColIndex(), table.getEndColIndex());
}
firstStart = secondStart + c2Stripe;
diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java
index 975e21d981..ecec63ce9f 100644
--- a/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java
+++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java
@@ -101,7 +101,7 @@ public final class ZipPackage extends OPCPackage {
*/
ZipPackage(InputStream in, PackageAccess access) throws IOException {
super(access);
- ZipArchiveThresholdInputStream zis = ZipHelper.openZipStream(in);
+ ZipArchiveThresholdInputStream zis = ZipHelper.openZipStream(in); // NOSONAR
try {
this.zipArchive = new ZipInputStreamZipEntrySource(zis);
} catch (final IOException e) {
diff --git a/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java b/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java
index 7ba6f8e2bf..46815ea3a4 100644
--- a/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java
+++ b/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java
@@ -24,6 +24,8 @@ import java.util.List;
import java.util.Optional;
import java.util.function.Function;
+import org.apache.commons.collections4.iterators.IteratorIterable;
+import org.apache.commons.collections4.iterators.ReverseListIterator;
import org.apache.poi.util.Beta;
import org.apache.poi.util.Internal;
import org.apache.poi.util.LocaleUtil;
@@ -97,8 +99,8 @@ public class XDDFTextParagraph {
public XDDFTextRun appendLineBreak() {
CTTextLineBreak br = _p.addNewBr();
// by default, line break has the font properties of the last text run
- for (int i = _runs.size() - 1; i <= 0; i--) {
- CTTextCharacterProperties prevProps = _runs.get(i).getProperties();
+ for (XDDFTextRun tr : new IteratorIterable<>(new ReverseListIterator<>(_runs))) {
+ CTTextCharacterProperties prevProps = tr.getProperties();
// let's find one that is not undefined
if (prevProps != null) {
br.setRPr((CTTextCharacterProperties) prevProps.copy());
diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
index c066fcd2bd..6fbcb14035 100644
--- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
+++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
@@ -931,8 +931,10 @@ public class SXSSFWorkbook implements Workbook {
}
//Substitute the template entries with the generated sheet data files
- final ZipEntrySource source = new ZipFileZipEntrySource(new ZipSecureFile(tmplFile));
- injectData(source, stream);
+ try (ZipSecureFile zf = new ZipSecureFile(tmplFile);
+ ZipFileZipEntrySource source = new ZipFileZipEntrySource(zf)) {
+ injectData(source, stream);
+ }
} finally {
deleted = tmplFile.delete();
}
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
index 840e533ed9..c971b3a926 100644
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
@@ -292,7 +292,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
String color = null;
if (run.isSetRPr()) {
CTRPr pr = getRunProperties(false);
- if (pr.isSetColor()) {
+ if (pr != null && pr.isSetColor()) {
CTColor clr = pr.getColor();
color = clr.xgetVal().getStringValue();
}
diff --git a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java
index 0e6e767279..ecc360e135 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java
@@ -46,8 +46,8 @@ import org.apache.poi.hslf.model.MovieShape;
import org.apache.poi.hslf.record.*;
import org.apache.poi.hslf.record.SlideListWithText.SlideAtomsSet;
import org.apache.poi.poifs.filesystem.DirectoryNode;
-import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.poifs.filesystem.Ole10Native;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.sl.usermodel.MasterSheet;
import org.apache.poi.sl.usermodel.PictureData.PictureType;
import org.apache.poi.sl.usermodel.Resources;
@@ -595,6 +595,9 @@ public final class HSLFSlideShow implements SlideShow<HSLFShape,HSLFTextParagrap
// The order of slides is defined by the order of slide atom sets in the
// SlideListWithText container.
SlideListWithText slwt = _documentRecord.getSlideSlideListWithText();
+ if (slwt == null) {
+ throw new IllegalStateException("Slide record not defined.");
+ }
SlideAtomsSet[] sas = slwt.getSlideAtomsSets();
SlideAtomsSet tmp = sas[oldSlideNumber - 1];
@@ -635,6 +638,9 @@ public final class HSLFSlideShow implements SlideShow<HSLFShape,HSLFTextParagrap
}
SlideListWithText slwt = _documentRecord.getSlideSlideListWithText();
+ if (slwt == null) {
+ throw new IllegalStateException("Slide record not defined.");
+ }
SlideAtomsSet[] sas = slwt.getSlideAtomsSets();
List<Record> records = new ArrayList<>();
@@ -678,12 +684,14 @@ public final class HSLFSlideShow implements SlideShow<HSLFShape,HSLFTextParagrap
records.addAll(Arrays.asList(ns.getSlideRecords()));
}
}
+
+ if (!na.isEmpty()) {
+ nslwt.setSlideAtomsSets(na.toArray(new SlideAtomsSet[0]));
+ nslwt.setChildRecord(records.toArray(new Record[0]));
+ }
}
if (na.isEmpty()) {
_documentRecord.removeSlideListWithText(nslwt);
- } else {
- nslwt.setSlideAtomsSets(na.toArray(new SlideAtomsSet[0]));
- nslwt.setChildRecord(records.toArray(new Record[0]));
}
}
@@ -1113,7 +1121,7 @@ public final class HSLFSlideShow implements SlideShow<HSLFShape,HSLFTextParagrap
}
@Override
- public MasterSheet<HSLFShape,HSLFTextParagraph> createMasterSheet() throws IOException {
+ public MasterSheet<HSLFShape,HSLFTextParagraph> createMasterSheet() {
// TODO implement or throw exception if not supported
return null;
}
diff --git a/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToTextConverter.java b/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToTextConverter.java
index 0cdc68d63f..b469df3031 100644
--- a/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToTextConverter.java
+++ b/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToTextConverter.java
@@ -17,6 +17,7 @@
package org.apache.poi.hwpf.converter;
import java.io.File;
+import java.io.IOException;
import java.io.StringWriter;
import java.lang.reflect.Method;
import java.util.List;
@@ -114,14 +115,13 @@ public class WordToTextConverter extends AbstractWordConverter
serializer.transform( domSource, streamResult );
}
- static Document process( File docFile ) throws Exception
- {
- final HWPFDocumentCore wordDocument = AbstractWordUtils
- .loadDoc( docFile );
- WordToTextConverter wordToTextConverter = new WordToTextConverter(
- XMLHelper.getDocumentBuilderFactory().newDocumentBuilder().newDocument() );
- wordToTextConverter.processDocument( wordDocument );
- return wordToTextConverter.getDocument();
+ private static Document process( File docFile ) throws IOException, ParserConfigurationException {
+ try (final HWPFDocumentCore wordDocument = AbstractWordUtils.loadDoc( docFile )) {
+ WordToTextConverter wordToTextConverter = new WordToTextConverter(
+ XMLHelper.getDocumentBuilderFactory().newDocumentBuilder().newDocument());
+ wordToTextConverter.processDocument(wordDocument);
+ return wordToTextConverter.getDocument();
+ }
}
private AtomicInteger noteCounters = new AtomicInteger( 1 );
@@ -153,12 +153,14 @@ public class WordToTextConverter extends AbstractWordConverter
* @param document
* XML DOM Document used as storage for text pieces
*/
- public WordToTextConverter( Document document )
+ @SuppressWarnings("WeakerAccess")
+ public WordToTextConverter(Document document )
{
this.textDocumentFacade = new TextDocumentFacade( document );
}
- public WordToTextConverter( TextDocumentFacade textDocumentFacade )
+ @SuppressWarnings("unused")
+ public WordToTextConverter(TextDocumentFacade textDocumentFacade )
{
this.textDocumentFacade = textDocumentFacade;
}
@@ -192,6 +194,7 @@ public class WordToTextConverter extends AbstractWordConverter
return stringWriter.toString();
}
+ @SuppressWarnings("WeakerAccess")
public boolean isOutputSummaryInformation()
{
return outputSummaryInformation;
@@ -275,7 +278,7 @@ public class WordToTextConverter extends AbstractWordConverter
currentBlock.appendChild( textDocumentFacade.createText( " ("
+ UNICODECHAR_ZERO_WIDTH_SPACE
- + hyperlink.replaceAll( "\\/", UNICODECHAR_ZERO_WIDTH_SPACE
+ + hyperlink.replaceAll( "/", UNICODECHAR_ZERO_WIDTH_SPACE
+ "\\/" + UNICODECHAR_ZERO_WIDTH_SPACE )
+ UNICODECHAR_ZERO_WIDTH_SPACE + ")" ) );
}
@@ -307,9 +310,7 @@ public class WordToTextConverter extends AbstractWordConverter
block.appendChild( textDocumentFacade.createText( "\n" ) );
}
- protected void processNote( HWPFDocument wordDocument, Element block,
- Range noteTextRange )
- {
+ private void processNote( HWPFDocument wordDocument, Element block, Range noteTextRange ) {
final int noteIndex = noteCounters.getAndIncrement();
block.appendChild( textDocumentFacade
.createText( UNICODECHAR_ZERO_WIDTH_SPACE + "[" + noteIndex
@@ -457,7 +458,8 @@ public class WordToTextConverter extends AbstractWordConverter
}
}
- public void setOutputSummaryInformation( boolean outputDocumentInformation )
+ @SuppressWarnings("unused")
+ public void setOutputSummaryInformation(boolean outputDocumentInformation )
{
this.outputSummaryInformation = outputDocumentInformation;
}
diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/OldTextPiece.java b/src/scratchpad/src/org/apache/poi/hwpf/model/OldTextPiece.java
index 6fc78dfd05..df0104fe8a 100644
--- a/src/scratchpad/src/org/apache/poi/hwpf/model/OldTextPiece.java
+++ b/src/scratchpad/src/org/apache/poi/hwpf/model/OldTextPiece.java
@@ -18,6 +18,8 @@
package org.apache.poi.hwpf.model;
+import java.util.Arrays;
+
import org.apache.poi.util.Internal;
import org.apache.poi.util.NotImplemented;
@@ -102,6 +104,12 @@ public class OldTextPiece extends TextPiece {
return 42; // any arbitrary constant will do
}
+ @Override
+ public boolean equals(Object other) {
+ return other instanceof OldTextPiece &&
+ Arrays.equals(rawBytes, ((OldTextPiece)other).rawBytes);
+ }
+
public String toString() {
return "OldTextPiece from " + getStart() + " to " + getEnd() + " ("
+ getPieceDescriptor() + ")";