This is an automated email from the ASF dual-hosted git repository.

pradeep pushed a commit to branch RANGER-5028_master
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit 3a4b050bdc446c8fd1ed1b377a75eb73b031cd00
Author: Pradeep AgrawaL <[email protected]>
AuthorDate: Tue Dec 10 16:50:23 2024 +0530

    RANGER-5028: credentialbuilder module: update for code readability 
improvement
---
 credentialbuilder/pom.xml                          |    4 +
 .../ranger/credentialapi/CredentialReader.java     |  132 +--
 .../org/apache/ranger/credentialapi/buildks.java   | 1064 ++++++++++----------
 .../ranger/credentialapi/TestCredentialReader.java |   16 +-
 .../apache/ranger/credentialapi/Testbuildks.java   |   35 +-
 dev-support/checkstyle-suppressions.xml            |    2 +-
 6 files changed, 620 insertions(+), 633 deletions(-)

diff --git a/credentialbuilder/pom.xml b/credentialbuilder/pom.xml
index cb59b7bf5..ee4ed5d25 100644
--- a/credentialbuilder/pom.xml
+++ b/credentialbuilder/pom.xml
@@ -27,6 +27,10 @@
     <packaging>jar</packaging>
     <name>Credential Builder</name>
     <description>Credential Builder for non-hadoop java codebase</description>
+    <properties>
+        <checkstyle.failOnViolation>true</checkstyle.failOnViolation>
+        <checkstyle.skip>false</checkstyle.skip>
+    </properties>
     <dependencies>
         <dependency>
             <groupId>com.fasterxml.woodstox</groupId>
diff --git 
a/credentialbuilder/src/main/java/org/apache/ranger/credentialapi/CredentialReader.java
 
b/credentialbuilder/src/main/java/org/apache/ranger/credentialapi/CredentialReader.java
index 679b5721d..8a8c8e2ab 100644
--- 
a/credentialbuilder/src/main/java/org/apache/ranger/credentialapi/CredentialReader.java
+++ 
b/credentialbuilder/src/main/java/org/apache/ranger/credentialapi/CredentialReader.java
@@ -17,9 +17,7 @@
  * under the License.
  */
 
- package org.apache.ranger.credentialapi;
-import java.util.ArrayList;
-import java.util.List;
+package org.apache.ranger.credentialapi;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hadoop.conf.Configuration;
@@ -27,70 +25,74 @@ import org.apache.hadoop.security.alias.CredentialProvider;
 import org.apache.hadoop.security.alias.CredentialProviderFactory;
 import org.apache.hadoop.security.alias.JavaKeyStoreProvider;
 
-public class CredentialReader {
+import java.util.ArrayList;
+import java.util.List;
 
-  public static String getDecryptedString(String 
CrendentialProviderPath,String alias, String storeType) {
-         String credential=null;
-         try{
-                 if(CrendentialProviderPath==null || alias==null){
-                         return null;
-                 }                             
-                 char[] pass = null;
-                 Configuration conf = new Configuration();
-                 String 
crendentialProviderPrefixJceks=JavaKeyStoreProvider.SCHEME_NAME + "://file";
-                 String 
crendentialProviderPrefixLocalJceks="localjceks://file";
-                 
crendentialProviderPrefixJceks=crendentialProviderPrefixJceks.toLowerCase();
+public class CredentialReader {
+    private CredentialReader() {
+    }
 
-                 String crendentialProviderPrefixBcfks = "bcfks" + "://file";
-                 String crendentialProviderPrefixLocalBcfks= "localbcfks" + 
"://file";
-                 
crendentialProviderPrefixBcfks=crendentialProviderPrefixBcfks.toLowerCase();
-                 
crendentialProviderPrefixLocalBcfks=crendentialProviderPrefixLocalBcfks.toLowerCase();
+    public static String getDecryptedString(String credentialProviderPath, 
String alias, String storeType) {
+        String credential = null;
+        try {
+            if (credentialProviderPath == null || alias == null) {
+                return null;
+            }
+            char[] pass = null;
+            Configuration conf = new Configuration();
+            String crendentialProviderPrefixJceks = 
JavaKeyStoreProvider.SCHEME_NAME + "://file";
+            String crendentialProviderPrefixLocalJceks = "localjceks://file";
+            crendentialProviderPrefixJceks = 
crendentialProviderPrefixJceks.toLowerCase();
 
-                 CrendentialProviderPath=CrendentialProviderPath.trim();
-                 alias=alias.trim();
-                 
if(CrendentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixJceks)
 ||
-                                 
CrendentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixLocalJceks)
 ||
-                                 
CrendentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixBcfks)
 ||
-                                 
CrendentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixLocalBcfks)){
-                         
conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
-                                          //UserProvider.SCHEME_NAME + ":///," 
+
-                         CrendentialProviderPath);
-                 }else{
-                         if(CrendentialProviderPath.startsWith("/")){
-                                if(StringUtils.equalsIgnoreCase(storeType, 
"bcfks")) {
-                                        
conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH, 
CrendentialProviderPath);
-                                } else {
-                                        
conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
-                                                        
//UserProvider.SCHEME_NAME + ":///," +
-                                                        
JavaKeyStoreProvider.SCHEME_NAME + "://file" + CrendentialProviderPath);
-                                }
+            String crendentialProviderPrefixBcfks = "bcfks" + "://file";
+            String crendentialProviderPrefixLocalBcfks = "localbcfks" + 
"://file";
+            crendentialProviderPrefixBcfks = 
crendentialProviderPrefixBcfks.toLowerCase();
+            crendentialProviderPrefixLocalBcfks = 
crendentialProviderPrefixLocalBcfks.toLowerCase();
 
-                         }else{
-                                 
conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
-                                                  //UserProvider.SCHEME_NAME + 
":///," +
-                                                 
JavaKeyStoreProvider.SCHEME_NAME + "://file/" + CrendentialProviderPath);
-                         }
-                 }
-                 List<CredentialProvider> providers = 
CredentialProviderFactory.getProviders(conf);
-                 List<String> aliasesList=new ArrayList<String>();
-                 CredentialProvider.CredentialEntry credEntry=null;
-                 for(CredentialProvider provider: providers) {
-              //System.out.println("Credential Provider :" + provider);
-                         aliasesList=provider.getAliases();
-                         if(aliasesList!=null && 
aliasesList.contains(alias.toLowerCase())){
-                                 credEntry=null;
-                                 credEntry= 
provider.getCredentialEntry(alias.toLowerCase());
-                                 pass = credEntry.getCredential();
-                                 if(pass!=null && pass.length>0){
-                                         credential=String.valueOf(pass);
-                                         break;
-                                 }                             
-                         }
-                 }
-         }catch(Exception ex){
-                 ex.printStackTrace();
-                 credential=null;
-         }
-         return credential;
-  }
+            credentialProviderPath = credentialProviderPath.trim();
+            alias = alias.trim();
+            if 
(credentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixJceks)
 ||
+                    
credentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixLocalJceks)
 ||
