Carregar e armazenar dados em arquivo properties

0 respostas
M

Olá. Estou aprendendo struts, mas o que está emperrando é referente ao pacote java.io

Aparentemente o direcionamento está ok, pois nenhuma excessão é lançado e o login validado, mas quando olho no properties, está vazio. Mesmo depois que fiz o deploy.

Eis o código da classe UserDirectory:

//Na pasta resources, abaixo do src/main/java, fica o arquivo users.properties. 

private static final String UserDirectoryFile =
        "resources/users.properties";


//carrego o arquivo no construtor

private UserDirectory() throws UserDirectoryException {

            java.io.InputStream i = null;
            p = null;
            i = this.getClass().getClassLoader().
                getResourceAsStream(UserDirectoryFile);


            if (null==i) {
                throw new UserDirectoryException();
            }

            else {

                try {
                    p = new Properties();
                    p.load(i);
                    i.close();
                }

                catch (java.io.IOException e) {
                    p = null;
                    throw new UserDirectoryException();
                }
                catch (IllegalArgumentException  e) {
				    e.printStackTrace();
				}

                finally {
                    i = null;
                }

            } // end else

    } // end UserDirectory


//Método para escrever no arquivo
 
public void setUser(String userId, String password) throws
            UserDirectoryException {

        // no nulls
        if ((null==userId) || (null==password)) {
            throw new UserDirectoryException();
        }


        try {

            // conform userId to uppercase when stored
            p.setProperty(userId, password);
            String o = this.getClass().getClassLoader().getResource(UserDirectoryFile).getFile();

            OutputStream outputStream = new FileOutputStream(o);
            
            p.store(outputStream, UserDirectoryHeader);
            outputStream.close();

        }

        catch (IOException e) {
            throw new UserDirectoryException();

       }
    }

E aqui a classe action, que direciona da maneira correta, de acordo com os dados do formulário, mas mesmo as senhas sendo iguais, nada é gravado no properties :

public class RegisterAction extends Action {
	
	
	
	

	public ActionForward execute (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){
		
		RegisterForm rf = (RegisterForm) form;
		
		String username = rf.username;
		
		String password1 = rf.password1;
		
		String password2 = rf.password2;
		
		if (password1.equals(password2)) {
		
			try {
		     
				UserDirectory.getInstance().setUser(username, password1);
				
				return mapping.findForward("ok");
				
			} catch (UserDirectoryException e) {
				
				return mapping.findForward("failure");
			}
		}
		
		return mapping.findForward("failure");
		
		
	}
}
Criado 16 de fevereiro de 2012
Respostas 0
Participantes 1