Better error message if null encryptSalt 73/52973/2
authorMichael Vorburger <vorburger@redhat.com>
Tue, 7 Mar 2017 23:32:47 +0000 (00:32 +0100)
committerMichael Vorburger <vorburger@redhat.com>
Wed, 8 Mar 2017 02:59:51 +0000 (03:59 +0100)
If hit this in a (Karaf 4...) SFT:

[Blueprint Extender: 1] ERROR
org.apache.aries.blueprint.container.ServiceRecipe - Error retrieving
service from ServiceRecipe[name='.component-1']
org.osgi.service.blueprint.container.ComponentDefinitionException: Error
when instantiating bean encryptService of class
org.opendaylight.aaa.encrypt.AAAEncryptionServiceImpl
        at
org.apache.aries.blueprint.container.BeanRecipe.wrapAsCompDefEx(BeanRecipe.java:361)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.BeanRecipe.getInstanceFromType(BeanRecipe.java:351)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:282)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:830)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:811)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)[14:org.apache.aries.blueprint.core:1.6.2]
        at
java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_121]
        at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.ServiceRecipe.createService(ServiceRecipe.java:285)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.ServiceRecipe.internalGetService(ServiceRecipe.java:252)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.ServiceRecipe.internalCreate(ServiceRecipe.java:149)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)[14:org.apache.aries.blueprint.core:1.6.2]
        at
java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_121]
        at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:255)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:186)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:724)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:411)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:276)[14:org.apache.aries.blueprint.core:1.6.2]
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_121]
        at
java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_121]
        at
org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)[14:org.apache.aries.blueprint.core:1.6.2]
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_121]
        at
java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_121]
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)[:1.8.0_121]
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)[:1.8.0_121]
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_121]
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_121]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_121]
Caused by: java.lang.NullPointerException
        at
java.util.StringTokenizer.<init>(StringTokenizer.java:199)[:1.8.0_121]
        at
java.util.StringTokenizer.<init>(StringTokenizer.java:221)[:1.8.0_121]
        at
org.opendaylight.aaa.encrypt.AAAEncryptionServiceImpl.getEncryptionKeySalt(AAAEncryptionServiceImpl.java:152)[131:org.opendaylight.aaa.encrypt-service:0.5.0.SNAPSHOT]
        at
org.opendaylight.aaa.encrypt.AAAEncryptionServiceImpl.<init>(AAAEncryptionServiceImpl.java:49)[131:org.opendaylight.aaa.encrypt-service:0.5.0.SNAPSHOT]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)[:1.8.0_121]
        at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)[:1.8.0_121]
        at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)[:1.8.0_121]
        at
java.lang.reflect.Constructor.newInstance(Constructor.java:423)[:1.8.0_121]
        at
org.apache.aries.blueprint.utils.ReflectionUtils.newInstance(ReflectionUtils.java:331)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.BeanRecipe.newInstance(BeanRecipe.java:984)[14:org.apache.aries.blueprint.core:1.6.2]
        at
org.apache.aries.blueprint.container.BeanRecipe.getInstanceFromType(BeanRecipe.java:349)[14:org.apache.aries.blueprint.core:1.6.2]
        ... 30 more

Change-Id: I37ddaa7a9f9883f7106e68dd7725f7dce50d55d5
Signed-off-by: Michael Vorburger <vorburger@redhat.com>
aaa-encrypt-service/src/main/java/org/opendaylight/aaa/encrypt/AAAEncryptionServiceImpl.java

index 2f62074295c33b7c190af5f094c2d6405f85c41d..cd36e30633fa4b2572b2abb3df0821291d5951ea 100644 (file)
@@ -38,14 +38,17 @@ public class AAAEncryptionServiceImpl implements AAAEncryptionService {
 
     private static final Logger LOG = LoggerFactory.getLogger(AAAEncryptionServiceImpl.class);
 
-    private SecretKey key;
-    private IvParameterSpec ivspec;
-    private Cipher encryptCipher;
-    private Cipher decryptCipher;
+    private final SecretKey key;
+    private final IvParameterSpec ivspec;
+    private final Cipher encryptCipher;
+    private final Cipher decryptCipher;
 
     public AAAEncryptionServiceImpl(AaaEncryptServiceConfig module) {
         SecretKey tempKey = null;
         IvParameterSpec tempIvSpec = null;
+        if (module.getEncryptSalt() == null) {
+            throw new IllegalArgumentException("null encryptSalt in AaaEncryptServiceConfig: " + module.toString());
+        }
         final byte[] enryptionKeySalt = getEncryptionKeySalt(module.getEncryptSalt());
         try {
             final SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(module.getEncryptMethod());
@@ -148,20 +151,20 @@ public class AAAEncryptionServiceImpl implements AAAEncryptionService {
         return encData;
     }
 
-    private byte[] getEncryptionKeySalt(String encryptSalt){
+    private byte[] getEncryptionKeySalt(String encryptSalt) {
         StringTokenizer tokens = new StringTokenizer(encryptSalt, ",");
         List<Byte> saltList = new ArrayList<>();
-        while(tokens.hasMoreTokens()){
+        while (tokens.hasMoreTokens()) {
             String by = tokens.nextToken();
             saltList.add(Byte.parseByte(by.trim()));
         }
         byte salt[] = new byte[saltList.size()];
-        int i=0;
-        for(Byte b:saltList){
+        int i = 0;
+        for (Byte b : saltList) {
             salt[i] = b;
             i++;
         }
         return salt;
     }
 
-}
\ No newline at end of file
+}