+                    
credentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixBcfks) 
||
+                    
credentialProviderPath.toLowerCase().startsWith(crendentialProviderPrefixLocalBcfks))
 {
+                conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
+                        //UserProvider.SCHEME_NAME + ":///," +
+                        credentialProviderPath);
+            } else {
+                if (credentialProviderPath.startsWith("/")) {
+                    if (StringUtils.equalsIgnoreCase(storeType, "bcfks")) {
+                        
conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH, 
credentialProviderPath);
+                    } else {
+                        
conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
+                                //UserProvider.SCHEME_NAME + ":///," +
+                                JavaKeyStoreProvider.SCHEME_NAME + "://file" + 
credentialProviderPath);
+                    }
+                } else {
+                    
conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
+                            //UserProvider.SCHEME_NAME + ":///," +
+                            JavaKeyStoreProvider.SCHEME_NAME + "://file/" + 
credentialProviderPath);
+                }
+            }
+            List<CredentialProvider> providers = 
CredentialProviderFactory.getProviders(conf);
+            List<String> aliasesList = new ArrayList<String>();
+            CredentialProvider.CredentialEntry credEntry = null;
+            for (CredentialProvider provider : providers) {
+                //System.out.println("Credential Provider :" + provider);
+                aliasesList = provider.getAliases();
+                if (aliasesList != null && 
aliasesList.contains(alias.toLowerCase())) {
+                    credEntry = null;
+                    credEntry = 
provider.getCredentialEntry(alias.toLowerCase());
+                    pass = credEntry.getCredential();
+                    if (pass != null && pass.length > 0) {
+                        credential = String.valueOf(pass);
+                        break;
+                    }
+                }
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            credential = null;
+        }
+        return credential;
+    }
 }
diff --git 
a/credentialbuilder/src/main/java/org/apache/ranger/credentialapi/buildks.java 
b/credentialbuilder/src/main/java/org/apache/ranger/credentialapi/buildks.java
index 4ee7080cf..44819fb07 100644
--- 
a/credentialbuilder/src/main/java/org/apache/ranger/credentialapi/buildks.java
+++ 
b/credentialbuilder/src/main/java/org/apache/ranger/credentialapi/buildks.java
@@ -17,7 +17,12 @@
  * under the License.
  */
 
- package org.apache.ranger.credentialapi;
+package org.apache.ranger.credentialapi;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.security.alias.CredentialShell;
+import org.apache.hadoop.util.GenericOptionsParser;
+
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
@@ -25,555 +30,534 @@ import java.io.InputStreamReader;
 import java.lang.reflect.Field;
 import java.security.KeyStore;
 import java.util.Arrays;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.security.alias.CredentialShell;
