Bug 113066 - NullPointerException when compiling project
Summary: NullPointerException when compiling project
Status: RESOLVED FIXED
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: 1.5.0M4   Edit
Hardware: PC Windows XP
: P2 blocker (vote)
Target Milestone: 1.5.0RC1   Edit
Assignee: Andrew Clement CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-10-19 08:28 EDT by Lucas Nazário CLA
Modified: 2005-11-07 08:59 EST (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Lucas Nazário CLA 2005-10-19 08:28:48 EDT
Hello,

Sorry by my english. It´s very, very bad.

The error is: when I try to compile my project I receive the following error:

------------------------------------------------------------------------------

      [ajc] C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_src\br\org\cgee\inovacao\favoritos\controle\dao\favoritoRe
sultado\FavoritoResultadoDAOImpl.java [error] Internal compiler error

      [ajc] java.lang.NullPointerException
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding.canBeSeenBy
(FieldBinding.java:144)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding.getVisibleBind
ing(FieldBinding.java:324)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope.findField
(Scope.java:814)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSi
ngleStaticImport(CompilationUnitScope.java:482)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSi
ngleImport(CompilationUnitScope.java:465)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultI
nImports(CompilationUnitScope.java:331)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultI
nTypes(CompilationUnitScope.java:400)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process
(Compiler.java:507)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile
(Compiler.java:329)
      [ajc] 	at 
org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation
(AjBuildManager.java:759)
      [ajc] 	at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild
(AjBuildManager.java:225)
      [ajc] 	at 
org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild
(AjBuildManager.java:151)
      [ajc] 	at org.aspectj.ajdt.ajc.AjdtCommand.doCommand
(AjdtCommand.java:112)
      [ajc] 	at org.aspectj.ajdt.ajc.AjdtCommand.runCommand
(AjdtCommand.java:60)
      [ajc] 	at org.aspectj.tools.ajc.Main.run(Main.java:326)
      [ajc] 	at org.aspectj.tools.ant.taskdefs.Ajc10.spoon(Ajc10.java:598)
      [ajc] 	at org.aspectj.tools.ant.taskdefs.Ajc10.execute(Ajc10.java:484)
      [ajc] 	at org.apache.tools.ant.UnknownElement.execute
(UnknownElement.java:275)
      [ajc] 	at org.apache.tools.ant.Task.perform(Task.java:364)
      [ajc] 	at org.apache.tools.ant.Target.execute(Target.java:341)
      [ajc] 	at org.apache.tools.ant.Target.performTasks(Target.java:369)
      [ajc] 	at org.apache.tools.ant.Project.executeSortedTargets
(Project.java:1216)
      [ajc] 	at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
      [ajc] 	at org.apache.tools.ant.helper.DefaultExecutor.executeTargets
(DefaultExecutor.java:40)
      [ajc] 	at org.apache.tools.ant.Project.executeTargets
(Project.java:1068)
      [ajc] 	at org.apache.tools.ant.Main.runBuild(Main.java:668)
      [ajc] 	at org.apache.tools.ant.Main.startAnt(Main.java:187)
      [ajc] 	at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
      [ajc] 	at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
      [ajc] 
      [ajc] (no source information available)
      [ajc] ABORT
      [ajc] 	
      [ajc] Exception thrown from AspectJ 1.5.0M4
      [ajc] 
      [ajc] This might be logged as a bug already -- find current bugs at
      [ajc]   http://bugs.eclipse.org/bugs/buglist.cgi?
product=AspectJ&component=Compiler
      [ajc] 
      [ajc] Bugs for exceptions thrown have titles File:line from the top 
stack, 
      [ajc] e.g., "SomeFile.java:243"
      [ajc] 
      [ajc] If you don't find the exception below in a bug, please add a new bug
      [ajc] at http://bugs.eclipse.org/bugs/enter_bug.cgi?product=AspectJ
      [ajc] To make the bug a priority, please include a test program
      [ajc] that can reproduce this exception.
      [ajc] 

      [ajc] when processing compilation unit C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_src\br\org\cgee\inovacao\favoritos\controle\dao\favoritoRe
sultado\FavoritoResultadoDAOImpl.java

      [ajc] when batch building with classpath: C:\Arquivos de 
programas\Java\jdk1.5.0_04\jre\lib\ext\dnsns.jar;C:\Arquivos de 
programas\Java\jdk1.5.0_04\jre\lib\ext\localedata.jar;C:\Arquivos de 
programas\Java\jdk1.5.0_04\jre\lib\ext\sunjce_provider.jar;C:\Arquivos de 
programas\Java\jdk1.5.0_04
\jre\lib\ext\sunpkcs11.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\AspectjLogger.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\CargaXMLEmpresa.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\FWStelaDataSet.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\FWStelaDynApi.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\StelaMail.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\StelaTextGenerator.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\activation.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\ajl.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\ant.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\aspectjrt.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\catalina-optional.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\catalina.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\classes12.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\commons-beanutils.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\commons-collections-
3.1.jar;C:\GrupoStela\cgee\Integracao Continua\empresa\temp_lib\commons-
collections.jar;C:\GrupoStela\cgee\Integracao Continua\empresa\temp_lib\commons-
dbcp-1.2.1.jar;C:\GrupoStela\cgee\Integracao Continua\empresa\temp_lib\commons-
digester.jar;C:\GrupoStela\cgee\Integracao Continua\empresa\temp_lib\commons-
el.jar;C:\GrupoStela\cgee\Integracao Continua\empresa\temp_lib\commons-
logging.jar;C:\GrupoStela\cgee\Integracao Continua\empresa\temp_lib\commons-
modeler.jar;C:\GrupoStela\cgee\Integracao Continua\empresa\temp_lib\commons-
pool-1.2.jar;C:\GrupoStela\cgee\Integracao Continua\empresa\temp_lib\jakarta-
regexp-1.3.jar;C:\GrupoStela\cgee\Integracao Continua\empresa\temp_lib\jasper-
compiler.jar;C:\GrupoStela\cgee\Integracao Continua\empresa\temp_lib\jasper-
runtime.jar;C:\GrupoStela\cgee\Integracao Continua\empresa\temp_lib\jsp-
api.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\logUsuario.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\mail.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\mini-concurrent.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\mini-j2ee.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\mx4j-jmx.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\naming-common.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\naming-factory.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\naming-java.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\naming-resources.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\ojdbc14.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\saxon8.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\servlet-api.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\servlets-common.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\servlets-default.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\servlets-invoker.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\tomcat-coyote.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\tomcat-http11.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\tomcat-jk2.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\tomcat-util.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\velocity-1.4.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\velocity-dep-1.4.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\winstone_v0.6.4.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\xalan.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\temp_lib\xml-apis.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\aspectjlogger\AspectjLogger.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\aspectjlogger\aspectjrt.jar;C:\GrupoStela\cgee\Integracao 
Continua\empresa\aspectjlogger\junit.jar;

      [ajc] null
      [ajc] java.lang.NullPointerException
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding.canBeSeenBy
(FieldBinding.java:144)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding.getVisibleBind
ing(FieldBinding.java:324)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope.findField
(Scope.java:814)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSi
ngleStaticImport(CompilationUnitScope.java:482)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSi
ngleImport(CompilationUnitScope.java:465)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultI
nImports(CompilationUnitScope.java:331)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultI
nTypes(CompilationUnitScope.java:400)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process
(Compiler.java:507)
      [ajc] 	at 
org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile
(Compiler.java:329)
      [ajc] 	at 
org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation
(AjBuildManager.java:759)
      [ajc] 	at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild
(AjBuildManager.java:225)
      [ajc] 	at 
org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild
(AjBuildManager.java:151)
      [ajc] 	at org.aspectj.ajdt.ajc.AjdtCommand.doCommand
(AjdtCommand.java:112)
      [ajc] 	at org.aspectj.ajdt.ajc.AjdtCommand.runCommand
(AjdtCommand.java:60)
      [ajc] 	at org.aspectj.tools.ajc.Main.run(Main.java:326)
      [ajc] 	at org.aspectj.tools.ant.taskdefs.Ajc10.spoon(Ajc10.java:598)
      [ajc] 	at org.aspectj.tools.ant.taskdefs.Ajc10.execute(Ajc10.java:484)
      [ajc] 	at org.apache.tools.ant.UnknownElement.execute
(UnknownElement.java:275)
      [ajc] 	at org.apache.tools.ant.Task.perform(Task.java:364)
      [ajc] 	at org.apache.tools.ant.Target.execute(Target.java:341)
      [ajc] 	at org.apache.tools.ant.Target.performTasks(Target.java:369)
      [ajc] 	at org.apache.tools.ant.Project.executeSortedTargets
(Project.java:1216)
      [ajc] 	at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
      [ajc] 	at org.apache.tools.ant.helper.DefaultExecutor.executeTargets
(DefaultExecutor.java:40)
      [ajc] 	at org.apache.tools.ant.Project.executeTargets
(Project.java:1068)
      [ajc] 	at org.apache.tools.ant.Main.runBuild(Main.java:668)
      [ajc] 	at org.apache.tools.ant.Main.startAnt(Main.java:187)
      [ajc] 	at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
      [ajc] 	at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)

