Validação java

O método a seguir só faz o cadastro uma única vez. Se o usuário tentar fazer outro cadastro ele não realiza e nem mostra erro. Acredito que seja a validação que fiz. Alguém da uma força ?

Classe LocaçãoServico

import entidade.Locacao;
import estruturaencadeada.EstruturaSimples;
import interfaces.IEstruturaServico;
import repositorio.Repositorio;

 public class LocacaoServico implements IEstruturaServico {

   Repositorio repositorio = new Repositorio();

public EstruturaSimples<Locacao> inicio = null;

@Override
public EstruturaSimples<Locacao> add(EstruturaSimples<Locacao> referencia, Locacao novaLocacao) {

	if (referencia != null) {
		if (referencia.informacao.getCodigoLocacao() == novaLocacao.getCodigoLocacao()) {
			System.out.println("Código já existe");

		} else if (referencia.informacao.getPlaca().contains(novaLocacao.getPlaca())) {
			System.out.println("Placa já existe");

		} else if (referencia.informacao.getCpfUsuario().contains(novaLocacao.getCpfUsuario())) {
			System.out.println("CPF já existe");
		}
	}else {

		return this.repositorio.add(referencia, novaLocacao);
	}

	return referencia;
}

Classe Repositório

 @Override
public EstruturaSimples<Locacao> add(EstruturaSimples<Locacao> referencia, Locacao novaLocacao) {

	if (referencia == null) {
		novaLocacao.setValorTotal(novaLocacao.getValorDiaria() * novaLocacao.getTotalDias());
		EstruturaSimples<Locacao> novaEstrutura = new EstruturaSimples<Locacao>();
		novaEstrutura.informacao = novaLocacao;
		System.out.println("Locação efetuada!");
		return novaEstrutura;
	} else if (referencia != null && referencia.proximo == null) {
		referencia.proximo = add(referencia.proximo, novaLocacao);

		return referencia;
	}

	else if (referencia != null && referencia.proximo != null) {
		referencia.proximo.proximo = add(referencia.proximo.proximo, novaLocacao);

		return referencia;

	} else
		return referencia;
}

Se vc acha que é a validação, basta comentá-la e fazer a tentativa de inserção passando sempre valores válidos. Se funcionar, teu algoritmo de validação está errado. Implemente o que precisar aos poucos e vá testando, até achar o problema. Normalmente é assim que se programa e se encontra bugs e erros. Se ainda não achar, usa o debugger… Em mais de 20 anos programando, devo ter usado um debugger menos de 5 vezes.

if (referencia.informacao.getCodigoLocacao() == novaLocacao.getCodigoLocacao()) {
System.out.println(“Código já existe”);
Não estou entendendo o que você esta querendo fazer. comparando codigosLocacao com NovaLocacao ja que na logica nova locacao ainda não existe . Esse codigo não é auto-increment no banco ? se for, como comparar uma coisa que jamais vai ser repetir . procure utilizar while e next().