Estouro de Array em diferentes Users

Nessa JSP:

[code]
<%@ page language=“java” import=“com.siap.,org.prevayler.” %>
<% Prevayler prevayler=(Prevayler)this.getServletContext().getAttribute(“prevayler”);
SistemaAcademico siap=(SistemaAcademico)prevayler.prevalentSystem();
Usuario usuario=(Usuario)session.getAttribute(“usuario”);
Turma[] turmas=siap.getTurmas();

String[] escolha=request.getParameterValues(“turma”);
Turma[] selecionadas=new Turma[escolha.length];
if(escolha!=null){
for(int i=0;i<turmas.length;i++){
for(int j=0;j<escolha.length;j++)
if(turmas[i].getIdTurma().equals(escolha[j]))
selecionadas[j++]=turmas[i];
}
MatriculaTransaction transacao=new MatriculaTransaction(usuario,selecionadas);
prevayler.execute(transacao);
}
%>
<html><head><title>SIAP2004</title>
</head>
<body bgcolor=“white”>
<CAPTION><marquee>
SISTEMA DE INFORMAÇÕES ACADÊMICAS PREVALENTE </CAPTION></marquee>

<center><TABLE BORDER=0><caption>Disciplinas Matriculadas:</caption>
<tr><th></th><th> Turma</th><th> Matéria</th><th> Professor</th><th> Dia(s)</th><th> Horário</th><th> Sala</th><th> Campus</th></tr>

<% Turma t;
for(int i=0;i<siap.proximaMatriculaId();i++){
Matricula mat=siap.getMatricula(new Integer(i));
if(mat.aluno.matricula.equals(usuario.matricula)){
t=mat.turmas[i];

%>
<tr><th></th>
<th><%=t.idTurma%></th>
<th><%=t.nomeDaMateria%></th>
<th><%=t.nomeDoProfessor%></th>
<th><%=t.diaDaSemana%></th>
<th><%=t.horario%></th>
<th><%=t.nomeSala%></th>
<th><%=t.nomeCampus%></th>
</tr>
<% ;
}
}
%>

</TH></TR>
</TABLE></center>
<center>
<INPUT TYPE=“button” VALUE=“Voltar” onClick=“history.back()”>
</center>
</body>
</html> [/code]
Quando dois usuários diferentes escolhem a mesma turma,acaba dando um estouro do array em: t=mat.turmas[i];
Isso não é possível,pois cada usuário possui matrícula própria,e a turma escolhida por cada um é própria de cada Matrícula.
Ah,o proximaMatriculaId() é apenas um método que retorna o tamanho do HashMap de matrículas.
Se alguem conseguir ver algo…agradeço!!! :slight_smile:

Ah,esqueci de postar a MatriculaTransaction:

[code]
package com.siap;

import java.io.Serializable;
import org.prevayler.*;
import org.prevayler.Transaction;
import java.util.Date;

public class MatriculaTransaction implements Serializable,Transaction{

private final String usuarioMat;
private final Turma[] turmasSelecionadas;
     

public MatriculaTransaction(Usuario usuario,Turma[] turmas){
  usuarioMat=usuario.matricula;
  turmasSelecionadas=turmas;		
}

public void executeOn(Object system, Date data) { 
  Matricula mat=null;
  SistemaAcademico siap=(SistemaAcademico)system;
  int id=siap.proximaMatriculaId();
  if(!Matricula.verificaMatricula(id,siap.getUsuario(usuarioMat),turmasSelecionadas,data)){
     throw new IllegalArgumentException("Parâmetros Inválidos Para Matrícula!");                  }
     mat=new Matricula(id,siap.getUsuario(usuarioMat),turmasSelecionadas,data);
     siap.adicionaMatricula(mat); 
} 

} [/code]
E a MAtricula em si:

[code]
package com.siap;
import java.io.;
import java.util.
;
import java.util.Date;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.Appender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.BasicConfigurator;

public class Matricula implements Serializable{
static final Logger LOGGER = Logger.getLogger(Matricula.class);
public final int id;
public final Usuario aluno;
public final Turma[] turmas;
private final Date data;
List listaMaterias=new ArrayList();

//construtor q mostrará s matrículas na Web
public Matricula(int id,Usuario aluno,Turma[] turmas,Date data){
BasicConfigurator.configure();
this.id=id;
this.aluno=aluno;
this.turmas=turmas;
this.data=data;

}

public static boolean verificaMatricula(int id,Usuario aluno,Turma[] turmas,Date data){
if(aluno==null)return true;
if(turmas==null)return false;
if(data==null)return false;
return true;
}

public void log() {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(this.aluno);
LOGGER.debug(this.turmas);
}
}

}//fim da classe Matricula [/code]