------------------------------------------------------------------------------


The code that launch de error is:

------------------------------------------------------------------------------

package br.org.cgee.inovacao.favoritos.controle.dao.favoritoResultado;

import static 
br.org.cgee.inovacao.favoritos.controle.dao.favoritoResultado.FavoritoResultadoC
onsts.SQL_DELETE_BY_PRIMARY_KEY;
import static 
br.org.cgee.inovacao.favoritos.controle.dao.favoritoResultado.FavoritoResultadoC
onsts.SQL_DELETE_BY_SEQ_ID_FAVORITO;
import static 
br.org.cgee.inovacao.favoritos.controle.dao.favoritoResultado.FavoritoResultadoC
onsts.SQL_INSERT;
import static 
br.org.cgee.inovacao.favoritos.controle.dao.favoritoResultado.FavoritoResultadoC
onsts.SQL_SELECT_BY_SEQ_ID_FAVORITO;
import static 
br.org.cgee.inovacao.favoritos.controle.dao.favoritoResultado.FavoritoResultadoC
onsts.SQL_UPDATE_BY_SEQ_ID_RESULTADO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.LinkedList;
import java.util.List;

import br.org.cgee.inovacao.favoritos.modelo.Favorito;
import br.org.cgee.inovacao.favoritos.modelo.FavoritoResultado;
import br.org.cgee.inovacao.favoritos.util.ConnectionFactory;



