0

我正在使用 Mysql 进行 Tomcat 身份验证。为了促进这一点,我试图对存储在数据库中的 Tomcat 用户数据进行建模。所以我建立了一个 TomcatUser 类。

我已将用户名和密码存储为字符串,以便在测试期间更轻松。稍后将实施安全性。并且用户的 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(" ");
            }
        }
    }

}
4

1 回答 1

0

这个构造函数:

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

从不分配字段tomcatUserRoles

于 2012-06-13T17:43:43.410 回答