我正在使用Mysql玩Tomcat身份验证。为了方便这一点,我试图模拟存储在数据库中的Tomcat用户数据。所以我构建了一个TomcatUser类。
我已将用户名和密码存储为字符串,以便在测试期间简化生活。安全性将在稍后实施。用户的Tomcat角色存储在ArrayList中,因此我可以轻松搜索和管理用户的角色。我有一些不同场景的构造函数。
其中一个是使用String VARARG来设置用户可能拥有的许多Tomcat角色。我知道VARARG中的参数存储在一个数组中。在这种情况下是一个String数组。我使用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 :(得分:0)
这个构造函数:
public TomcatUser(String tomcatUserName, String... tomcatUserRoles)
永远不会指定字段tomcatUserRoles
。