/**
 * <p>Title: Implementação da interface FavoritoResultadoDAO</p>
 * <p>Description: Classe que implementa a interface FavoritoResultadoDAO para 
realizar o CRUD (create, read, update e delete) na
 * entidade FavoritoResultado. Esta classe não deve ser instanciada 
diretamente, deve-se utilizar a interface
 * FavoritoResultadoDAO e obter uma implementação através da factory 
br.org.cgee.inovacao.favoritos.fao.DAOFactory.
 * </p>
 * Exemplo:
 * </p>
 *  FavoritoResultadoDAO objFavoritoResultado =
 *          DAOFactory.newInstance().getFavoritoResultadoDAO();
 *
 * </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: Institulo Stela</p>
 * @see Favorito
 * @author Alessandro
 * @version 1.0
 */
public class FavoritoResultadoDAOImpl implements FavoritoResultadoDAO {

	private Connection conexao;
	private boolean isTx;

	/**
	 * Construtor default
	 */
	public FavoritoResultadoDAOImpl(){
	  this.isTx = false;
	}

	/**
	 * Construtor que aceita uma Connection. Deve ser usado quando for 
necessário controle de transação
	 *
	 * @param contTx  uma conexão com "autoCommit" igual a false
	 */
	public FavoritoResultadoDAOImpl(Connection conTx){
		this.conexao = conTx;
	  	this.isTx = true;

	}

	/**
	 * Recupera uma instância da entidade FavoritoResultado a partir de seus
	 * dois campos de identificação: seqIdFavorito e seqIdResultadoBusca
	 *
	 * @param  seqIdFavorito                   um dos campos de 
identificação de FavoritoResultado
	 * @param  seqIdResultadoBusca             um dos campos de 
identificação de FavoritoResultado
	 * @return                                 objeto que representa a 
entidade FavoritoResultado
	 * @throws FavoritoResultadoDAOException   qualquer erro ocorrido
	 * @see    FavoritoResultado
	 */
	public List<FavoritoResultado> read(int seqIdFavorito) throws 
FavoritoResultadoDAOException {

		List<FavoritoResultado> lista = new 
LinkedList<FavoritoResultado>();
		PreparedStatement pst = null;
		ResultSet rs = null;
		try {

			 this.carregarConexao();
     		 pst = this.conexao.prepareStatement
(SQL_SELECT_BY_SEQ_ID_FAVORITO);
			 pst.setInt(1, seqIdFavorito);
             rs = pst.executeQuery();

			 while (rs.next())
				 lista.add(new FavoritoResultado(seqIdFavorito, 
rs.getInt("SEQ_ID_RESULTADO_BUSCA")));

		} catch (Exception e){
		    throw new FavoritoResultadoDAOException("Erro em " + 
this.getClass().getName() + ".read(int seqIdFavorito): " + e.toString(), e);
		 }finally {
		           this.liberarRecursos(rs, pst);
				   this.liberarConexao();
				  }

		return lista;
	}


