PARQUET-1970: Make minor releases source compatible (#861)

diff --git a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/OffsetIndex.java b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/OffsetIndex.java
index 02d58af..6c16294 100644
--- a/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/OffsetIndex.java
+++ b/parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/OffsetIndex.java
@@ -49,13 +49,15 @@
    * @return the index of the first row in the page
    */
   public long getFirstRowIndex(int pageIndex);
-  
+
   /**
    * @param pageIndex
    *         the index of the page
    * @return the original ordinal of the page in the column chunk
    */
-  public int getPageOrdinal(int pageIndex);
+  public default int getPageOrdinal(int pageIndex) {
+    return pageIndex;
+  }
 
   /**
    * @param pageIndex
diff --git a/parquet-common/src/main/java/org/apache/parquet/io/OutputFile.java b/parquet-common/src/main/java/org/apache/parquet/io/OutputFile.java
index e1558ce..7733175 100644
--- a/parquet-common/src/main/java/org/apache/parquet/io/OutputFile.java
+++ b/parquet-common/src/main/java/org/apache/parquet/io/OutputFile.java
@@ -31,5 +31,7 @@
 
   long defaultBlockSize();
 
-  String getPath();
+  default String getPath() {
+    return null;
+  }
 }
diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/PropertiesDrivenCryptoFactory.java b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/PropertiesDrivenCryptoFactory.java
index 8fdeca2..f35d9ec 100644
--- a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/PropertiesDrivenCryptoFactory.java
+++ b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/keytools/PropertiesDrivenCryptoFactory.java
@@ -92,6 +92,9 @@
     boolean keyMaterialInternalStorage = fileHadoopConfig.getBoolean(KeyToolkit.KEY_MATERIAL_INTERNAL_PROPERTY_NAME,
         KeyToolkit.KEY_MATERIAL_INTERNAL_DEFAULT);
     if (!keyMaterialInternalStorage) {
+      if (tempFilePath == null) {
+        throw new ParquetCryptoRuntimeException("Output file path cannot be null");
+      }
       try {
         keyMaterialStore = new HadoopFSKeyMaterialStore(tempFilePath.getFileSystem(fileHadoopConfig));
         keyMaterialStore.initialize(tempFilePath, fileHadoopConfig, false);
diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetWriter.java b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetWriter.java
index c571afd..550cd33 100644
--- a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetWriter.java
+++ b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetWriter.java
@@ -194,7 +194,7 @@
         compressionCodecName, blockSize, pageSize, dictionaryPageSize,
         enableDictionary, validating, writerVersion, conf);
   }
-  
+
   /**
    * Create a new ParquetWriter.
    *
@@ -281,7 +281,8 @@
 
     // encryptionProperties could be built from the implementation of EncryptionPropertiesFactory when it is attached.
     if (encryptionProperties == null) {
-      encryptionProperties = ParquetOutputFormat.createEncryptionProperties(conf, new Path(file.getPath()), writeContext);
+      encryptionProperties = ParquetOutputFormat.createEncryptionProperties(conf,
+          file == null ? null : new Path(file.getPath()), writeContext);
     }
 
     ParquetFileWriter fileWriter = new ParquetFileWriter(
diff --git a/pom.xml b/pom.xml
index 685e194..c076c76 100644
--- a/pom.xml
+++ b/pom.xml
@@ -503,7 +503,7 @@
         <configuration>
           <parameter>
             <oldVersionPattern>${previous.version}</oldVersionPattern>
-            <breakBuildBasedOnSemanticVersioning>true</breakBuildBasedOnSemanticVersioning>
+            <breakBuildOnSourceIncompatibleModifications>true</breakBuildOnSourceIncompatibleModifications>
             <onlyModified>true</onlyModified>
             <overrideCompatibilityChangeParameters>
               <!-- Adding a new method with default implementation to an interface should be a compatible change.