Repository: gora
Updated Branches:
  refs/heads/master fb4b3552a -> a8398651d


GORA-536: Avoid calling Class#newInstance

When using reflexion use getDeclaredConstructor().newInstance()
instead of Class::newInstance because it may throw undeclared checked
exceptions.

Project: http://git-wip-us.apache.org/repos/asf/gora/repo
Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/a8398651
Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/a8398651
Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/a8398651

Branch: refs/heads/master
Commit: a8398651d0b75fe9f161496b266b43d6382399b8
Parents: fb4b355
Author: dev <carlosr...@gmail.com>
Authored: Mon May 21 23:23:39 2018 -0500
Committer: dev <carlosr...@gmail.com>
Committed: Mon May 21 23:23:39 2018 -0500

----------------------------------------------------------------------
 .../gora/accumulo/store/AccumuloStore.java      |  7 +++--
 .../gora/cassandra/store/CassandraClient.java   |  2 +-
 .../gora/cassandra/store/CassandraStore.java    |  4 +--
 .../gora/persistency/impl/BeanFactoryImpl.java  |  2 +-
 .../persistency/ws/impl/BeanFactoryWSImpl.java  |  8 +++---
 .../dynamodb/store/DynamoDBNativeStore.java     |  6 +++--
 .../goraci/chef/ChefSoftwareProvisioning.java   | 19 ++++++++------
 .../rackspace/RackspaceOrchestration.java       | 27 ++++++++++++--------
 .../gora/infinispan/store/InfinispanClient.java |  2 +-
 .../gora/infinispan/store/InfinispanStore.java  |  2 +-
 10 files changed, 47 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/gora/blob/a8398651/gora-accumulo/src/main/java/org/apache/gora/accumulo/store/AccumuloStore.java
----------------------------------------------------------------------
diff --git 
a/gora-accumulo/src/main/java/org/apache/gora/accumulo/store/AccumuloStore.java 
b/gora-accumulo/src/main/java/org/apache/gora/accumulo/store/AccumuloStore.java
index 3c5ae14..f35aac9 100644
--- 
a/gora-accumulo/src/main/java/org/apache/gora/accumulo/store/AccumuloStore.java
+++ 
b/gora-accumulo/src/main/java/org/apache/gora/accumulo/store/AccumuloStore.java
@@ -18,6 +18,7 @@ package org.apache.gora.accumulo.store;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
 import java.net.InetAddress;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
@@ -374,7 +375,7 @@ public class AccumuloStore<K,T extends PersistentBase> 
extends DataStoreBase<K,T
       if (mapping.encoder == null || "".equals(mapping.encoder)) {
         encoder = new BinaryEncoder();
       } else {
-          encoder = (Encoder) 
getClass().getClassLoader().loadClass(mapping.encoder).newInstance();
+          encoder = (Encoder) 
getClass().getClassLoader().loadClass(mapping.encoder).getDeclaredConstructor().newInstance();
       }
 
       AuthenticationToken token = new PasswordToken(password);
@@ -391,7 +392,9 @@ public class AccumuloStore<K,T extends PersistentBase> 
extends DataStoreBase<K,T
         createSchema();
       
     } catch (IOException | InstantiationException | IllegalAccessException |
-             ClassNotFoundException | AccumuloException | 
AccumuloSecurityException e) {
+             ClassNotFoundException | AccumuloException | 
AccumuloSecurityException |
+             NoSuchMethodException | SecurityException | 
IllegalArgumentException | 
+             InvocationTargetException e) {
       throw new GoraException(e);
     }
   }

http://git-wip-us.apache.org/repos/asf/gora/blob/a8398651/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java
----------------------------------------------------------------------
diff --git 
a/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java
 