	/**
	 * Persiste uma instância da entidade FavoritoResultado
	 *
	 * @param  entidade                        objeto que representa a 
entidade FavoritoResultado
	 * @throws FavoritoResultadoDAOException   qualquer erro ocorrido
	 * @see    FavoritoResultado
	 */
	public void create(FavoritoResultado entidade) throws 
FavoritoResultadoDAOException {
	  PreparedStatement pst = null;

	  try{
		  this.carregarConexao();

		  pst = this.conexao.prepareStatement(SQL_INSERT);
		  pst.setInt(1, entidade.getSeqIdFavorito());
		  pst.setInt(2, entidade.getSeqIdResultadoBusca());
		  pst.executeUpdate();

		  this.commit();

		 }catch(Exception e){
			 this.rollBack();
		     throw new FavoritoResultadoDAOException("Erro em " + 
this.getClass().getName() + ".create(FavoritoResultado entidade)", e);
		 }finally {
		           this.liberarRecursos(pst);
				   this.liberarConexao();
				  }
	}

	/**
	 * Atualiza uma instância da entidade FavoritoResultado
	 *
	 * @param  entidade                       objeto que representa a 
entidade FavoritoResultado
	 * @throws FavoritoResultadoDAOException  qualquer erro ocorrido
	 * @see    FavoritoResultado
	 */
	public void update(FavoritoResultado entidade) throws 
FavoritoResultadoDAOException {
	  PreparedStatement pst = null;

	  try{
		  this.carregarConexao();

		  pst = this.conexao.prepareStatement
(SQL_UPDATE_BY_SEQ_ID_RESULTADO);
		  pst.setInt(1, entidade.getSeqIdFavorito()); // Campo a ser 
atualizado
		  pst.setInt(2, entidade.getSeqIdResultadoBusca()); // Campo 
usado para localizar o registro
		  pst.executeUpdate();

		  this.commit();

		 }catch(Exception e){
		    throw new FavoritoResultadoDAOException(e);
		 }finally {
		           this.liberarRecursos(pst);
				   this.liberarConexao();
				  }
	}

	/**
	 * Exclui uma instância da entidade FavoritoResultado a partir de seus
	 * dois campos de identificação: seqIdFavorito e seqIdResultadoBusca
	 *
     * @param  seqIdFavorito                   um dos campos de identificação 
de FavoritoResultado
	 * @param  seqIdResultadoBusca             um dos campos de 
identificação de FavoritoResultado
     * @throws FavoritoResultadoDAOException   qualquer erro ocorrido
	 * @see    FavoritoResultado
	 */
	public void delete(int seqIdFavorito, int seqIdResultadoBusca) throws 
FavoritoResultadoDAOException {
	  PreparedStatement pst = null;

	  try{
		  this.carregarConexao();

		  pst = this.conexao.prepareStatement
(SQL_DELETE_BY_PRIMARY_KEY);
		  pst.setInt(1, seqIdFavorito);
		  pst.setInt(2, seqIdResultadoBusca);
		  pst.executeUpdate();

		  this.commit();

		 }catch(Exception e){
		    throw new FavoritoResultadoDAOException("Erro em " + 
this.getClass().getName() + ".delete(int seqIdFavorito, int 
seqIdResultadoBusca)", e);
		 }finally {
		           this.liberarRecursos(pst);
				   this.liberarConexao();
				  }
	}


	public void delete(int seqIdFavorito) throws 
FavoritoResultadoDAOException {
		  PreparedStatement pst = null;

		  try{
			  this.carregarConexao();

			  pst = this.conexao.prepareStatement
(SQL_DELETE_BY_SEQ_ID_FAVORITO);
			  pst.setInt(1, seqIdFavorito);
			  pst.executeUpdate();

			  this.commit();

			 }catch(Exception e){
			    throw new FavoritoResultadoDAOException("Erro em " 
+ this.getClass().getName() + ".delete(int seqIdFavorito)",e);
			 }finally {
			           this.liberarRecursos(pst);
					   this.liberarConexao();
					  }
		}