-import org.apache.hadoop.util.GenericOptionsParser;
 
 public class buildks {
-       public static void main(String[] args) {
-               buildks buildksOBJ=new buildks();
-               String command=null;
-               try{
-                       if(args!=null && args.length>=3){
-                               command=args[0];
-                               if(command!=null && !command.trim().isEmpty()){
-                                       if(command.equalsIgnoreCase("create")){
-                                               
buildksOBJ.createCredential(args);
-                                       }else 
if(command.equalsIgnoreCase("list")){
-                                               buildksOBJ.listCredential(args);
-                                       }else{
-                                               System.out.println(command +" 
is not supported in current version of CredentialBuilder API.");
-                                               System.exit(1);
-                                       }
-                               }
-                       }else{
-                               System.out.println("Invalid Command line 
argument.");
-                               System.exit(1);
-                       }
-               }catch(Exception ex){
-                       ex.printStackTrace();
-                       System.exit(1);
-               }
-       }
-       
-       public int createCredential(String args[]){
-               int returnCode=-1;
-               String command=null;
-       String alias=null;
-       String valueOption=null;
-       String credential=null;
-       String providerOption=null;
-       String providerPath=null;
-       String tempCredential=null;
-       String storeTypeOption="storeType";
-               String storeType= KeyStore.getDefaultType();
-               try{                            
-               if(args!=null && (args.length == 6 || args.length==8))
-               {
-                       command=args[0];
-                       alias=args[1];
-                       valueOption=args[2];
-                       credential=args[3];
-                       providerOption=args[4];
-                       providerPath=args[5];
-                       if (args.length == 8) {
-                                       storeTypeOption = args[6];
-                                       storeType = args[7];
-                               }
-                               
if(!isValidCreateCommand(command,alias,valueOption,credential,providerOption,providerPath,storeTypeOption,storeType)){
-                               return returnCode;
-                               }
-                               deleteInvalidKeystore(providerPath);
-                       
tempCredential=CredentialReader.getDecryptedString(providerPath, alias, 
storeType);
-               }else{
-                       return returnCode;
-               }
-               
-               if(tempCredential==null){
-                       returnCode=createKeyStore(args);
-               }else{
-                       try{
-                               System.out.println("The alias " + alias + " 
already exists!! Will try to delete first.");
-                               boolean isSilentMode = true;
-                               String argsDelete[]=new String[4];
-                               argsDelete[0]="delete";
-                               argsDelete[1]=alias;
-                               argsDelete[2]=providerOption;
-                               argsDelete[3]=providerPath;
-                               returnCode=deleteCredential(argsDelete, 
isSilentMode);
-                               if(returnCode==0){
-                               returnCode=createKeyStore(args);
-                       }
-                       }catch(Exception ex){
-                               returnCode=-1;
-                       }
-               }
-           }catch(Exception ex){
-               ex.printStackTrace();
-       }
-               return returnCode;
-       }       
-       
-       public int createKeyStore(String args[]){
-               int returnCode=-1;
-               try{
-               String command=null;
-               String alias=null;
-               String valueOption=null;
-               String credential=null;
-               String providerOption=null;
-               String providerPath=null;
-               String storeTypeOption="storeType";
-               String storeType=KeyStore.getDefaultType();
-               if(args!=null && (args.length == 6 || args.length==8))
-               {
-                       command=args[0];
-                       alias=args[1];
-                       valueOption=args[2];
-                       credential=args[3];
-                       providerOption=args[4];
-                       providerPath=args[5];
-                       if (args.length == 8) {
-                                       storeTypeOption = args[6];
-                                       storeType = args[7];
-                               }
-                               
if(!isValidCreateCommand(command,alias,valueOption,credential,providerOption,providerPath,storeTypeOption,storeType)){
-                               return returnCode;
-                       }                       
-                       displayCommand(args);
-               }else{
-                       return returnCode;
-               }               
-               
-               CredentialShell cs = new CredentialShell();
-               Configuration conf = new Configuration();       
-               //parse argument
-               GenericOptionsParser parser = new GenericOptionsParser(conf, 
args);
-               //set the configuration back, so that Tool can configure itself
-               cs.setConf(conf);
-               //get valid and remaining argument
-               String[] toolArgs = parser.getRemainingArgs();
-               //execute command in CredentialShell
-                       // int i = 0;
-                       //  for(String s : toolArgs) {
-                       //              System.out.println("TooArgs [" + i + "] 
= [" + s + "]");
-                   //          i++;
-                       // }
-                       String[] finalArgs = Arrays.copyOfRange(toolArgs, 0, 6);
-                       returnCode= cs.run(finalArgs);
-               //if response code is zero then success else failure            
-               }catch(IOException ex){
-               ex.printStackTrace();
-       } catch(Exception ex){
-               ex.printStackTrace();
-       }
-               return returnCode;
-       }
-       public int createCredentialFromUserInput(){
-               int returnCode=-1;
-               try{
-                       String[] args=null;
-               String command=null;
-               String alias=null;
-               String valueOption=null;
-               String credential=null;
-               String providerOption=null;
-               String providerPath=null;
-               String storeTypeOption=null;
-               String storeType=null;
-               //below code can ask user to input if command line input fails  
                
-               System.out.println("Enter Alias Name:");
-               BufferedReader bufferRead = new BufferedReader(new 
InputStreamReader(System.in));                       
-               alias = bufferRead.readLine();
-               System.out.println("Enter password:");
-               credential = bufferRead.readLine();
-               System.out.println("Enter .jceks output file name with path:");
-               providerPath = bufferRead.readLine();
-                       if(providerPath!=null && !providerPath.trim().isEmpty() 
&&
-                                       
(!providerPath.startsWith("localjceks://file")&&!providerPath.startsWith("jceks://file")
 &&
-                                       
!providerPath.startsWith("localbcfks://file")&&!providerPath.startsWith("bcfks://file")))
-                       {
-                       if(providerPath.startsWith("/")){
-                                       
providerPath="jceks://file"+providerPath;
-                               }else{
-                                       
providerPath="jceks://file/"+providerPath;
-                               }
-               }                       
-               command="create";
-               valueOption="-value";
-               providerOption="-provider";
-                       
if(!isValidCreateCommand(command,alias,valueOption,credential,providerOption,providerPath,storeTypeOption,storeType)){
-                       return returnCode;
-               }
-               args=new String[6];
-               args[0]=command;
-               args[1]=alias;
-               args[2]=valueOption;
-               args[3]=credential;
-               args[4]=providerOption;
-               args[5]=providerPath;                           
-               CredentialShell cs = new CredentialShell();
-               Configuration conf = new Configuration();       
-               //parse argument
-               GenericOptionsParser parser = new GenericOptionsParser(conf, 
args);
-               //set the configuration back, so that Tool can configure itself
-               cs.setConf(conf);
-               //get valid and remaining argument
-               String[] toolArgs = parser.getRemainingArgs();                  
-               //execute command in CredentialShell
-               returnCode= cs.run(toolArgs);
-               //if response code is zero then success else failure            
-               //System.out.println("Response Code:"+returnCode);              
-               }catch(IOException ex){
-               ex.printStackTrace();
-       } catch(Exception ex){
-               ex.printStackTrace();
-       }
-               return returnCode;
-       }       
-       
-       public int listCredential(String args[]){
-               int returnCode=-1;
-               String command=null;
-               String providerOption=null;
-               String providerPath=null;
-               String storeType = KeyStore.getDefaultType();
-               try{                            
-               if(args!=null && args.length==3)
-               {
-                               command=args[0];
-                               providerOption=args[1];
-                               providerPath=args[2];
-                               
if(!isValidListCommand(command,providerOption,providerPath, storeType)){
-                                       return returnCode;
-                               }
-                       //display command which need to be executed or entered
-                       displayCommand(args);
-               }else{
-                       return returnCode;
-               }               
-               CredentialShell cs = new CredentialShell();
-               Configuration conf = new Configuration();       
-               //parse argument
-               GenericOptionsParser parser = new GenericOptionsParser(conf, 
args);
-               //set the configuration back, so that Tool can configure itself
-               cs.setConf(conf);
-               //get valid and remaining argument
-               String[] toolArgs = parser.getRemainingArgs();                  
-               //execute command in CredentialShell
-               returnCode= cs.run(toolArgs);
-               //if response code is zero then success else failure            
-               //System.out.println("Response Code:"+returnCode);              
-               }catch(IOException ex){
-               ex.printStackTrace();
-       } catch(Exception ex){
-               ex.printStackTrace();
-       }
-               return returnCode;
-       }       
-       
-       public int deleteCredential(String args[], boolean isSilentMode){
-               int returnCode=-1;
-               try{                            
-               if(args!=null && args.length==4)
-               {
-                       // for non-interactive, insert argument "-f" if needed
-                       if(isSilentMode && 
isCredentialShellInteractiveEnabled()) {
-                               String[] updatedArgs = new String[5];
-                               updatedArgs[0] = args[0];
-                               updatedArgs[1] = args[1];
-                               updatedArgs[2] = "-f";
-                               updatedArgs[3] = args[2];
-                               updatedArgs[4] = args[3];
+    public static void main(String[] args) {
+        buildks buildksOBJ = new buildks();
+        String command = null;
+        try {
+            if (args != null && args.length >= 3) {
+                command = args[0];
+                if (command != null && !command.trim().isEmpty()) {
+                    if (command.equalsIgnoreCase("create")) {
+                        buildksOBJ.createCredential(args);
+                    } else if (command.equalsIgnoreCase("list")) {
+                        buildksOBJ.listCredential(args);
+                    } else {
+                        System.out.println(command + " is not supported in 
current version of CredentialBuilder API.");
+                        System.exit(1);
+                    }
+                }
+            } else {
+                System.out.println("Invalid Command line argument.");
+                System.exit(1);
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            System.exit(1);
+        }
+    }
 
-                               args = updatedArgs;
-                           }
+    public static boolean isValidCreateCommand(String command, String alias, 
String valueOption, String credential,
+                                               String providerOption, String 
providerPath, String storeTypeOption,
+                                               String storeType) {
+        boolean isValid = true;
+        try {
+            if (command == null || !"create".equalsIgnoreCase(command.trim())) 
{
+                System.out.println("Invalid create phrase in credential 
creation command!!");
+                System.out.println("Expected:'create' Found:'" + command + 
"'");
+                displaySyntax("create", storeType);
+                return false;
+            }
+            if (alias == null || "".equalsIgnoreCase(alias.trim())) {
+                System.out.println("Invalid alias name phrase in credential 
creation command!!");
+                System.out.println("Found:'" + alias + "'");
+                displaySyntax("create", storeType);
+                return false;
+            }
+            if (valueOption == null || 
!"-value".equalsIgnoreCase(valueOption.trim())) {
+                System.out.println("Invalid value option in credential 
creation command!!");
+                System.out.println("Expected:'-value' Found:'" + valueOption + 
"'");
+                displaySyntax("create", storeType);
+                return false;
+            }
+            if (credential == null) {
+                System.out.println("Invalid credential value in credential 
creation command!!");
+                System.out.println("Found:" + credential);
+                displaySyntax("create", storeType);
+                return false;
+            }
+            if (providerOption == null || 
!"-provider".equalsIgnoreCase(providerOption.trim())) {
+                System.out.println("Invalid provider option in credential 
creation command!!");
+                System.out.println("Expected:'-provider' Found:'" + 
providerOption + "'");
+                displaySyntax("create", storeType);
+                return false;
+            }
+            if (providerPath == null || 
"".equalsIgnoreCase(providerPath.trim()) ||
+                    ((!providerPath.startsWith("localjceks://") && 
!providerPath.startsWith("jceks://")) &&
+                            (!providerPath.startsWith("localbcfks://") && 
!providerPath.startsWith("bcfks://")))) {
+                System.out.println("Invalid provider option in credential 
creation command!!");
+                System.out.println("Found:'" + providerPath + "'");
+                displaySyntax("create", storeType);
+                return false;
+            }
+        } catch (Exception ex) {
+            System.out.println("Invalid input or runtime error! Please try 
again.");
+            System.out.println("Input:" + command + " " + alias + " " + 
valueOption + " " + credential + " " + providerOption + " " + providerPath);
+            displaySyntax("create", storeType);
+            ex.printStackTrace();
+            return false;
+        }
+        return isValid;
+    }
+
+    public static boolean isValidListCommand(String command, String 
providerOption, String providerPath, String storeTpe) {
+        boolean isValid = true;
+        try {
+            if (command == null || !"list".equalsIgnoreCase(command.trim())) {
+                System.out.println("Invalid list phrase in credential get 
command!!");
+                System.out.println("Expected:'list' Found:'" + command + "'");
+                displaySyntax("list", storeTpe);
+                return false;
+            }
 
-                       //display command which need to be executed or entered
-                       displayCommand(args);
-               }else{
-                       return returnCode;
-               }               
-               CredentialShell cs = new CredentialShell();
-               Configuration conf = new Configuration();       
-               //parse argument
-               GenericOptionsParser parser = new GenericOptionsParser(conf, 
args);
-               //set the configuration back, so that Tool can configure itself
-               cs.setConf(conf);
-               //get valid and remaining argument
-               String[] toolArgs = parser.getRemainingArgs();                  
-               //execute command in CredentialShell
-//             String[] finalArgs = Arrays.copyOfRange(toolArgs, 0, 6);
-                       returnCode= cs.run(toolArgs);
-               //if response code is zero then success else failure            
-               //System.out.println("Response Code:"+returnCode);              
-               }catch(IOException ex){
-               ex.printStackTrace();
-       } catch(Exception ex){
-               ex.printStackTrace();
-       }
-               return returnCode;
-       }       
-       
-       public static boolean isValidCreateCommand(String command,String 
alias,String valueOption,String credential,
-                                                                               
           String providerOption,String providerPath, String storeTypeOption,
-                                                                               
           String storeType)
-    {
-               boolean isValid=true;
-               try{
-               if(command==null || !"create".equalsIgnoreCase(command.trim()))
-               {
-                       System.out.println("Invalid create phrase in credential 
creation command!!");
-                       System.out.println("Expected:'create' 
Found:'"+command+"'");
-                               displaySyntax("create", storeType);
-                       return false;
-               }
-               if(alias==null || "".equalsIgnoreCase(alias.trim()))
-               {
-                       System.out.println("Invalid alias name phrase in 
credential creation command!!");
-                       System.out.println("Found:'"+alias+"'");
-                               displaySyntax("create", storeType);
-                       return false;
-               }
-               if(valueOption==null || 
!"-value".equalsIgnoreCase(valueOption.trim()))
-               {
-                       System.out.println("Invalid value option in credential 
creation command!!");
-                       System.out.println("Expected:'-value' 
Found:'"+valueOption+"'");
-                               displaySyntax("create", storeType);
-                       return false;
-               }
-               if(credential==null)
-               {
-                       System.out.println("Invalid credential value in 
credential creation command!!");
-                       System.out.println("Found:"+credential);
-                               displaySyntax("create", storeType);
-                       return false;
-               }
-               if(providerOption==null || 
!"-provider".equalsIgnoreCase(providerOption.trim()))
-               {
-                       System.out.println("Invalid provider option in 
credential creation command!!");
-                       System.out.println("Expected:'-provider' 
Found:'"+providerOption+"'");
-                               displaySyntax("create", storeType);
-                       return false;
-               }
-                       if(providerPath==null || 
"".equalsIgnoreCase(providerPath.trim()) ||
-                                       
((!providerPath.startsWith("localjceks://") && 
!providerPath.startsWith("jceks://")) &&
-                                       
(!providerPath.startsWith("localbcfks://") && 
!providerPath.startsWith("bcfks://"))))
-               {
-                       System.out.println("Invalid provider option in 
credential creation command!!");
-                       System.out.println("Found:'"+providerPath+"'");
-                               displaySyntax("create", storeType);
-                       return false;
-               }
-       }catch(Exception ex){           
-               System.out.println("Invalid input or runtime error! Please try 
again.");
-               System.out.println("Input:"+command+" "+alias+" "+valueOption+" 
"+credential+" "+providerOption+" "+providerPath);
-                       displaySyntax("create", storeType);
-               ex.printStackTrace();
-               return false;
-       }               
-       return isValid;
+            if (providerOption == null || 
!"-provider".equalsIgnoreCase(providerOption.trim())) {
+                System.out.println("Invalid provider option in credential get 
command!!");
+                System.out.println("Expected:'-provider' Found:'" + 
providerOption + "'");
+                displaySyntax("list", storeTpe);
+                return false;
+            }
+            if (providerPath == null || 
"".equalsIgnoreCase(providerPath.trim()) ||
+                    ((!providerPath.startsWith("localjceks://") && 
!providerPath.startsWith("jceks://")) &&
+                            (!providerPath.startsWith("localbcfks://") && 
!providerPath.startsWith("bcfks://")))) {
+                System.out.println("Invalid provider option in credential get 
command!!");
+                System.out.println("Found:'" + providerPath + "'");
+                displaySyntax("list", storeTpe);
+                return false;
+            }
+        } catch (Exception ex) {
+            System.out.println("Invalid input or runtime error! Please try 
again.");
+            System.out.println("Input:" + command + " " + providerOption + " " 
+ providerPath);
+            displaySyntax("list", storeTpe);
+            ex.printStackTrace();
+            return false;
+        }
+        return isValid;
     }
 
-       public static boolean isValidListCommand(String command,String 
providerOption,String providerPath, String storeTpe){
-               boolean isValid=true;
-               try{
-                       if(command==null || 
!"list".equalsIgnoreCase(command.trim())){
-                               System.out.println("Invalid list phrase in 
credential get command!!");
-                               System.out.println("Expected:'list' 
Found:'"+command+"'");
-                               displaySyntax("list", storeTpe);
-                               return false;
-                       }
+    public static void displayCommand(String[] args) {
+        String debugOption = System.getProperty("debug");
+        if ("TRUE".equalsIgnoreCase(debugOption)) {
+            StringBuilder tempBuffer = new StringBuilder();
+            if (args != null && args.length > 0) {
+                for (String arg : args) {
+                    tempBuffer.append(arg).append(" ");
+                }
+                System.out.println("Command to execute:[" + tempBuffer + "]");
+            }
+        }
+    }
+
+    public static void displaySyntax(String command, String storeType) {
+        if ("bcfks".equalsIgnoreCase(storeType)) {
+            if (command != null && command.trim().equalsIgnoreCase("create")) {
+                System.out.println("Correct syntax is:create <aliasname> 
-value <password> -provider <bcfks://file/filepath>");
+                System.out.println("sample command is:create myalias -value 
password123 -provider bcfks://file/tmp/ks/myks.bcfks");
+            }
+            if (command != null && command.trim().equalsIgnoreCase("list")) {
+                System.out.println("Correct syntax is:list -provider 
<bcfks://file/filepath>");
+                System.out.println("sample command is:list -provider 
bcfks://file/tmp/ks/myks.bcfks");
+            }
+            if (command != null && command.trim().equalsIgnoreCase("get")) {
+                System.out.println("Correct syntax is:get <aliasname> 
-provider <bcfks://file/filepath>");
+                System.out.println("sample command is:get myalias -provider 
bcfks://file/tmp/ks/myks.bcfks");
+            }
+        } else {
+            if (command != null && command.trim().equalsIgnoreCase("create")) {
+                System.out.println("Correct syntax is:create <aliasname> 
-value <password> -provider <jceks://file/filepath>");
+                System.out.println("sample command is:create myalias -value 
password123 -provider jceks://file/tmp/ks/myks.jceks");
+            }
+            if (command != null && command.trim().equalsIgnoreCase("list")) {
+                System.out.println("Correct syntax is:list -provider 
<jceks://file/filepath>");
+                System.out.println("sample command is:list -provider 
jceks://file/tmp/ks/myks.jceks");
+            }
+            if (command != null && command.trim().equalsIgnoreCase("get")) {
+                System.out.println("Correct syntax is:get <aliasname> 
-provider <jceks://file/filepath>");
+                System.out.println("sample command is:get myalias -provider 
jceks://file/tmp/ks/myks.jceks");
+            }
+        }
+    }
 
-                       if(providerOption==null || 
!"-provider".equalsIgnoreCase(providerOption.trim()))
-                       {
-                               System.out.println("Invalid provider option in 
credential get command!!");
-                               System.out.println("Expected:'-provider' 
Found:'"+providerOption+"'");
-                               displaySyntax("list", storeTpe);
-                               return false;
-                       }
-                       if(providerPath==null || 
"".equalsIgnoreCase(providerPath.trim()) ||
-                                       
((!providerPath.startsWith("localjceks://") && 
!providerPath.startsWith("jceks://")) &&
-                                       
(!providerPath.startsWith("localbcfks://") && 
!providerPath.startsWith("bcfks://"))))
-                       {
-                               System.out.println("Invalid provider option in 
credential get command!!");
-                               System.out.println("Found:'"+providerPath+"'");
-                               displaySyntax("list", storeTpe);
-                               return false;
-                       }
-               }catch(Exception ex){
-                       System.out.println("Invalid input or runtime error! 
Please try again.");
-                       System.out.println("Input:"+command+" 
"+providerOption+" "+providerPath);
-                       displaySyntax("list", storeTpe);
-                       ex.printStackTrace();
-                       return false;
-               }
-               return isValid;
-       }
-       
-       public static void displayCommand(String args[])
-    {
-               String debugOption = System.getProperty("debug");
-               if (debugOption != null && 
"TRUE".equalsIgnoreCase(debugOption)) {
-                       StringBuilder tempBuffer=new StringBuilder("");
-                       if(args!=null && args.length>0){
-                               for (String arg : args) {
-                                       tempBuffer.append(arg).append(" ");
-                               }
-                               System.out.println("Command to 
execute:["+tempBuffer+"]");
-                       }
-               }
+    public static boolean isValidGetCommand(String command, String alias, 
String providerOption, String providerPath, String storeType) {
+        boolean isValid = true;
+        try {
+            if (command == null || !"get".equalsIgnoreCase(command.trim())) {
+                System.out.println("Invalid get phrase in credential get 
command!!");
+                System.out.println("Expected:'get' Found:'" + command + "'");
+                displaySyntax("get", storeType);
+                return false;
+            }
+            if (alias == null || "".equalsIgnoreCase(alias.trim())) {
+                System.out.println("Invalid alias name phrase in credential 
get command!!");
+                System.out.println("Found:'" + alias + "'");
+                displaySyntax("get", storeType);
+                return false;
+            }
+            if (providerOption == null || 
!"-provider".equalsIgnoreCase(providerOption.trim())) {
+                System.out.println("Invalid provider option in credential get 
command!!");
+                System.out.println("Expected:'-provider' Found:'" + 
providerOption + "'");
+                displaySyntax("get", storeType);
+                return false;
+            }
+            if (providerPath == null || 
"".equalsIgnoreCase(providerPath.trim()) ||
+                    (!providerPath.startsWith("localjceks://") && 
!providerPath.startsWith("jceks://")) &&
+                            (!providerPath.startsWith("localbcfks://") && 
!providerPath.startsWith("bcfks://"))) {
+                System.out.println("Invalid provider option in credential get 
command!!");
+                System.out.println("Found:'" + providerPath + "'");
+                displaySyntax("get", storeType);
+                return false;
+            }
+        } catch (Exception ex) {
+            System.out.println("Invalid input or runtime error! Please try 
again.");
+            System.out.println("Input:" + command + " " + alias + " " + 
providerOption + " " + providerPath);
+            displaySyntax("get", storeType);
+            ex.printStackTrace();
+            return false;
+        }
+        return isValid;
     }
-       
-       public static void displaySyntax(String command, String storeType){
-               if ("bcfks".equalsIgnoreCase(storeType)) {
-                       if (command != null && 
command.trim().equalsIgnoreCase("create")) {
-                               System.out.println("Correct syntax is:create 
<aliasname> -value <password> -provider <bcfks://file/filepath>");
-                               System.out.println("sample command is:create 
myalias -value password123 -provider bcfks://file/tmp/ks/myks.bcfks");
-                       }
-                       if (command != null && 
command.trim().equalsIgnoreCase("list")) {
-                               System.out.println("Correct syntax is:list 
-provider <bcfks://file/filepath>");
-                               System.out.println("sample command is:list 
-provider bcfks://file/tmp/ks/myks.bcfks");
-                       }
-                       if (command != null && 
command.trim().equalsIgnoreCase("get")) {
-                               System.out.println("Correct syntax is:get 
<aliasname> -provider <bcfks://file/filepath>");
-                               System.out.println("sample command is:get 
myalias -provider bcfks://file/tmp/ks/myks.bcfks");
-                       }
-               } else {
-                       if (command != null && 
command.trim().equalsIgnoreCase("create")) {
-                               System.out.println("Correct syntax is:create 
<aliasname> -value <password> -provider <jceks://file/filepath>");
-                               System.out.println("sample command is:create 
myalias -value password123 -provider jceks://file/tmp/ks/myks.jceks");
-                       }
-                       if (command != null && 
command.trim().equalsIgnoreCase("list")) {
-                               System.out.println("Correct syntax is:list 
-provider <jceks://file/filepath>");
-                               System.out.println("sample command is:list 
-provider jceks://file/tmp/ks/myks.jceks");
-                       }
-                       if (command != null && 
command.trim().equalsIgnoreCase("get")) {
-                               System.out.println("Correct syntax is:get 
<aliasname> -provider <jceks://file/filepath>");
-                               System.out.println("sample command is:get 
myalias -provider jceks://file/tmp/ks/myks.jceks");
-                       }
-               }
 
-       }
-       public String getCredential(String args[]){
-               String command=null;
-               String alias=null;
-               String providerOption=null;
-               String providerPath=null;
-               String tempCredential=null;
-               String storeType=KeyStore.getDefaultType();
-               try{
-                       if(args!=null && args.length==4){
-                               command=args[0];
-                               alias=args[1];
-                               providerOption=args[2];
-                               providerPath=args[3];
-                               
if(!isValidGetCommand(command,alias,providerOption,providerPath,storeType)){
-                                       displaySyntax("get", storeType);
-                               }else{
-                                       
tempCredential=CredentialReader.getDecryptedString(providerPath, alias, 
storeType);
-                               }
-                       }else{
-                               displaySyntax("get", storeType);
-                       }
-                       if(tempCredential==null){
-                               System.out.println("Alias "+ alias +" does not 
exist!!");
-                       }
-                       }catch(Exception ex){
-                               ex.printStackTrace();
-                       }
-                       return tempCredential;
-       }
+    private static boolean isCredentialShellInteractiveEnabled() {
+        boolean ret = false;
 
-       public static boolean isValidGetCommand(String command,String 
alias,String providerOption,String providerPath,String storeType){
-               boolean isValid=true;
-               try{
-                       if(command==null || 
!"get".equalsIgnoreCase(command.trim())){
-                               System.out.println("Invalid get phrase in 
credential get command!!");
-                               System.out.println("Expected:'get' 
Found:'"+command+"'");
-                               displaySyntax("get", storeType);
-                               return false;
-                       }
-                       if(alias==null || "".equalsIgnoreCase(alias.trim()))
-                       {
-                               System.out.println("Invalid alias name phrase 
in credential get command!!");
-                               System.out.println("Found:'"+alias+"'");
-                               displaySyntax("get", storeType);
-                               return false;
-                       }
-                       if(providerOption==null || 
!"-provider".equalsIgnoreCase(providerOption.trim()))
-                       {
-                               System.out.println("Invalid provider option in 
credential get command!!");
-                               System.out.println("Expected:'-provider' 
Found:'"+providerOption+"'");
-                               displaySyntax("get", storeType);
-                               return false;
-                       }
-                       if(providerPath==null || 
"".equalsIgnoreCase(providerPath.trim()) ||
-                                       
(!providerPath.startsWith("localjceks://") && 
!providerPath.startsWith("jceks://")) &&
-                                       
(!providerPath.startsWith("localbcfks://") && 
!providerPath.startsWith("bcfks://")))
-                       {
-                               System.out.println("Invalid provider option in 
credential get command!!");
-                               System.out.println("Found:'"+providerPath+"'");
-                               displaySyntax("get", storeType);
-                               return false;
-                       }
-               }catch(Exception ex){
-                       System.out.println("Invalid input or runtime error! 
Please try again.");
-                       System.out.println("Input:"+command+" "+alias+" 
"+providerOption+" "+providerPath);
-                       displaySyntax("get", storeType);
-                       ex.printStackTrace();
-                       return false;
-               }
-               return isValid;
-       }
+        String fieldName = "interactive";
 
-       private static boolean isCredentialShellInteractiveEnabled() {
-               boolean ret = false;
-               
-               String fieldName = "interactive";
-               
-               CredentialShell cs = new CredentialShell();
-               
-               try {
-                       Field interactiveField = 
cs.getClass().getDeclaredField(fieldName);
-                       
-                       if (interactiveField != null) {
-                               interactiveField.setAccessible(true);
-                               ret = interactiveField.getBoolean(cs);
-                               System.out.println("FOUND value of [" + 
fieldName + "] field in the Class [" + cs.getClass().getName() + "] = [" + ret 
+ "]");
-                       }
-               } catch (Throwable e) {
-                       System.out.println("Unable to find the value of [" + 
fieldName + "] field in the Class [" + cs.getClass().getName() + "]. Skiping -f 
option");
-                       e.printStackTrace();
-                       ret = false;
-               }
-               
-               return ret;
-               
-       }
+        CredentialShell cs = new CredentialShell();
+
+        try {
+            Field interactiveField = cs.getClass().getDeclaredField(fieldName);
+
+            if (interactiveField != null) {
+                interactiveField.setAccessible(true);
+                ret = interactiveField.getBoolean(cs);
+                System.out.println("FOUND value of [" + fieldName + "] field 
in the Class [" + cs.getClass().getName() + "] = [" + ret + "]");
+            }
+        } catch (Throwable e) {
+            System.out.println("Unable to find the value of [" + fieldName + 
"] field in the Class [" + cs.getClass().getName() + "]. Skiping -f option");
+            e.printStackTrace();
+            ret = false;
+        }
+
+        return ret;
+    }
 
-       public void deleteInvalidKeystore(String providerPath){
-               if(providerPath!=null){
-                       String keystore=null;
-                       if(providerPath.startsWith("jceks://file")){
-                               
keystore=providerPath.replace("jceks://file","");
-                       }else if(providerPath.startsWith("localjceks://file")){
-                               
keystore=providerPath.replace("jceks://file","");
-                       }else if(providerPath.startsWith("bcfks://file")){
-                               
keystore=providerPath.replace("bcfks://file","");
-                       }else if(providerPath.startsWith("localbcfks://file")){
-                               
keystore=providerPath.replace("bcfks://file","");
-                       }else{
-                               keystore=providerPath;
-                       }
-                       if(keystore!=null && !keystore.isEmpty()){
-                               File file =new File(keystore);
-                               if(file!=null && file.exists() && 
file.length()==0){
-                                       System.out.println("Provider file 
'"+keystore+"' is in invalid state or corrupt!! will try to delete first.");
-                                       file.delete();
-                                       file=null;
-                               }
-                       }
-               }
-       }
+    public int createCredential(String[] args) {
+        int returnCode = -1;
+        String command = null;
+        String alias = null;
+        String valueOption = null;
+        String credential = null;
+        String providerOption = null;
+        String providerPath = null;
+        String tempCredential = null;
+        String storeTypeOption = "storeType";
+        String storeType = KeyStore.getDefaultType();
+        try {
+            if (args != null && (args.length == 6 || args.length == 8)) {
+                command = args[0];
+                alias = args[1];
+                valueOption = args[2];
+                credential = args[3];
+                providerOption = args[4];
+                providerPath = args[5];
+                if (args.length == 8) {
+                    storeTypeOption = args[6];
+                    storeType = args[7];
+                }
+                if (!isValidCreateCommand(command, alias, valueOption, 
credential, providerOption, providerPath, storeTypeOption, storeType)) {
+                    return returnCode;
+                }
+                deleteInvalidKeystore(providerPath);
+                tempCredential = 
CredentialReader.getDecryptedString(providerPath, alias, storeType);
+            } else {
+                return returnCode;
+            }
+
+            if (tempCredential == null) {
+                returnCode = createKeyStore(args);
+            } else {
+                try {
+                    System.out.println("The alias " + alias + " already 
exists!! Will try to delete first.");
+                    boolean isSilentMode = true;
+                    String[] argsDelete = new String[4];
+                    argsDelete[0] = "delete";
+                    argsDelete[1] = alias;
+                    argsDelete[2] = providerOption;
+                    argsDelete[3] = providerPath;
+                    returnCode = deleteCredential(argsDelete, isSilentMode);
+                    if (returnCode == 0) {
+                        returnCode = createKeyStore(args);
+                    }
+                } catch (Exception ex) {
+                    returnCode = -1;
+                }
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        return returnCode;
+    }
+
+    public int createKeyStore(String[] args) {
+        int returnCode = -1;
+        try {
+            String command = null;
+            String alias = null;
+            String valueOption = null;
+            String credential = null;
+            String providerOption = null;
+            String providerPath = null;
+            String storeTypeOption = "storeType";
+            String storeType = KeyStore.getDefaultType();
+            if (args != null && (args.length == 6 || args.length == 8)) {
+                command = args[0];
+                alias = args[1];
+                valueOption = args[2];
+                credential = args[3];
+                providerOption = args[4];
+                providerPath = args[5];
+                if (args.length == 8) {
+                    storeTypeOption = args[6];
+                    storeType = args[7];
+                }
+                if (!isValidCreateCommand(command, alias, valueOption, 
credential, providerOption, providerPath, storeTypeOption, storeType)) {
+                    return returnCode;
+                }
+                displayCommand(args);
+            } else {
+                return returnCode;
+            }
+
+            CredentialShell cs = new CredentialShell();
+            Configuration conf = new Configuration();
+            //parse argument
+            GenericOptionsParser parser = new GenericOptionsParser(conf, args);
+            //set the configuration back, so that Tool can configure itself
+            cs.setConf(conf);
+            //get valid and remaining argument
+            String[] toolArgs = parser.getRemainingArgs();
+            //execute command in CredentialShell
+            // int i = 0;
+            //  for(String s : toolArgs) {
+            //System.out.println("TooArgs [" + i + "] = [" + s + "]");
+            //i++;
+            // }
+            String[] finalArgs = Arrays.copyOfRange(toolArgs, 0, 6);
+            returnCode = cs.run(finalArgs);
+            //if response code is zero then success else failure
+        } catch (IOException ex) {
+            ex.printStackTrace();
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        return returnCode;
+    }
+
+    public int createCredentialFromUserInput() {
+        int returnCode = -1;
+        try {
+            String[] args = null;
+            String command = null;
+            String alias = null;
+            String valueOption = null;
+            String credential = null;
+            String providerOption = null;
+            String providerPath = null;
+            String storeTypeOption = null;
+            String storeType = null;
+            //below code can ask user to input if command line input fails
+            System.out.println("Enter Alias Name:");
+            BufferedReader bufferRead = new BufferedReader(new 
InputStreamReader(System.in));
+            alias = bufferRead.readLine();
+            System.out.println("Enter password:");
+            credential = bufferRead.readLine();
+            System.out.println("Enter .jceks output file name with path:");
+            providerPath = bufferRead.readLine();
+            if (providerPath != null && !providerPath.trim().isEmpty() &&
+                    (!providerPath.startsWith("localjceks://file") && 
!providerPath.startsWith("jceks://file") &&
+                            !providerPath.startsWith("localbcfks://file") && 
!providerPath.startsWith("bcfks://file"))) {
+                if (providerPath.startsWith("/")) {
+                    providerPath = "jceks://file" + providerPath;
+                } else {
+                    providerPath = "jceks://file/" + providerPath;
+                }
+            }
+            command = "create";
+            valueOption = "-value";
+            providerOption = "-provider";
+            if (!isValidCreateCommand(command, alias, valueOption, credential, 
providerOption, providerPath, storeTypeOption, storeType)) {
+                return returnCode;
+            }
+            args = new String[6];
+            args[0] = command;
+            args[1] = alias;
+            args[2] = valueOption;
+            args[3] = credential;
+            args[4] = providerOption;
+            args[5] = providerPath;
+            CredentialShell cs = new CredentialShell();
+            Configuration conf = new Configuration();
+            //parse argument
+            GenericOptionsParser parser = new GenericOptionsParser(conf, args);
+            //set the configuration back, so that Tool can configure itself
+            cs.setConf(conf);
+            //get valid and remaining argument
+            String[] toolArgs = parser.getRemainingArgs();
+            //execute command in CredentialShell
+            returnCode = cs.run(toolArgs);
+            //if response code is zero then success else failure
+            //System.out.println("Response Code:"+returnCode);
+        } catch (IOException ex) {
+            ex.printStackTrace();
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        return returnCode;
+    }
+
+    public int listCredential(String[] args) {
+        int returnCode = -1;
+        String command = null;
+        String providerOption = null;
+        String providerPath = null;
+        String storeType = KeyStore.getDefaultType();
+        try {
+            if (args != null && args.length == 3) {
+                command = args[0];
+                providerOption = args[1];
+                providerPath = args[2];
+                if (!isValidListCommand(command, providerOption, providerPath, 
storeType)) {
+                    return returnCode;
+                }
+                //display command which need to be executed or entered
+                displayCommand(args);
+            } else {
+                return returnCode;
+            }
+            CredentialShell cs = new CredentialShell();
+            Configuration conf = new Configuration();
+            //parse argument
+            GenericOptionsParser parser = new GenericOptionsParser(conf, args);
+            //set the configuration back, so that Tool can configure itself
+            cs.setConf(conf);
+            //get valid and remaining argument
+            String[] toolArgs = parser.getRemainingArgs();
+            //execute command in CredentialShell
+            returnCode = cs.run(toolArgs);
+            //if response code is zero then success else failure
+            //System.out.println("Response Code:"+returnCode);
+        } catch (IOException ex) {
+            ex.printStackTrace();
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        return returnCode;
+    }
+
+    public int deleteCredential(String[] args, boolean isSilentMode) {
+        int returnCode = -1;
+        try {
+            if (args != null && args.length == 4) {
+                // for non-interactive, insert argument "-f" if needed
+                if (isSilentMode && isCredentialShellInteractiveEnabled()) {
+                    String[] updatedArgs = new String[5];
+                    updatedArgs[0] = args[0];
+                    updatedArgs[1] = args[1];
+                    updatedArgs[2] = "-f";
+                    updatedArgs[3] = args[2];
+                    updatedArgs[4] = args[3];
+
+                    args = updatedArgs;
+                }
+
+                //display command which need to be executed or entered
+                displayCommand(args);
+            } else {
+                return returnCode;
+            }
+            CredentialShell cs = new CredentialShell();
+            Configuration conf = new Configuration();
+            //parse argument
+            GenericOptionsParser parser = new GenericOptionsParser(conf, args);
+            //set the configuration back, so that Tool can configure itself
+            cs.setConf(conf);
+            //get valid and remaining argument
+            String[] toolArgs = parser.getRemainingArgs();
+            //execute command in CredentialShell
+            //String[] finalArgs = Arrays.copyOfRange(toolArgs, 0, 6);
+            returnCode = cs.run(toolArgs);
+            //if response code is zero then success else failure
+            //System.out.println("Response Code:"+returnCode);
+        } catch (IOException ex) {
+            ex.printStackTrace();
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        return returnCode;
+    }
+
+    public String getCredential(String[] args) {
+        String command = null;
+        String alias = null;
+        String providerOption = null;
+        String providerPath = null;
+        String tempCredential = null;
+        String storeType = KeyStore.getDefaultType();
+        try {
+            if (args != null && args.length == 4) {
+                command = args[0];
+                alias = args[1];
+                providerOption = args[2];
+                providerPath = args[3];
+                if (!isValidGetCommand(command, alias, providerOption, 
providerPath, storeType)) {
+                    displaySyntax("get", storeType);
+                } else {
+                    tempCredential = 
CredentialReader.getDecryptedString(providerPath, alias, storeType);
+                }
+            } else {
+                displaySyntax("get", storeType);
+            }
+            if (tempCredential == null) {
+                System.out.println("Alias " + alias + " does not exist!!");
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        return tempCredential;
+    }
+
+    public void deleteInvalidKeystore(String providerPath) {
+        if (providerPath != null) {
+            String keystore = null;
+            if (providerPath.startsWith("jceks://file")) {
+                keystore = providerPath.replace("jceks://file", "");
+            } else if (providerPath.startsWith("localjceks://file")) {
+                keystore = providerPath.replace("jceks://file", "");
+            } else if (providerPath.startsWith("bcfks://file")) {
+                keystore = providerPath.replace("bcfks://file", "");
+            } else if (providerPath.startsWith("localbcfks://file")) {
+                keystore = providerPath.replace("bcfks://file", "");
+            } else {
+                keystore = providerPath;
+            }
+            if (keystore != null && !keystore.isEmpty()) {
+                File file = new File(keystore);
+                if (file != null && file.exists() && file.length() == 0) {
+                    System.out.println("Provider file '" + keystore + "' is in 
invalid state or corrupt!! will try to delete first.");
+                    file.delete();
+                    file = null;
+                }
+            }
+        }
+    }
 }
diff --git 
a/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/TestCredentialReader.java
 
b/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/TestCredentialReader.java
index ab36a51d8..e050d2b6d 100644
--- 
a/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/TestCredentialReader.java
+++ 
b/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/TestCredentialReader.java
@@ -6,9 +6,9 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,15 +17,15 @@
  */
 package org.apache.ranger.credentialapi;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.io.File;
-
 import org.apache.commons.io.FileUtils;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import java.io.File;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class TestCredentialReader {
     private String keystoreFile;
 
@@ -57,7 +57,5 @@ public class TestCredentialReader {
 
         buildks buildksOBJ = new buildks();
         buildksOBJ.deleteCredential(argsdeleteCommand, true);
-
     }
-
 }
diff --git 
a/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/Testbuildks.java
 
b/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/Testbuildks.java
index dbe2ec600..b523e302d 100644
--- 
a/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/Testbuildks.java
+++ 
b/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/Testbuildks.java
@@ -6,9 +6,9 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,19 +17,18 @@
  */
 package org.apache.ranger.credentialapi;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.io.File;
-import java.util.Arrays;
-
 import org.apache.commons.io.FileUtils;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-public class Testbuildks {
+import java.io.File;
+import java.util.Arrays;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class Testbuildks {
     private String keystoreFile;
 
     @BeforeEach
@@ -49,23 +48,23 @@ public class Testbuildks {
     @Test
     public void testBuildKSsuccess() throws Exception {
         buildks buildksOBJ = new buildks();
-        String[] argsCreateCommand = {"create", "TestCredential1", "-value", 
"PassworD123", "-provider", "jceks://file@/" + keystoreFile, "","jceks"};
+        String[] argsCreateCommand = {"create", "TestCredential1", "-value", 
"PassworD123", "-provider", "jceks://file@/" + keystoreFile, "", "jceks"};
         int rc1 = buildksOBJ.createCredential(argsCreateCommand);
         assertEquals(0, rc1);
 
-        String[] argsListCommand = {"list", "-provider","jceks://file@/" + 
keystoreFile};
-        int rc2=buildksOBJ.listCredential(argsListCommand);
+        String[] argsListCommand = {"list", "-provider", "jceks://file@/" + 
keystoreFile};
+        int rc2 = buildksOBJ.listCredential(argsListCommand);
         assertEquals(0, rc2);
 
-        String[] argsGetCommand = {"get", "TestCredential1", "-provider", 
"jceks://file@/" +keystoreFile };
+        String[] argsGetCommand = {"get", "TestCredential1", "-provider", 
"jceks://file@/" + keystoreFile};
         System.out.println("Get command = " + Arrays.toString(argsGetCommand));
         String pw = buildksOBJ.getCredential(argsGetCommand);
         assertEquals("PassworD123", pw);
-        assertTrue(pw.equals("PassworD123"));
+        assertEquals("PassworD123", pw);
         boolean getCredentialPassed = pw.equals("PassworD123");
         assertTrue(getCredentialPassed);
 
-        String[] argsDeleteCommand = new String[] {"delete", 
"TestCredential1", "-provider", "jceks://file@/" +keystoreFile };
+        String[] argsDeleteCommand = new String[] {"delete", 
"TestCredential1", "-provider", "jceks://file@/" + keystoreFile};
         boolean isSilentMode = true;
 
         int rc3 = buildksOBJ.deleteCredential(argsDeleteCommand, isSilentMode);
@@ -75,7 +74,7 @@ public class Testbuildks {
     @Test
     public void testInvalidProvider() throws Exception {
         buildks buildksOBJ = new buildks();
-        String[] argsCreateCommand = {"create", "TestCredential1", "-value", 
"PassworD123", "-provider", "jksp://file@/"+keystoreFile};
+        String[] argsCreateCommand = {"create", "TestCredential1", "-value", 
"PassworD123", "-provider", "jksp://file@/" + keystoreFile};
         int rc1 = buildksOBJ.createCredential(argsCreateCommand);
         assertEquals(-1, rc1);
     }
@@ -83,7 +82,7 @@ public class Testbuildks {
     @Test
     public void testInvalidCommand() throws Exception {
         buildks buildksOBJ = new buildks();
-        String[] argsCreateCommand = {"creat", "TestCredential1", "-value", 
"PassworD123", "-provider", "jksp://file@/"+keystoreFile};
+        String[] argsCreateCommand = {"creat", "TestCredential1", "-value", 
"PassworD123", "-provider", "jksp://file@/" + keystoreFile};
         int rc1 = buildksOBJ.createCredential(argsCreateCommand);
         assertEquals(-1, rc1);
     }
diff --git a/dev-support/checkstyle-suppressions.xml 
b/dev-support/checkstyle-suppressions.xml
index 75a553511..5195abc33 100644
--- a/dev-support/checkstyle-suppressions.xml
+++ b/dev-support/checkstyle-suppressions.xml
@@ -24,6 +24,6 @@
   <suppress files="[\\/]surefire-reports[\\/]" checks="[a-zA-Z0-9]*"/>
   <suppress files="SPOOL_FILE_STATUS.java" checks="TypeName"/>
   <suppress files="AuditFileCacheProviderSpool.java" checks="TypeName"/>
+  <suppress files="buildks.java" checks="TypeName"/>
   <suppress files="AuthzAuditEvent.java" checks="StaticVariableName"/>
-
 </suppressions>

Reply via email to