b/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java
index f672884..aeda495 100644
--- 
a/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java
+++ 
b/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraClient.java
@@ -528,7 +528,7 @@ public class CassandraClient {
 
   private void registerCustomCodecs(List<String> codecs) throws Exception {
     for (String codec : codecs) {
-      
this.cluster.getConfiguration().getCodecRegistry().register((TypeCodec<?>) 
Class.forName(codec).newInstance());
+      
this.cluster.getConfiguration().getCodecRegistry().register((TypeCodec<?>) 
Class.forName(codec).getDeclaredConstructor().newInstance());
     }
   }
 

http://git-wip-us.apache.org/repos/asf/gora/blob/a8398651/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java
----------------------------------------------------------------------
diff --git 
a/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java
 
b/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java
index f0514ad..7294bce 100644
--- 
a/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java
+++ 
b/gora-cassandra/src/main/java/org/apache/gora/cassandra/store/CassandraStore.java
@@ -166,7 +166,7 @@ public class CassandraStore<K, T extends Persistent> 
implements DataStore<K, T>
       if (beanFactory != null) {
         return beanFactory.newKey();
       } else {
-        return keyClass.newInstance();
+        return keyClass.getDeclaredConstructor().newInstance();
       }
     } catch (Exception e) {
       throw new GoraException("Error while instantiating a key: " + 
e.getMessage(), e);
@@ -183,7 +183,7 @@ public class CassandraStore<K, T extends Persistent> 
implements DataStore<K, T>
       if (beanFactory != null) {
         return this.beanFactory.newPersistent();
       } else {
-        return persistentClass.newInstance();
+        return persistentClass.getDeclaredConstructor().newInstance();
       }
     } catch (Exception e) {
       throw new GoraException("Error while instantiating a key: " + 
e.getMessage(), e);

http://git-wip-us.apache.org/repos/asf/gora/blob/a8398651/gora-core/src/main/java/org/apache/gora/persistency/impl/BeanFactoryImpl.java
----------------------------------------------------------------------
diff --git 
a/gora-core/src/main/java/org/apache/gora/persistency/impl/BeanFactoryImpl.java 
b/gora-core/src/main/java/org/apache/gora/persistency/impl/BeanFactoryImpl.java
index f2208eb..4582878 100644
--- 
a/gora-core/src/main/java/org/apache/gora/persistency/impl/BeanFactoryImpl.java
+++ 
b/gora-core/src/main/java/org/apache/gora/persistency/impl/BeanFactoryImpl.java
@@ -77,7 +77,7 @@ public class BeanFactoryImpl<K, T extends Persistent> 
implements BeanFactory<K,
   
   @Override
   public K newKey() throws Exception {
-    return keyClass.newInstance();
+    return keyClass.getDeclaredConstructor().newInstance();
   }
  
   @Override

http://git-wip-us.apache.org/repos/asf/gora/blob/a8398651/gora-core/src/main/java/org/apache/gora/persistency/ws/impl/BeanFactoryWSImpl.java
----------------------------------------------------------------------
diff --git 
a/gora-core/src/main/java/org/apache/gora/persistency/ws/impl/BeanFactoryWSImpl.java
 
b/gora-core/src/main/java/org/apache/gora/persistency/ws/impl/BeanFactoryWSImpl.java
index bd8b676..5c1d88c 100644
--- 
a/gora-core/src/main/java/org/apache/gora/persistency/ws/impl/BeanFactoryWSImpl.java
+++ 
b/gora-core/src/main/java/org/apache/gora/persistency/ws/impl/BeanFactoryWSImpl.java
@@ -19,6 +19,7 @@
 package org.apache.gora.persistency.ws.impl;
 
 import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 
 import org.apache.gora.persistency.BeanFactory;
 import org.apache.gora.persistency.Persistent;
@@ -98,7 +99,7 @@ public class BeanFactoryWSImpl<K, T extends Persistent> 
implements BeanFactory<K
   public K newKey() throws Exception {
     // TODO this method should be checked to see how object states will be 
managed
     if(isKeyPersistent)
-      return keyClass.newInstance();
+      return keyClass.getDeclaredConstructor().newInstance();
     else if(keyConstructor == null) {
       throw new RuntimeException("Key class does not have a no-arg 
constructor");
     }
@@ -112,8 +113,9 @@ public class BeanFactoryWSImpl<K, T extends Persistent> 
implements BeanFactory<K
    */
   public T newPersistent() {
     try {
-      return persistentClass.newInstance();
-    } catch (InstantiationException | IllegalAccessException e) {
+      return persistentClass.getDeclaredConstructor().newInstance();
+    } catch (InstantiationException | IllegalAccessException | 
IllegalArgumentException |
+            InvocationTargetException | NoSuchMethodException | 
SecurityException e) {
       LOG.error(e.getMessage());
       throw new RuntimeException(e);
     }

http://git-wip-us.apache.org/repos/asf/gora/blob/a8398651/gora-dynamodb/src/main/java/org/apache/gora/dynamodb/store/DynamoDBNativeStore.java
----------------------------------------------------------------------
diff --git 
a/gora-dynamodb/src/main/java/org/apache/gora/dynamodb/store/DynamoDBNativeStore.java
 
b/gora-dynamodb/src/main/java/org/apache/gora/dynamodb/store/DynamoDBNativeStore.java
index ba3efbb..64783c9 100644
--- 
a/gora-dynamodb/src/main/java/org/apache/gora/dynamodb/store/DynamoDBNativeStore.java
+++ 
b/gora-dynamodb/src/main/java/org/apache/gora/dynamodb/store/DynamoDBNativeStore.java
@@ -26,7 +26,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
 
-import org.apache.commons.lang.NullArgumentException;
 import org.apache.gora.dynamodb.query.DynamoDBKey;
 import org.apache.gora.dynamodb.query.DynamoDBQuery;
 import org.apache.gora.dynamodb.query.DynamoDBResult;
@@ -191,13 +190,16 @@ public class DynamoDBNativeStore<K, T extends Persistent> 
extends
   public T newPersistent() throws GoraException {
     T obj = null;
     try {
-      obj = persistentClass.newInstance();
+      obj = persistentClass.getDeclaredConstructor().newInstance();
     } catch (InstantiationException e) {
       LOG.error("Error instantiating " + persistentClass.getCanonicalName(), 
e);
       throw new GoraException(e);
     } catch (IllegalAccessException e) {
       LOG.error("Error instantiating " + persistentClass.getCanonicalName(),e 
);
       throw new GoraException(e);
+    } catch (NoSuchMethodException | InvocationTargetException | 
IllegalArgumentException | SecurityException e) {
+      LOG.error("Error instantiating " + persistentClass.getCanonicalName(),e 
);
+      throw new GoraException(e);
     }
     return obj;
   }

http://git-wip-us.apache.org/repos/asf/gora/blob/a8398651/gora-goraci/src/main/java/org/apache/gora/goraci/chef/ChefSoftwareProvisioning.java
----------------------------------------------------------------------
diff --git 
a/gora-goraci/src/main/java/org/apache/gora/goraci/chef/ChefSoftwareProvisioning.java
 
b/gora-goraci/src/main/java/org/apache/gora/goraci/chef/ChefSoftwareProvisioning.java
index a27ef0e..0e548e3 100644
--- 
a/gora-goraci/src/main/java/org/apache/gora/goraci/chef/ChefSoftwareProvisioning.java
+++ 
b/gora-goraci/src/main/java/org/apache/gora/goraci/chef/ChefSoftwareProvisioning.java
@@ -51,6 +51,7 @@ import com.google.common.base.Charsets;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.io.Files;
 import com.google.inject.Module;
+import java.lang.reflect.InvocationTargetException;
 
 /**
  *This class contains all of the Chef software provisioning code required to
@@ -80,15 +81,17 @@ public class ChefSoftwareProvisioning {
   public ChefSoftwareProvisioning() {
   }
   
-  private static void performChefComputeServiceBootstrapping(Properties 
properties) throws IOException, InstantiationException, IllegalAccessException {
+  private static void performChefComputeServiceBootstrapping(Properties 
properties) throws 
+          IOException, InstantiationException, IllegalAccessException, 
+          NoSuchMethodException, IllegalArgumentException, 
InvocationTargetException {
     // Get the credentials that will be used to authenticate to the Chef server
-    String rsContinent = DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), 
+    String rsContinent = DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), 
         RS_CONTINENT, "rackspace-cloudservers-us");
-    String rsUser = DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), RS_USERNAME, "asf-gora");
-    String rsApiKey = DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), RS_APIKEY, null);
-    String rsRegion = DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), RS_REGION, "DFW");
-    String client = DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), CHEF_CLIENT, System.getProperty("user.name"));
-    String organization = DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), CHEF_ORGANIZATION, null);
+    String rsUser = DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), RS_USERNAME, "asf-gora");
+    String rsApiKey = DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), RS_APIKEY, null);
+    String rsRegion = DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), RS_REGION, "DFW");
+    String client = DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), CHEF_CLIENT, 
System.getProperty("user.name"));
+    String organization = DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), CHEF_ORGANIZATION, null);
     String pemFile = System.getProperty("user.home") + "/.chef/" + client + 
".pem";
     String credential = Files.toString(new File(pemFile), Charsets.UTF_8);
 
@@ -169,7 +172,7 @@ public class ChefSoftwareProvisioning {
    * @throws IllegalAccessException 
    * @throws InstantiationException 
    */
-  public static void main(String[] args) throws InstantiationException, 
IllegalAccessException, IOException {
+  public static void main(String[] args) throws InstantiationException, 
IllegalAccessException, IOException, NoSuchMethodException, 
IllegalArgumentException, InvocationTargetException {
     Properties props = DataStoreFactory.createProps();
     ChefSoftwareProvisioning.performChefComputeServiceBootstrapping(props);
   }

http://git-wip-us.apache.org/repos/asf/gora/blob/a8398651/gora-goraci/src/main/java/org/apache/gora/goraci/rackspace/RackspaceOrchestration.java
----------------------------------------------------------------------
diff --git 
a/gora-goraci/src/main/java/org/apache/gora/goraci/rackspace/RackspaceOrchestration.java
 
b/gora-goraci/src/main/java/org/apache/gora/goraci/rackspace/RackspaceOrchestration.java
index 29b8e8b..f02e061 100644
--- 
a/gora-goraci/src/main/java/org/apache/gora/goraci/rackspace/RackspaceOrchestration.java
+++ 
b/gora-goraci/src/main/java/org/apache/gora/goraci/rackspace/RackspaceOrchestration.java
@@ -59,6 +59,7 @@ import com.google.inject.Module;
 
 import static com.google.common.collect.Iterables.any;
 import static com.google.common.collect.Iterables.concat;
+import java.lang.reflect.InvocationTargetException;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -116,22 +117,26 @@ public class RackspaceOrchestration<K> {
    * @throws IllegalAccessException 
    * @throws InstantiationException 
    * @throws NoSuchElementException 
+   * @throws java.io.IOException 
+   * @throws java.lang.NoSuchMethodException 
+   * @throws java.lang.reflect.InvocationTargetException 
    */
-  public static void main(String[] args) throws NoSuchElementException, 
InstantiationException, IllegalAccessException, IOException {
+  public static void main(String[] args) throws NoSuchElementException, 
InstantiationException, IllegalAccessException, IOException, 
NoSuchMethodException, InvocationTargetException {
     Properties properties = DataStoreFactory.createProps();
     performRackspaceOrchestration(properties);
   }
   
-  private static void performRackspaceOrchestration(Properties properties) 
throws InstantiationException, IllegalAccessException, IOException {
-    rsContinent = DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), 
+  private static void performRackspaceOrchestration(Properties properties) 
throws InstantiationException, 
+          IllegalAccessException, IOException, NoSuchMethodException, 
IllegalArgumentException, InvocationTargetException {
+    rsContinent = DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), 
         RS_CONTINENT, "rackspace-cloudservers-us");
-    rsUser = DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), RS_USERNAME, "asf-gora");
-    rsApiKey = DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), RS_APIKEY, null);
-    rsRegion = DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), RS_REGION, "DFW");
-    String rsFlavourId = DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), RS_FLAVORID, null);
-    String rsImageId = DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), RS_IMAGEID, null);
-    int numServers = 
Integer.parseInt(DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), RS_NUM_SERVERS, "10"));
-    String serverName = DataStoreFactory.findProperty(properties, 
MemStore.class.newInstance(), RS_SERVERNAME, "goraci_test_server");
+    rsUser = DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), RS_USERNAME, "asf-gora");
+    rsApiKey = DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), RS_APIKEY, null);
+    rsRegion = DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), RS_REGION, "DFW");
+    String rsFlavourId = DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), RS_FLAVORID, null);
+    String rsImageId = DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), RS_IMAGEID, null);
+    int numServers = 
Integer.parseInt(DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), RS_NUM_SERVERS, "10"));
+    String serverName = DataStoreFactory.findProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), RS_SERVERNAME, 
"goraci_test_server");
 
     novaApi = ContextBuilder.newBuilder(rsContinent).credentials(rsUser, 
rsApiKey).buildApi(NovaApi.class);
     LOG.info("Defining Rackspace cloudserver continent as: {}, and region: 
{}.", rsContinent, rsRegion);
@@ -150,7 +155,7 @@ public class RackspaceOrchestration<K> {
     File keyPairFile = null;
     String publicKey = null;
     //Use your own .pub key which should be on CP
-    if (DataStoreFactory.findBooleanProperty(properties, 
MemStore.class.newInstance(), RS_PUBKEY, "true")) {
+    if (DataStoreFactory.findBooleanProperty(properties, 
MemStore.class.getDeclaredConstructor().newInstance(), RS_PUBKEY, "true")) {
       keyPairFile = new File("~/.ssh/id_rsa.pub");
       LOG.info("Uploading local public key from ~/.ssh/id_rsa.pub to 
Rackspace...");
     } else {

http://git-wip-us.apache.org/repos/asf/gora/blob/a8398651/gora-infinispan/src/main/java/org/apache/gora/infinispan/store/InfinispanClient.java
----------------------------------------------------------------------
diff --git 
a/gora-infinispan/src/main/java/org/apache/gora/infinispan/store/InfinispanClient.java
 
b/gora-infinispan/src/main/java/org/apache/gora/infinispan/store/InfinispanClient.java
index 617e2b2..438169a 100644
--- 
a/gora-infinispan/src/main/java/org/apache/gora/infinispan/store/InfinispanClient.java
+++ 
b/gora-infinispan/src/main/java/org/apache/gora/infinispan/store/InfinispanClient.java
@@ -96,7 +96,7 @@ public class InfinispanClient<K, T extends PersistentBase> 
implements Configurab
 
   public synchronized void createSchema() throws GoraException {
     try {
-      Support.registerSchema(cacheManager, 
persistentClass.newInstance().getSchema());
+      Support.registerSchema(cacheManager, 
persistentClass.getConstructor().newInstance().getSchema());
     } catch (Exception e) {
       throw new GoraException(e);
     }

http://git-wip-us.apache.org/repos/asf/gora/blob/a8398651/gora-infinispan/src/main/java/org/apache/gora/infinispan/store/InfinispanStore.java
----------------------------------------------------------------------
diff --git 
a/gora-infinispan/src/main/java/org/apache/gora/infinispan/store/InfinispanStore.java
 
b/gora-infinispan/src/main/java/org/apache/gora/infinispan/store/InfinispanStore.java
index 9ac1f56..c65c651 100644
--- 
a/gora-infinispan/src/main/java/org/apache/gora/infinispan/store/InfinispanStore.java
+++ 
b/gora-infinispan/src/main/java/org/apache/gora/infinispan/store/InfinispanStore.java
@@ -91,7 +91,7 @@ public class InfinispanStore<K, T extends PersistentBase> 
extends DataStoreBase<
           + keyClass.getCanonicalName()
           + ", persistent class: "
           + persistentClass.getCanonicalName());
-      schema = persistentClass.newInstance().getSchema();
+      schema = 
persistentClass.getDeclaredConstructor().newInstance().getSchema();
 
       splitSize = Integer.valueOf(
           properties.getProperty( BUFFER_LIMIT_READ_NAME,

Reply via email to