2012-06-13 27 views
0

我正在玩使用Mysql的Tomcat身份驗證。爲了促進這一點,我試圖模擬存儲在數據庫中的Tomcat用戶數據。所以我建立了一個TomcatUser類。如何將VARARG的內容複製到ArrayList中?

我已將用戶名和密碼存儲爲字符串,以便在測試過程中使生活變得輕鬆。安全性將在稍後實施。用戶的Tomcat角色存儲在一個ArrayList中,這樣我可以輕鬆地搜索和管理用戶的角色。我有幾個構造函數適用於不同的場景。

其中之一是使用String VARARG設置用戶可能擁有的許多Tomcat角色。我知道VARARG中的參數存儲在一個數組中。在這種情況下,字符串數組。我使用Collections.addAll()方法將VARARG數組的內容添加到對象的ArrayList中。

在測試類中,我從對象的實例化Iterator中得到一個NullPointerException,可能是因爲我的一些愚蠢的錯誤。但後來我是新的。以下是我的代碼,適用於模型類和測試。你能告訴我我做錯了什麼嗎?一般的任何提示或建議,將不勝感激。

該模型。

/* 
* Class modeling user data for Tomcat. 
*/ 

package tomcat; 

import java.util.ArrayList; 
import java.util.Collections; 

public class TomcatUser 
{ 
    String tomcatUserName; //Field to store Tomcat user's name. 
    String tomcatUserPassword; //Field to store Tomcat user's password. 

    /* 
    * Field to store the Tomcat user's roles as an ArrayList. This allows for easy element checking. 
    */ 
    ArrayList<String> tomcatUserRoles; 

    /* 
    * Constructor intended for creating a roleless user. Not much use, but who knows. 
    */ 
    public TomcatUser(String tomcatUserName, String tomcatUserPassword) 
    { 
      super(); 
      this.setTomcatUserName(tomcatUserName); 
      this.setTomcatUserPassword(tomcatUserPassword); 
     } 

     /* 
     * Constructors for instantiating for general use. 
     * Three constructors are provided to provide options for instantiation. 
     */ 
     public TomcatUser(String tomcatUserName, ArrayList<String> tomcatUserRoles) 
     { 
      super(); 
      this.setTomcatUserName(tomcatUserName); 
     this.setTomcatUserRoles(tomcatUserRoles); 
    } 

    public TomcatUser(String tomcatUserName, String... tomcatUserRoles) 
    { 
     super(); 
     this.setTomcatUserName(tomcatUserName); 
    } 
    /* 
    * 
    */ 

    /* 
    * Constructors intended for adding a new user to the database. 
    * Three constructors are provided to provide options for instantiation. 
    */ 
    public TomcatUser(String tomcatUserName, String tomcatUserPassword, ArrayList<String> tomcatUserRoles) 
    { 
     this(tomcatUserName, tomcatUserPassword); 
     this.setTomcatUserRoles(tomcatUserRoles); 
    } 
    /* 
    * 
    */ 

    /* 
    * Standard setters and getters. 
    */ 
    /** 
    * @return the tomcatUserName 
    */ 
    public String getTomcatUserName() { 
     return tomcatUserName; 
    } 

    /** 
    * @param tomcatUserName the tomcatUserName to set 
    */ 
    public void setTomcatUserName(String tomcatUserName) { 
     this.tomcatUserName = tomcatUserName; 
    } 

    /** 
    * @return the tomcatUserPassword 
    */ 
    public String getTomcatUserPassword() { 
     return tomcatUserPassword; 
    } 

    /** 
    * @param tomcatUserPassword the tomcatUserPassword to set 
    */ 
    public void setTomcatUserPassword(String tomcatUserPassword) { 
     this.tomcatUserPassword = tomcatUserPassword; 
    } 

    /** 
    * @return the tomcatUserRoles 
    */ 
    public ArrayList<String> getTomcatUserRoles() { 
     return tomcatUserRoles; 
    } 

