You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2016/11/27 11:06:57 UTC

svn commit: r1771563 - in /poi/trunk/src: ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java

Author: centic
Date: Sun Nov 27 11:06:57 2016
New Revision: 1771563

URL: http://svn.apache.org/viewvc?rev=1771563&view=rev
Log:
Fix newly introduced Sonar issues and allow text to be null

Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java
    poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java?rev=1771563&r1=1771562&r2=1771563&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataValidation.java Sun Nov 27 11:06:57 2016
@@ -35,6 +35,8 @@ import org.openxmlformats.schemas.spread
  *
  */
 public class XSSFDataValidation implements DataValidation {
+	private static final int MAX_TEXT_LENGTH = 255;
+
 	private CTDataValidation ctDdataValidation;
 	private XSSFDataValidationConstraint validationConstraint;
 	private CellRangeAddressList regions;
@@ -43,15 +45,13 @@ public class XSSFDataValidation implemen
 	static Map<STDataValidationOperator.Enum,Integer> operatorTypeReverseMappings = new HashMap<STDataValidationOperator.Enum,Integer>();
 	static Map<Integer,STDataValidationType.Enum> validationTypeMappings = new HashMap<Integer,STDataValidationType.Enum>();
 	static Map<STDataValidationType.Enum,Integer> validationTypeReverseMappings = new HashMap<STDataValidationType.Enum,Integer>();
-    static Map<Integer,STDataValidationErrorStyle.Enum> errorStyleMappings = new HashMap<Integer,STDataValidationErrorStyle.Enum>();
+	static Map<Integer,STDataValidationErrorStyle.Enum> errorStyleMappings = new HashMap<Integer,STDataValidationErrorStyle.Enum>();
+
     static {
 		errorStyleMappings.put(DataValidation.ErrorStyle.INFO, STDataValidationErrorStyle.INFORMATION);
 		errorStyleMappings.put(DataValidation.ErrorStyle.STOP, STDataValidationErrorStyle.STOP);
 		errorStyleMappings.put(DataValidation.ErrorStyle.WARNING, STDataValidationErrorStyle.WARNING);
-    }
-	
-    
-	static {
+
 		operatorTypeMappings.put(DataValidationConstraint.OperatorType.BETWEEN,STDataValidationOperator.BETWEEN);
 		operatorTypeMappings.put(DataValidationConstraint.OperatorType.NOT_BETWEEN,STDataValidationOperator.NOT_BETWEEN);
 		operatorTypeMappings.put(DataValidationConstraint.OperatorType.EQUAL,STDataValidationOperator.EQUAL);
@@ -64,9 +64,7 @@ public class XSSFDataValidation implemen
 		for( Map.Entry<Integer,STDataValidationOperator.Enum> entry : operatorTypeMappings.entrySet() ) {
 			operatorTypeReverseMappings.put(entry.getValue(),entry.getKey());
 		}
-	}
 
-	static {
 		validationTypeMappings.put(DataValidationConstraint.ValidationType.FORMULA,STDataValidationType.CUSTOM);
 		validationTypeMappings.put(DataValidationConstraint.ValidationType.DATE,STDataValidationType.DATE);
 		validationTypeMappings.put(DataValidationConstraint.ValidationType.DECIMAL,STDataValidationType.DECIMAL);    	
@@ -81,7 +79,6 @@ public class XSSFDataValidation implemen
 		}
 	}
 
-	
 	XSSFDataValidation(CellRangeAddressList regions,CTDataValidation ctDataValidation) {
 	    this(getConstraint(ctDataValidation), regions, ctDataValidation);
 	}	
@@ -104,10 +101,10 @@ public class XSSFDataValidation implemen
 	 */
 	public void createErrorBox(String title, String text) {
 		// the spec does not specify a length-limit, however Excel reports files as "corrupt" if they exceed 255 bytes for these texts...
-		if(title != null && title.length() > 255) {
+		if(title != null && title.length() > MAX_TEXT_LENGTH) {
 			throw new IllegalStateException("Error-title cannot be longer than 32 characters, but had: " + title);
 		}
-		if(text != null && text.length() > 255) {
+		if(text != null && text.length() > MAX_TEXT_LENGTH) {
 			throw new IllegalStateException("Error-text cannot be longer than 255 characters, but had: " + text);
 		}
 		ctDdataValidation.setErrorTitle(encodeUtf(title));
@@ -119,10 +116,10 @@ public class XSSFDataValidation implemen
 	 */
 	public void createPromptBox(String title, String text) {
 		// the spec does not specify a length-limit, however Excel reports files as "corrupt" if they exceed 255 bytes for these texts...
-		if(title != null && title.length() > 255) {
+		if(title != null && title.length() > MAX_TEXT_LENGTH) {
 			throw new IllegalStateException("Error-title cannot be longer than 32 characters, but had: " + title);
 		}
-		if(text != null && text.length() > 255) {
+		if(text != null && text.length() > MAX_TEXT_LENGTH) {
 			throw new IllegalStateException("Error-text cannot be longer than 255 characters, but had: " + text);
 		}
 		ctDdataValidation.setPromptTitle(encodeUtf(title));
@@ -143,6 +140,10 @@ public class XSSFDataValidation implemen
 	 * @return  the encoded string
 	 */
 	private String encodeUtf(String text) {
+		if(text == null) {
+			return null;
+		}
+
 		StringBuilder builder = new StringBuilder();
 		for(char c : text.toCharArray()) {
 			// for now only encode characters below 32, we can add more here if needed

Modified: poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java?rev=1771563&r1=1771562&r2=1771563&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java Sun Nov 27 11:06:57 2016
@@ -1805,6 +1805,9 @@ public abstract class BaseTestBugzillaIs
         checkFailures(dataValidation, TEST_256, TEST_32, true);
         checkFailures(dataValidation, TEST_32, TEST_256, true);
 
+        // null does work
+        checkFailures(dataValidation, null, null, false);
+
         // more than 32 title fail for HSSFWorkbook
         checkFailures(dataValidation, TEST_255, TEST_32, wb instanceof HSSFWorkbook);
 
@@ -1838,16 +1841,16 @@ public abstract class BaseTestBugzillaIs
     private void checkFailures(DataValidation dataValidation, String title, String text, boolean shouldFail) {
         try {
             dataValidation.createPromptBox(title, text);
-            assertFalse("Should fail in a length-check, had " + title.length() + " and " + text.length(), shouldFail);
+            assertFalse("Should fail in a length-check, had " + (title == null ? null : title.length()) + " and " + (text == null ? null : text.length()), shouldFail);
         } catch (IllegalStateException e) {
-            assertTrue("Should not fail in a length-check, had " + title.length() + " and " + text.length(), shouldFail);
+            assertTrue("Should not fail in a length-check, had " + (title == null ? null : title.length()) + " and " + (text == null ? null : text.length()), shouldFail);
             // expected here
         }
         try {
             dataValidation.createErrorBox(title, text);
-            assertFalse("Should fail in a length-check, had " + title.length() + " and " + text.length(), shouldFail);
+            assertFalse("Should fail in a length-check, had " + (title == null ? null : title.length()) + " and " + (text == null ? null : text.length()), shouldFail);
         } catch (IllegalStateException e) {
-            assertTrue("Should not fail in a length-check, had " + title.length() + " and " + text.length(), shouldFail);
+            assertTrue("Should not fail in a length-check, had " + (title == null ? null : title.length()) + " and " + (text == null ? null : text.length()), shouldFail);
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org