You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pirk.apache.org by ea...@apache.org on 2016/08/10 17:05:08 UTC
incubator-pirk git commit: Introduced typed property getters to
SystemConfiguration -- closes apache/incubator-pirk#51
Repository: incubator-pirk
Updated Branches:
refs/heads/master 27791ec1b -> fc85daa9d
Introduced typed property getters to SystemConfiguration -- closes apache/incubator-pirk#51
Project: http://git-wip-us.apache.org/repos/asf/incubator-pirk/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-pirk/commit/fc85daa9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-pirk/tree/fc85daa9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-pirk/diff/fc85daa9
Branch: refs/heads/master
Commit: fc85daa9d72f80c41daa84c15a59d2c9973e6c52
Parents: 27791ec
Author: tellison <te...@apache.org>
Authored: Wed Aug 10 13:04:56 2016 -0400
Committer: eawilliams <ea...@apache.org>
Committed: Wed Aug 10 13:04:56 2016 -0400
----------------------------------------------------------------------
.../pirk/benchmark/PaillierBenchmark.java | 2 +-
.../pirk/encryption/ModPowAbstraction.java | 8 +-
.../org/apache/pirk/encryption/Paillier.java | 4 +-
.../apache/pirk/encryption/PrimeGenerator.java | 2 +-
.../pirk/querier/wideskies/QuerierDriver.java | 8 +-
.../decrypt/DecryptResponseRunnable.java | 2 +-
.../querier/wideskies/encrypt/EncryptQuery.java | 2 +-
.../apache/pirk/query/wideskies/QueryUtils.java | 2 +-
.../mapreduce/ComputeResponseTool.java | 10 +-
.../wideskies/spark/ComputeExpLookupTable.java | 4 +-
.../wideskies/spark/ComputeResponse.java | 13 +-
.../wideskies/standalone/Responder.java | 2 +-
.../data/partitioner/IPDataPartitioner.java | 2 +-
.../partitioner/PrimitiveTypePartitioner.java | 2 +-
.../distributed/testsuite/DistTestSuite.java | 6 +-
.../org/apache/pirk/test/utils/BaseTests.java | 6 +-
.../apache/pirk/test/utils/StandaloneQuery.java | 8 +-
.../apache/pirk/utils/SystemConfiguration.java | 146 ++++++++++++++-----
.../org/apache/pirk/general/PaillierTest.java | 4 +-
19 files changed, 150 insertions(+), 83 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/benchmark/PaillierBenchmark.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/benchmark/PaillierBenchmark.java b/src/main/java/org/apache/pirk/benchmark/PaillierBenchmark.java
index 3ffee5f..7af3fcf 100644
--- a/src/main/java/org/apache/pirk/benchmark/PaillierBenchmark.java
+++ b/src/main/java/org/apache/pirk/benchmark/PaillierBenchmark.java
@@ -59,7 +59,7 @@ public class PaillierBenchmark
@Setup(org.openjdk.jmh.annotations.Level.Trial)
public void setUp()
{
- int systemPrimeCertainty = Integer.parseInt(SystemConfiguration.getProperty("pir.primeCertainty", "100"));
+ int systemPrimeCertainty = SystemConfiguration.getIntProperty("pir.primeCertainty", 100);
try
{
pallier = new Paillier(MODULUS_SIZE, systemPrimeCertainty);
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/encryption/ModPowAbstraction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/encryption/ModPowAbstraction.java b/src/main/java/org/apache/pirk/encryption/ModPowAbstraction.java
index 4fd2dcd..3699a7d 100644
--- a/src/main/java/org/apache/pirk/encryption/ModPowAbstraction.java
+++ b/src/main/java/org/apache/pirk/encryption/ModPowAbstraction.java
@@ -29,9 +29,9 @@ import com.squareup.jnagmp.Gmp;
*/
public final class ModPowAbstraction
{
- private static boolean useGMPForModPow = SystemConfiguration.getProperty("paillier.useGMPForModPow").equals("true");
+ private static boolean useGMPForModPow = SystemConfiguration.isSetTrue("paillier.useGMPForModPow");
- private static boolean useGMPConstantTimeMethods = SystemConfiguration.getProperty("paillier.GMPConstantTimeMode").equals("true");
+ private static boolean useGMPConstantTimeMethods = SystemConfiguration.isSetTrue("paillier.GMPConstantTimeMode");
/**
* Performs modPow: ({@code base}^{@code exponent}) mod {@code modulus}
@@ -85,7 +85,7 @@ public final class ModPowAbstraction
public static void reloadConfiguration()
{
- useGMPForModPow = SystemConfiguration.getProperty("paillier.useGMPForModPow").equals("true");
- useGMPConstantTimeMethods = SystemConfiguration.getProperty("paillier.GMPConstantTimeMode").equals("true");
+ useGMPForModPow = SystemConfiguration.isSetTrue("paillier.useGMPForModPow");
+ useGMPConstantTimeMethods = SystemConfiguration.isSetTrue("paillier.GMPConstantTimeMode");
}
}
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/encryption/Paillier.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/encryption/Paillier.java b/src/main/java/org/apache/pirk/encryption/Paillier.java
index b3d1a7a..dec6c30 100644
--- a/src/main/java/org/apache/pirk/encryption/Paillier.java
+++ b/src/main/java/org/apache/pirk/encryption/Paillier.java
@@ -116,7 +116,7 @@ public class Paillier implements Cloneable, Serializable
bitLength = bitLengthInput;
// Verify the prime conditions are satisfied
- int primeCertainty = Integer.parseInt(SystemConfiguration.getProperty("pir.primeCertainty", "128"));
+ int primeCertainty = SystemConfiguration.getIntProperty("pir.primeCertainty", 128);
BigInteger three = BigInteger.valueOf(3);
if ((pInput.compareTo(three) < 0) || (qInput.compareTo(three) < 0) || pInput.equals(qInput) || !pInput.isProbablePrime(primeCertainty)
|| !qInput.isProbablePrime(primeCertainty))
@@ -161,7 +161,7 @@ public class Paillier implements Cloneable, Serializable
{
bitLength = bitLengthInput;
- int systemPrimeCertainty = Integer.parseInt(SystemConfiguration.getProperty("pir.primeCertainty", "128"));
+ int systemPrimeCertainty = SystemConfiguration.getIntProperty("pir.primeCertainty", 128);
if (certainty < systemPrimeCertainty)
{
throw new PIRException("Input certainty = " + certainty + " is less than allowed system lower bound = " + systemPrimeCertainty);
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/encryption/PrimeGenerator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/encryption/PrimeGenerator.java b/src/main/java/org/apache/pirk/encryption/PrimeGenerator.java
index f529df0..ddfbd00 100644
--- a/src/main/java/org/apache/pirk/encryption/PrimeGenerator.java
+++ b/src/main/java/org/apache/pirk/encryption/PrimeGenerator.java
@@ -58,7 +58,7 @@ public class PrimeGenerator
private static final HashMap<Integer,BigInteger> lowerBoundCache = new HashMap<>();
private static final HashMap<Integer,BigInteger> minimumDifferenceCache = new HashMap<>();
- private static boolean additionalChecksEnabled = SystemConfiguration.getProperty("pallier.FIPSPrimeGenerationChecks").equals("true");
+ private static boolean additionalChecksEnabled = SystemConfiguration.isSetTrue("pallier.FIPSPrimeGenerationChecks");
/**
* Method to generate a single prime
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/querier/wideskies/QuerierDriver.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/querier/wideskies/QuerierDriver.java b/src/main/java/org/apache/pirk/querier/wideskies/QuerierDriver.java
index 5e5c957..c8647c6 100644
--- a/src/main/java/org/apache/pirk/querier/wideskies/QuerierDriver.java
+++ b/src/main/java/org/apache/pirk/querier/wideskies/QuerierDriver.java
@@ -118,9 +118,9 @@ public class QuerierDriver implements Serializable
dataPartitionBitSize = Integer.parseInt(SystemConfiguration.getProperty(QuerierProps.DATAPARTITIONSIZE));
paillierBitSize = Integer.parseInt(SystemConfiguration.getProperty(QuerierProps.PAILLIERBITSIZE));
certainty = Integer.parseInt(SystemConfiguration.getProperty(QuerierProps.CERTAINTY));
- embedSelector = SystemConfiguration.getProperty(QuerierProps.EMBEDSELECTOR, "true").equals("true");
- useMemLookupTable = SystemConfiguration.getProperty(QuerierProps.USEMEMLOOKUPTABLE, "false").equals("true");
- useHDFSLookupTable = SystemConfiguration.getProperty(QuerierProps.USEHDFSLOOKUPTABLE, "false").equals("true");
+ embedSelector = SystemConfiguration.getBooleanProperty(QuerierProps.EMBEDSELECTOR, true);
+ useMemLookupTable = SystemConfiguration.getBooleanProperty(QuerierProps.USEMEMLOOKUPTABLE, false);
+ useHDFSLookupTable = SystemConfiguration.getBooleanProperty(QuerierProps.USEHDFSLOOKUPTABLE, false);
if (SystemConfiguration.hasProperty(QuerierProps.BITSET))
{
@@ -169,7 +169,7 @@ public class QuerierDriver implements Serializable
QueryInfo queryInfo = new QueryInfo(queryNum, numSelectors, hashBitSize, hashKey, dataPartitionBitSize, queryType, queryName, paillierBitSize,
useMemLookupTable, embedSelector, useHDFSLookupTable);
- if (SystemConfiguration.getProperty("pir.embedQuerySchema").equals("true"))
+ if (SystemConfiguration.isSetTrue("pir.embedQuerySchema"))
{
queryInfo.addQuerySchema(QuerySchemaRegistry.get(queryType));
}
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/querier/wideskies/decrypt/DecryptResponseRunnable.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/querier/wideskies/decrypt/DecryptResponseRunnable.java b/src/main/java/org/apache/pirk/querier/wideskies/decrypt/DecryptResponseRunnable.java
index 6f1341c..f062640 100644
--- a/src/main/java/org/apache/pirk/querier/wideskies/decrypt/DecryptResponseRunnable.java
+++ b/src/main/java/org/apache/pirk/querier/wideskies/decrypt/DecryptResponseRunnable.java
@@ -61,7 +61,7 @@ public class DecryptResponseRunnable implements Runnable
queryInfo = queryInfoInput;
embedSelectorMap = embedSelectorMapInput;
- if (SystemConfiguration.getProperty("pir.allowAdHocQuerySchemas", "false").equals("true"))
+ if (SystemConfiguration.getBooleanProperty("pir.allowAdHocQuerySchemas", false))
{
if ((qSchema = queryInfo.getQuerySchema()) == null)
{
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/querier/wideskies/encrypt/EncryptQuery.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/querier/wideskies/encrypt/EncryptQuery.java b/src/main/java/org/apache/pirk/querier/wideskies/encrypt/EncryptQuery.java
index 9935bb7..9e2099a 100644
--- a/src/main/java/org/apache/pirk/querier/wideskies/encrypt/EncryptQuery.java
+++ b/src/main/java/org/apache/pirk/querier/wideskies/encrypt/EncryptQuery.java
@@ -115,7 +115,7 @@ public class EncryptQuery
*/
public void encrypt() throws InterruptedException, PIRException
{
- int numThreads = Integer.parseInt(SystemConfiguration.getProperty("numThreads", "1"));
+ int numThreads = SystemConfiguration.getIntProperty("numThreads", 1);
encrypt(numThreads);
}
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/query/wideskies/QueryUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/query/wideskies/QueryUtils.java b/src/main/java/org/apache/pirk/query/wideskies/QueryUtils.java
index 70273f8..f8bac62 100644
--- a/src/main/java/org/apache/pirk/query/wideskies/QueryUtils.java
+++ b/src/main/java/org/apache/pirk/query/wideskies/QueryUtils.java
@@ -57,7 +57,7 @@ public class QueryUtils
DataSchema dSchema = DataSchemaRegistry.get(qSchema.getDataSchemaName());
- int numArrayElementsToReturn = Integer.parseInt(SystemConfiguration.getProperty("pir.numReturnArrayElements", "1"));
+ int numArrayElementsToReturn = SystemConfiguration.getIntProperty("pir.numReturnArrayElements", 1);
logger.debug("parts.size() = " + parts.size());
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/responder/wideskies/mapreduce/ComputeResponseTool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/responder/wideskies/mapreduce/ComputeResponseTool.java b/src/main/java/org/apache/pirk/responder/wideskies/mapreduce/ComputeResponseTool.java
index 5e3077f..15d62df 100644
--- a/src/main/java/org/apache/pirk/responder/wideskies/mapreduce/ComputeResponseTool.java
+++ b/src/main/java/org/apache/pirk/responder/wideskies/mapreduce/ComputeResponseTool.java
@@ -131,7 +131,7 @@ public class ComputeResponseTool extends Configured implements Tool
query = new HadoopFileSystemStore(fs).recall(queryInputDir, Query.class);
queryInfo = query.getQueryInfo();
- if (SystemConfiguration.getProperty("pir.allowAdHocQuerySchemas", "false").equals("true"))
+ if (SystemConfiguration.getBooleanProperty("pir.allowAdHocQuerySchemas", false))
{
qSchema = queryInfo.getQuerySchema();
}
@@ -225,9 +225,9 @@ public class ComputeResponseTool extends Configured implements Tool
queryInputDir = SystemConfiguration.getProperty("pir.queryInput");
stopListFile = SystemConfiguration.getProperty("pir.stopListFile");
- useHDFSLookupTable = SystemConfiguration.getProperty("pir.useHDFSLookupTable").equals("true");
+ useHDFSLookupTable = SystemConfiguration.isSetTrue("pir.useHDFSLookupTable");
- numReduceTasks = Integer.parseInt(SystemConfiguration.getProperty("pir.numReduceTasks", "1"));
+ numReduceTasks = SystemConfiguration.getIntProperty("pir.numReduceTasks", 1);
}
private boolean computeExpTable() throws IOException, ClassNotFoundException, InterruptedException
@@ -246,7 +246,7 @@ public class ComputeResponseTool extends Configured implements Tool
TreeMap<Integer,BigInteger> queryElements = query.getQueryElements();
ArrayList<Integer> keys = new ArrayList<>(queryElements.keySet());
- int numSplits = Integer.parseInt(SystemConfiguration.getProperty("pir.expCreationSplits", "100"));
+ int numSplits = SystemConfiguration.getIntProperty("pir.expCreationSplits", 100);
int elementsPerSplit = (int) Math.floor(queryElements.size() / numSplits);
logger.info("numSplits = " + numSplits + " elementsPerSplit = " + elementsPerSplit);
for (int i = 0; i < numSplits; ++i)
@@ -289,7 +289,7 @@ public class ComputeResponseTool extends Configured implements Tool
jobExp.setMapOutputValueClass(Text.class);
// Set the reducer and output params
- int numExpLookupPartitions = Integer.parseInt(SystemConfiguration.getProperty("pir.numExpLookupPartitions", "100"));
+ int numExpLookupPartitions = SystemConfiguration.getIntProperty("pir.numExpLookupPartitions", 100);
jobExp.setNumReduceTasks(numExpLookupPartitions);
jobExp.setReducerClass(ExpTableReducer.class);
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/responder/wideskies/spark/ComputeExpLookupTable.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/responder/wideskies/spark/ComputeExpLookupTable.java b/src/main/java/org/apache/pirk/responder/wideskies/spark/ComputeExpLookupTable.java
index 2feeca8..969b6ec 100644
--- a/src/main/java/org/apache/pirk/responder/wideskies/spark/ComputeExpLookupTable.java
+++ b/src/main/java/org/apache/pirk/responder/wideskies/spark/ComputeExpLookupTable.java
@@ -86,12 +86,12 @@ public class ComputeExpLookupTable
TreeMap<Integer,BigInteger> queryElements = query.getQueryElements();
ArrayList<Integer> keys = new ArrayList<>(queryElements.keySet());
- int numSplits = Integer.parseInt(SystemConfiguration.getProperty("pir.expCreationSplits", "100"));
+ int numSplits = SystemConfiguration.getIntProperty("pir.expCreationSplits", 100);
JavaRDD<Integer> queryHashes = sc.parallelize(keys, numSplits);
// Generate the exp table
// <queryHash, <<power>,<element^power mod N^2>>
- int numExpLookupPartitions = Integer.parseInt(SystemConfiguration.getProperty("pir.numExpLookupPartitions", "100"));
+ int numExpLookupPartitions = SystemConfiguration.getIntProperty("pir.numExpLookupPartitions", 100);
expCalculations = queryHashes.flatMapToPair(new ExpTableGenerator(bVars)).groupByKey(numExpLookupPartitions);
if (!useModExpJoin)
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/responder/wideskies/spark/ComputeResponse.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/responder/wideskies/spark/ComputeResponse.java b/src/main/java/org/apache/pirk/responder/wideskies/spark/ComputeResponse.java
index a14664c..2acd380 100644
--- a/src/main/java/org/apache/pirk/responder/wideskies/spark/ComputeResponse.java
+++ b/src/main/java/org/apache/pirk/responder/wideskies/spark/ComputeResponse.java
@@ -135,7 +135,7 @@ public class ComputeResponse
queryInput = SystemConfiguration.getProperty("pir.queryInput");
String stopListFile = SystemConfiguration.getProperty("pir.stopListFile");
- useModExpJoin = SystemConfiguration.getProperty("pir.useModExpJoin", "false").equals("true");
+ useModExpJoin = SystemConfiguration.getBooleanProperty("pir.useModExpJoin", false);
logger.info("outputFile = " + outputFile + " queryInputDir = " + queryInput + " stopListFile = " + stopListFile + " esQuery = " + esQuery
+ " esResource = " + esResource);
@@ -175,7 +175,7 @@ public class ComputeResponse
bVars.setQueryInfo(queryInfo);
QuerySchema qSchema = null;
- if (SystemConfiguration.getProperty("pir.allowAdHocQuerySchemas", "false").equals("true"))
+ if (SystemConfiguration.getBooleanProperty("pir.allowAdHocQuerySchemas", false))
{
qSchema = queryInfo.getQuerySchema();
}
@@ -191,19 +191,18 @@ public class ComputeResponse
// Set the local cache flag
bVars.setUseLocalCache(SystemConfiguration.getProperty("pir.useLocalCache", "true"));
- useHDFSLookupTable = SystemConfiguration.getProperty("pir.useHDFSLookupTable").equals("true");
+ useHDFSLookupTable = SystemConfiguration.isSetTrue("pir.useHDFSLookupTable");
// Set the hit limit variables
bVars.setLimitHitsPerSelector(Boolean.valueOf(SystemConfiguration.getProperty("pir.limitHitsPerSelector")));
bVars.setMaxHitsPerSelector(Integer.parseInt(SystemConfiguration.getProperty("pir.maxHitsPerSelector")));
// Set the number of data and column multiplication partitions
- String numDataPartsString = SystemConfiguration.getProperty("pir.numDataPartitions", "1000");
- numDataPartitions = Integer.parseInt(numDataPartsString);
- numColMultPartitions = Integer.parseInt(SystemConfiguration.getProperty("pir.numColMultPartitions", numDataPartsString));
+ numDataPartitions = SystemConfiguration.getIntProperty("pir.numDataPartitions", 1000);
+ numColMultPartitions = SystemConfiguration.getIntProperty("pir.numColMultPartitions", numDataPartitions);
// Whether or not we are performing a reduceByKey or a groupByKey->reduce for column multiplication
- colMultReduceByKey = SystemConfiguration.getProperty("pir.colMultReduceByKey", "false").equals("true");
+ colMultReduceByKey = SystemConfiguration.getBooleanProperty("pir.colMultReduceByKey", false);
// Set the expDir
bVars.setExpDir(outputDirExp);
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/responder/wideskies/standalone/Responder.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/responder/wideskies/standalone/Responder.java b/src/main/java/org/apache/pirk/responder/wideskies/standalone/Responder.java
index 9b15f3b..7883fb8 100644
--- a/src/main/java/org/apache/pirk/responder/wideskies/standalone/Responder.java
+++ b/src/main/java/org/apache/pirk/responder/wideskies/standalone/Responder.java
@@ -73,7 +73,7 @@ public class Responder
queryInfo = query.getQueryInfo();
queryType = queryInfo.getQueryType();
- if (SystemConfiguration.getProperty("pir.allowAdHocQuerySchemas", "false").equals("true"))
+ if (SystemConfiguration.getBooleanProperty("pir.allowAdHocQuerySchemas", false))
{
qSchema = queryInfo.getQuerySchema();
}
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/schema/data/partitioner/IPDataPartitioner.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/schema/data/partitioner/IPDataPartitioner.java b/src/main/java/org/apache/pirk/schema/data/partitioner/IPDataPartitioner.java
index 6f458e2..d2e63c4 100644
--- a/src/main/java/org/apache/pirk/schema/data/partitioner/IPDataPartitioner.java
+++ b/src/main/java/org/apache/pirk/schema/data/partitioner/IPDataPartitioner.java
@@ -84,7 +84,7 @@ public class IPDataPartitioner implements DataPartitioner
{
ArrayList<BigInteger> parts = new ArrayList<>();
- int numArrayElementsToReturn = Integer.parseInt(SystemConfiguration.getProperty("pir.numReturnArrayElements", "1"));
+ int numArrayElementsToReturn = SystemConfiguration.getIntProperty("pir.numReturnArrayElements", 1);
for (int i = 0; i < numArrayElementsToReturn; ++i)
{
if (elementList.size() > i) // we may have an element with a list rep that has fewer than numArrayElementsToReturn elements
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/schema/data/partitioner/PrimitiveTypePartitioner.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/schema/data/partitioner/PrimitiveTypePartitioner.java b/src/main/java/org/apache/pirk/schema/data/partitioner/PrimitiveTypePartitioner.java
index e0473f6..f8f86e9 100644
--- a/src/main/java/org/apache/pirk/schema/data/partitioner/PrimitiveTypePartitioner.java
+++ b/src/main/java/org/apache/pirk/schema/data/partitioner/PrimitiveTypePartitioner.java
@@ -438,7 +438,7 @@ public class PrimitiveTypePartitioner implements DataPartitioner
{
ArrayList<BigInteger> parts = new ArrayList<>();
- int numArrayElementsToReturn = Integer.parseInt(SystemConfiguration.getProperty("pir.numReturnArrayElements", "1"));
+ int numArrayElementsToReturn = SystemConfiguration.getIntProperty("pir.numReturnArrayElements", 1);
for (int i = 0; i < numArrayElementsToReturn; ++i)
{
if (elementList.size() > i) // we may have an element with a list rep that has fewer than numArrayElementsToReturn elements
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/test/distributed/testsuite/DistTestSuite.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/test/distributed/testsuite/DistTestSuite.java b/src/main/java/org/apache/pirk/test/distributed/testsuite/DistTestSuite.java
index 2970d43..2e3464e 100644
--- a/src/main/java/org/apache/pirk/test/distributed/testsuite/DistTestSuite.java
+++ b/src/main/java/org/apache/pirk/test/distributed/testsuite/DistTestSuite.java
@@ -347,19 +347,19 @@ public class DistTestSuite
logger.info("fileFinalResults = " + fileFinalResults.getAbsolutePath());
boolean embedSelector = false;
- if (SystemConfiguration.getProperty("pirTest.embedSelector", "false").equals("true"))
+ if (SystemConfiguration.getBooleanProperty("pirTest.embedSelector", false))
{
embedSelector = true;
}
boolean useExpLookupTable = false;
- if (SystemConfiguration.getProperty("pirTest.useExpLookupTable", "false").equals("true"))
+ if (SystemConfiguration.getBooleanProperty("pirTest.useExpLookupTable", false))
{
useExpLookupTable = true;
}
boolean useHDFSExpLookupTable = false;
- if (SystemConfiguration.getProperty("pirTest.useHDFSExpLookupTable", "false").equals("true"))
+ if (SystemConfiguration.getBooleanProperty("pirTest.useHDFSExpLookupTable", false))
{
useHDFSExpLookupTable = true;
}
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/test/utils/BaseTests.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/test/utils/BaseTests.java b/src/main/java/org/apache/pirk/test/utils/BaseTests.java
index 04e16d3..afb3144 100644
--- a/src/main/java/org/apache/pirk/test/utils/BaseTests.java
+++ b/src/main/java/org/apache/pirk/test/utils/BaseTests.java
@@ -94,7 +94,7 @@ public class BaseTests
logger.info("results:");
printResultList(results);
- if (isDistributed && SystemConfiguration.getProperty("pir.limitHitsPerSelector").equals("true"))
+ if (isDistributed && SystemConfiguration.isSetTrue("pir.limitHitsPerSelector"))
{
// 3 elements returned - one for each qname -- a.b.c.com, d.e.com, something.else
if (results.size() != 3)
@@ -494,7 +494,7 @@ public class BaseTests
values = StringUtils.jsonArrayStringToArrayList((String) dataMap.get(fieldName));
}
- int numArrayElementsToReturn = Integer.parseInt(SystemConfiguration.getProperty("pir.numReturnArrayElements", "1"));
+ int numArrayElementsToReturn = SystemConfiguration.getIntProperty("pir.numReturnArrayElements", 1);
for (int i = 0; i < numArrayElementsToReturn; ++i)
{
if (i < values.size())
@@ -521,7 +521,7 @@ public class BaseTests
ArrayList<Short> values = (ArrayList<Short>) dataMap.get(fieldName);
- int numArrayElementsToReturn = Integer.parseInt(SystemConfiguration.getProperty("pir.numReturnArrayElements", "1"));
+ int numArrayElementsToReturn = SystemConfiguration.getIntProperty("pir.numReturnArrayElements", 1);
for (int i = 0; i < numArrayElementsToReturn; ++i)
{
if (i < values.size())
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/test/utils/StandaloneQuery.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/test/utils/StandaloneQuery.java b/src/main/java/org/apache/pirk/test/utils/StandaloneQuery.java
index 089bec8..4e98f5d 100644
--- a/src/main/java/org/apache/pirk/test/utils/StandaloneQuery.java
+++ b/src/main/java/org/apache/pirk/test/utils/StandaloneQuery.java
@@ -77,15 +77,15 @@ public class StandaloneQuery
logger.info("fileQuerier = " + fileQuerier.getAbsolutePath() + " fileQuery = " + fileQuery.getAbsolutePath() + " responseFile = "
+ fileResponse.getAbsolutePath() + " fileFinalResults = " + fileFinalResults.getAbsolutePath());
- boolean embedSelector = SystemConfiguration.getProperty("pirTest.embedSelector", "false").equals("true");
- boolean useExpLookupTable = SystemConfiguration.getProperty("pirTest.useExpLookupTable", "false").equals("true");
- boolean useHDFSExpLookupTable = SystemConfiguration.getProperty("pirTest.useHDFSExpLookupTable", "false").equals("true");
+ boolean embedSelector = SystemConfiguration.getBooleanProperty("pirTest.embedSelector", false);
+ boolean useExpLookupTable = SystemConfiguration.getBooleanProperty("pirTest.useExpLookupTable", false);
+ boolean useHDFSExpLookupTable = SystemConfiguration.getBooleanProperty("pirTest.useHDFSExpLookupTable", false);
// Set the necessary objects
QueryInfo queryInfo = new QueryInfo(BaseTests.queryNum, selectors.size(), BaseTests.hashBitSize, BaseTests.hashKey, BaseTests.dataPartitionBitSize,
queryType, queryType + "_" + BaseTests.queryNum, BaseTests.paillierBitSize, useExpLookupTable, embedSelector, useHDFSExpLookupTable);
- if (SystemConfiguration.getProperty("pir.embedQuerySchema", "false").equals("true"))
+ if (SystemConfiguration.getBooleanProperty("pir.embedQuerySchema", false))
{
queryInfo.addQuerySchema(qSchema);
}
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/main/java/org/apache/pirk/utils/SystemConfiguration.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/pirk/utils/SystemConfiguration.java b/src/main/java/org/apache/pirk/utils/SystemConfiguration.java
index 9b230af..84bcc4b 100755
--- a/src/main/java/org/apache/pirk/utils/SystemConfiguration.java
+++ b/src/main/java/org/apache/pirk/utils/SystemConfiguration.java
@@ -42,7 +42,7 @@ public class SystemConfiguration
{
private static final Logger logger = LoggerFactory.getLogger(SystemConfiguration.class);
- private static final Properties props;
+ private static final Properties props = new Properties();
/**
* By default, these files should be found on the root of the classpath
@@ -55,95 +55,155 @@ public class SystemConfiguration
static
{
- props = new Properties();
initialize();
}
public static void initialize()
{
+ props.clear();
+
// First try to load the default properties file
- loadPropsFromStream(DEFAULT_PROPERTY_FILE);
+ loadPropsFromResource(DEFAULT_PROPERTY_FILE);
// Try to load props from the querier and responder property files, if they exist
- loadPropsFromStream(QUERIER_PROPERTIES_FILE);
- loadPropsFromStream(RESPONDER_PROPERTIES_FILE);
+ loadPropsFromResource(QUERIER_PROPERTIES_FILE);
+ loadPropsFromResource(RESPONDER_PROPERTIES_FILE);
// Try to load the local properties files, if they exists
loadPropsFromDir(getProperty(LOCAL_PROPERTIES_DIR));
}
/**
- * Clear the properties
+ * Gets the specified property; returns <code>null</code> if the property isn't found.
+ *
+ * @param propertyName
+ * The name of the requested property.
+ * @return The value of the property, or <code>null</code> if the property cannot be found.
*/
- public static void clearProperties()
+ public static String getProperty(String propertyName)
{
- props.clear();
+ return props.getProperty(propertyName);
}
/**
- * Gets the specified property; returns null if the property isn't found.
+ * Gets the specified property as a <code>String</code>, or the default value if the property isn't found.
*
+ * @param propertyName
+ * The name of the requested string property value.
+ * @param defaultvalue
+ * The value to return if the property is undefined.
+ * @return The value of the requested property, or the default value if the property is undefined.
*/
- public static String getProperty(String propertyName)
+ public static String getProperty(String propertyName, String defaultValue)
{
- return props.getProperty(propertyName);
+ return props.getProperty(propertyName, defaultValue);
}
/**
- * Gets the specified property; returns the defaultValue if the property isn't found.
+ * Gets the specified property as an <code>int</code>, or the default value if the property isn't found.
*
+ * @param propertyName
+ * The name of the requested int property value.
+ * @param defaultValue
+ * The value to return if the property is undefined.
+ * @return The value of the requested property, or the default value if the property is undefined.
+ * @throws NumberFormatException
+ * If the property does not contain a parsable <code>int</code> value.
*/
- public static String getProperty(String propertyName, String defaultValue)
+ public static int getIntProperty(String propertyName, int defaultValue)
{
- return props.getProperty(propertyName, defaultValue);
+ String value = props.getProperty(propertyName);
+ return (value == null) ? defaultValue : Integer.parseInt(value);
+ }
+
+ /**
+ * Gets the specified property as a <code>boolean</code>, or the default value if the property isn't defined.
+ *
+ * @param propertyName
+ * The name of the requested boolean property value.
+ * @param defaultValue
+ * The value to return if the property is undefined.
+ * @return <code>true</code> if the property is defined and has the value "true", otherwise <code>defaultValue</code>.
+ */
+ public static boolean getBooleanProperty(String propertyName, boolean defaultValue)
+ {
+ return (isSetTrue(propertyName)) ? true : defaultValue;
+ }
+
+ /**
+ * Returns <code>true</code> iff the specified boolean property value is "true".
+ * <p>
+ * If the property is not found, or it's value is not "true" then the method will return <code>false</code>.
+ *
+ * @param propertyName
+ * The name of the requested boolean property value.
+ * @return <code>true</code> if the property is defined and has the value "true", otherwise <code>false</code>.
+ */
+ public static boolean isSetTrue(String propertyName)
+ {
+ String value = props.getProperty(propertyName);
+ return "true".equals(value);
}
/**
- * Set a property
+ * Sets the property to the given value.
+ * <p>
+ * Any previous values stored at the same property name are replaced.
+ *
+ * @param propertyName
+ * The name of the property to set.
+ * @param value
+ * The property value.
*/
public static void setProperty(String propertyName, String value)
{
props.setProperty(propertyName, value);
}
+ /**
+ * Returns true iff the given property name is defined.
+ *
+ * @param propertyName
+ * The property name to test.
+ * @return <code>true</code> if the property is found in the configuration, or <code>false</code> otherwise.
+ */
public static boolean hasProperty(String propertyName)
{
return props.containsKey(propertyName);
}
/**
- * Append a property via a comma separated list
+ * Appends a property via a comma separated list
* <p>
- * If the property does not exist, it adds it
+ * If the property does not exist, it adds it.
+ *
+ * @param propertyName
+ * The property whose value is to be appended with the given value.
+ * @param value
+ * The value to be stored, or appended to the current value.
*/
- public static void appendProperty(String property, String propToAdd)
+ public static void appendProperty(String propertyName, String value)
{
- String value = props.getProperty(property);
+ String oldValue = props.getProperty(propertyName);
- if (value != null && !value.equals("none"))
+ if (oldValue != null && !oldValue.equals("none"))
{
- value += "," + propToAdd;
+ oldValue += "," + value;
}
else
{
- value = propToAdd;
+ oldValue = value;
}
- props.setProperty(property, value);
+ props.setProperty(propertyName, oldValue);
}
/**
- * Reset all properties to the default values
- */
- public static void resetProperties()
- {
- clearProperties();
- initialize();
- }
-
- /**
- * Loads the properties from local properties file in the specified directory
+ * Loads the properties from local properties file in the specified directory.
* <p>
- * Only files ending in '.properties' will be loaded
+ * All files ending in '.properties' will be loaded. The new properties are added to the current system configuration.
+ *
+ * @param dirName
+ * The directory to search for the new properties files.
*/
public static void loadPropsFromDir(String dirName)
{
@@ -166,7 +226,12 @@ public class SystemConfiguration
}
/**
- * Loads the properties from the specified file
+ * Loads the properties from the specified file.
+ * <p>
+ * The new properties are added to the current system configuration.
+ *
+ * @param file
+ * The properties file containing the system properties to add.
*/
public static void loadPropsFromFile(File file)
{
@@ -176,7 +241,6 @@ public class SystemConfiguration
{
logger.info("Loading properties file '" + file.getAbsolutePath() + "'");
props.load(stream);
- stream.close();
} catch (IOException e)
{
logger.error("Problem loading properties file '" + file.getAbsolutePath() + "'");
@@ -190,9 +254,14 @@ public class SystemConfiguration
}
/**
- * Loads the properties from the specified file on the classpath
+ * Loads the properties from the specified resource on the current classloader.
+ * <p>
+ * The new properties are added to the current system configuration.
+ *
+ * @param name
+ * The name of the resource defining the properties.
*/
- public static void loadPropsFromStream(String name)
+ public static void loadPropsFromResource(String name)
{
try (InputStream stream = SystemConfiguration.class.getClassLoader().getResourceAsStream(name))
{
@@ -200,7 +269,6 @@ public class SystemConfiguration
{
logger.info("Loading file '" + name + "'");
props.load(stream);
- stream.close();
}
else
{
http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/fc85daa9/src/test/java/org/apache/pirk/general/PaillierTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/pirk/general/PaillierTest.java b/src/test/java/org/apache/pirk/general/PaillierTest.java
index 5d1c6b2..444332d 100644
--- a/src/test/java/org/apache/pirk/general/PaillierTest.java
+++ b/src/test/java/org/apache/pirk/general/PaillierTest.java
@@ -126,7 +126,7 @@ public class PaillierTest
try
{
- int systemPrimeCertainty = Integer.parseInt(SystemConfiguration.getProperty("pir.primeCertainty", "128"));
+ int systemPrimeCertainty = SystemConfiguration.getIntProperty("pir.primeCertainty", 128);
Paillier paillier = new Paillier(3072, systemPrimeCertainty - 10);
fail("Paillier constructor did not throw PIRException for certainty less than system default of " + systemPrimeCertainty);
} catch (PIRException ignore)
@@ -226,7 +226,7 @@ public class PaillierTest
testPaillerWithKeyGenerationGeneral();
// Reset the properties
- SystemConfiguration.resetProperties();
+ SystemConfiguration.initialize();
logger.info("Ending testPaillierWithKeyGeneration: ");
}