    /** 
    * @param tomcatUserRoles the tomcatUserRoles to set 
    */ 
    public void setTomcatUserRoles(ArrayList<String> tomcatUserRoles) { 
     this.tomcatUserRoles = tomcatUserRoles; 
    } 
    /* 
    * 
    */ 

    /* 
    * Setter to handle input options from matching constructors, and to provide options for setting tomcatUserRoles field. 
    */ 

    public void setTomcatUserRoles(String[] newTomcatUserRoles) 
    { 
     Collections.addAll(this.tomcatUserRoles, newTomcatUserRoles); 
    } 
    /* 
    * 
    */ 

    /* 
    * Method to add a role to the object. 
    */ 
    public void addTomcatUserRole (String newTomcatUserRole) 
    { 
     this.tomcatUserRoles.add(newTomcatUserRole); 
    } 

    public Boolean hasTomcatRole (String checkTomcatRole) 
    { 
     return this.tomcatUserRoles.contains(checkTomcatRole); 
    } 
} 

和測試類。

package tomcat; 

import java.util.ArrayList; 
import java.util.Iterator; 

public class TomcatUserTest 
{ 

    static ArrayList<String> testTomcatRoles = new ArrayList<String>(); 
    /** 
    * @param args 
    */ 
    public static void main(String[] args) 
    { 
     for (Integer iterator = 1; iterator <4 ; iterator++) 
     { 
      testTomcatRoles.add("testTomcatRole" + iterator.toString()); 
     } 

     TomcatUser testTomcatUser01 = new TomcatUser("testUser01", "testPassword01"); 

     System.out.print("testTomcatUser01 contents: "); 
     System.out.print(testTomcatUser01.getTomcatUserName() + " " + testTomcatUser01.getTomcatUserPassword()); 
     System.out.println(); 

     TomcatUser testTomcatUser02 = new TomcatUser("testUser02", testTomcatRoles); 

     System.out.print("testTomcatUser02 contents: "); 
     System.out.print(testTomcatUser02.getTomcatUserName() + " "); 

     Iterator<String> testTomcatUser02Iterator = testTomcatUser02.getTomcatUserRoles().iterator(); 

     while (testTomcatUser02Iterator.hasNext()) 
     { 
      System.out.print(testTomcatUser02Iterator.next()); 

      if (testTomcatUser02Iterator.hasNext()) 
      { 
       System.out.print(" "); 
      } 
     } 

     System.out.println(); 

     TomcatUser testTomcatUser03 = new TomcatUser("testTomcatUser03", "testPassword03", testTomcatRoles); 

     System.out.print("testTomcatUser03 contents: "); 
     System.out.print(testTomcatUser03.getTomcatUserName() + " " + testTomcatUser03.getTomcatUserPassword() + " "); 

     Iterator<String> testTomcatUser03Iterator = testTomcatUser03.getTomcatUserRoles().iterator(); 

     while (testTomcatUser03Iterator.hasNext()) 
     { 
      System.out.print(testTomcatUser03Iterator.next()); 

      if (testTomcatUser03Iterator.hasNext()) 
      { 
       System.out.print(" "); 
      } 
     } 

     System.out.println(); 

     TomcatUser testTomcatUser04 = new TomcatUser("testTomcatUser04", "testRole1", "testRole2", "testRole3"); 

     System.out.print("testTomcatUser04 contents: "); 
     System.out.print(testTomcatUser04.getTomcatUserName() + " "); 

     Iterator<String> testTomcatUser04Iterator = testTomcatUser04.getTomcatUserRoles().iterator(); 

     while (testTomcatUser04Iterator.hasNext()) 
     { 
      System.out.print(testTomcatUser04Iterator.next()); 

      if (testTomcatUser04Iterator.hasNext()) 
      { 
       System.out.print(" "); 
      } 
     } 
    } 

} 

回答

0

此構造:

public TomcatUser(String tomcatUserName, String... tomcatUserRoles) 

從未分配領域tomcatUserRoles

+0

我顯然已經過了太久,應該去睡覺。謝謝。 – cyotee

相關問題