  /**
   * Realiza o commit. Só realmente realizará o commit quando a operação 
realizada não fizer
   * parte uma transação. Isso ocorre quando um objeto desta classe é 
instanciado com o construtor default.
   *
   * @throws  qualquer erro ocorrido
   */
   private void commit() throws Exception {
	 if (!this.isTx)
		this.conexao.commit();
	}

  /**
   * Realiza o rollback. Só realmente realizará o rollback quando a operação 
realizada não fizer
   * parte uma transação. Isso ocorre quando um objeto desta classe é 
instanciado com o construtor default.
   *
   */
   private void rollBack() {
     try {
	    if (!this.isTx)
	   	  this.conexao.rollback();
	   } catch (Exception e){}
	  }

   /**
    * Carrega uma conexao do pool. Só realmente carregará essa conexao se 
operação a ser realizada não fizer
    * parte uma transação. Isso ocorre quando um objeto desta classe é 
instanciado com o construtor default.
    *
    * @throws  qualquer erro ocorrido
    */
    private void carregarConexao() throws Exception {
	  	if (!this.isTx)
			this.conexao = ConnectionFactory.getConnection();
	 }

    /**
     * Libera a conexao para o pool. Isso só realmente ocorrerá se a operação 
que está sendo realizada não fizer
     * parte uma transação. Isso ocorre quando um objeto desta classe é 
instanciado com o construtor default.
     */
	 private void liberarConexao() {

	  	try {

	  	 if (!this.isTx)
			 ConnectionFactory.liberarConnection(this.conexao);

	  	} catch (Exception e){}
	  }

	  /**
	   * Libera os recursos utilizados no acesso ao banco de dados.
	   *
	   * @param  rs   objeto ResultSet
	   * @param  st   objeto Statement
	   *
	   * @see java.sql.ResultSet
	   * @see java.sql.Statement
	   */
	 private void liberarRecursos(ResultSet rs, Statement st) {
	  	try {
			 if(rs != null){ rs.close(); rs = null; }
		     if(st != null){ st.close(); st = null; }
		} catch(Exception ex){}
	  }

	 /**
	  * Libera o objeto statement utilizado no acesso ao banco de dados
	  *
	  * @param  st  objeto Statement
	  *
	  * @see Statement
	  */
	 private void liberarRecursos(Statement st) {
	  	try {
			 if(st != null){ st.close(); st = null; }
		} catch(Exception ex){}
	  }
}

------------------------------------------------------------------------------

Thanks,
Lucas Nazário
Comment 1 Andrew Clement CLA 2005-10-28 09:52:32 EDT
i'll take a look
Comment 2 Andrew Clement CLA 2005-10-31 03:32:22 EST
Tricky to work on when its a large source file that has multiple dependencies.

Is there anyway you can narrow it down to a smaller case that fails, perhaps by
commenting out your code whilst checking that the error still occurs?  The line
where the NPE occurs is:

if (invocationType.fPackage != declaringClass.fPackage) return false;

either of those *could* be null.  

What aspects do you have in the system, are you using inter-type declarations?

It is also interesting that you use static imports, we haven't done a lot of
testing with those.
Comment 3 Eduardo Piveta CLA 2005-11-05 09:09:57 EST
Hello,

I tried to narrow lucas' source code file. The bug appears when the constant has
default, private or protected modifier. The following example exposes the bug:

package a;
import static a.Consts.A_CONST;
public class TestNPE {}

package a;
public class Consts {
   static String A_CONST="bla";
}

The consts could be made public as a possible workaround.

Eduardo Piveta
Comment 4 Andrew Clement CLA 2005-11-07 06:03:27 EST
I suspected static imports and Eduardo has done some great work there reducing
the problem to a basic scenario.  Based on that I've committed a fix in the
compiler.

At a static import location the invocationsite is null and the scope is the
compilationunitscope (as the field reference is outside of any class).  The JDT
compiler allows for this but we hadn't upgraded our modifications to the
compiler to allow for it.  I've done it now, added Eduardo's testcase plus some
similar ones that try different visibilities.

waiting on build before closing.
Comment 5 Andrew Clement CLA 2005-11-07 08:59:39 EST
fix available.