GALERA ME AJUDEM.
estou com um codigo que está dando nullpointer numa linha e não sei como corrigi-lo.
heis o codigo.
public void verificarModemComodato(Instance newInstance, Instance tbnInstance, Instance idcInstance)
throws Exception {
//PJ718 - Foguete Gugu - INICIO
/*log.info("Chamando o método includeAssociationProduct para o instance");
Element.includeAssociationProduct("Modem em Comodato", "Combinação de Produtos", instance.getElements());*/
//caso nao haja modem na campanha, remove o modem e seus parametros
if(tbnInstance != null || idcInstance!= null){
/* 806 :: verifica se o turbonet eh maior que 5 mega para nao iserir modem comodato */
boolean isTurbonetMaior5Mega = false;
Iterator iTbInstanceElements = tbnInstance.getElements().iterator();<- [b]dá null pointer nessa linha (tbnInstance)[/b]
while (iTbInstanceElements.hasNext()) {
InstanceElement insElement = (InstanceElement)iTbInstanceElements.next();
Element element = insElement.getElement();
if (element.getType().equals("T")) {
Iterator iParams = element.getParameters().iterator();
while (iParams.hasNext()) {
ElementParam elemParam = (ElementParam)iParams.next();
if (elemParam.getName().equalsIgnoreCase("download")) {
if (elemParam.getMaxValue().floatValue() > 5120) {
isTurbonetMaior5Mega = true;
break;
}
}
}
}
}
coloca masi uma validacao mais ou menos assim
if( tbnInstance.getElements() != null)
{
}
tbnInstance está nulo? Se está nulo, por que estás acessando um método dele?
então a questão é que não fui eu que desenvolvi o codigo, eu dou suporte do mesmo.
como seria resolvido isso.
detalhe eu sou amador em java.
pintofree vou tentar a tua sujestão.
pintofree, não deu certo.
Cara, posta o novo codigo, e tmb posta a mesagem de erro completa, isso é importante pra que a gente possa te ajudar
Codigo
public void verificarModemComodato(Instance newInstance, Instance tbnInstance, Instance idcInstance)
throws Exception {
//PJ718 - Foguete Gugu - INICIO
/*log.info("Chamando o método includeAssociationProduct para o instance");
Element.includeAssociationProduct("Modem em Comodato", "Combinação de Produtos", instance.getElements());*/
//caso nao haja modem na campanha, remove o modem e seus parametros
if(tbnInstance.getElements() != null || idcInstance!= null){
/* 806 :: verifica se o turbonet eh maior que 5 mega para nao iserir modem comodato */
boolean isTurbonetMaior5Mega = false;
Iterator iTbInstanceElements = tbnInstance.getElements().iterator();
while (iTbInstanceElements.hasNext()) {
InstanceElement insElement = (InstanceElement)iTbInstanceElements.next();
Element element = insElement.getElement();
if (element.getType().equals("T")) {
Iterator iParams = element.getParameters().iterator();
while (iParams.hasNext()) {
ElementParam elemParam = (ElementParam)iParams.next();
if (elemParam.getName().equalsIgnoreCase("download")) {
if (elemParam.getMaxValue().floatValue() > 5120) {
isTurbonetMaior5Mega = true;
break;
}
}
}
}
}
Erro no Eclipse
10/07/05 17:29:49 java.lang.NullPointerException
10/07/05 17:29:49 at com.gvt.servlet.store.ChooseElements.verificarModemComodato(ChooseElements.java:1923)
10/07/05 17:29:49 at com.gvt.servlet.store.ChooseElements.processPost(ChooseElements.java:923)
10/07/05 17:29:49 at com.gvt.servlet.store.ChooseElements.doPost(ChooseElements.java:390)
Amigo, vc tem q verificar se o objeto em si nao esta nulo antes de verificar se algum atributo dele está.
Faça assim
//caso nao haja modem na campanha, remove o modem e seus parametros
if(tbnInstance!= null && tbnInstance.getElements() != null && idcInstance!= null){
}
aaaaaaaa!!!
waw.
Valeu pintofree.
funcionou.
Valeu muito brigado
Cara, só uma dica…
Se vc for inserir código direto das regras de negócio da sua empresa, tenta mascarar algumas informações, OK ? Lendo o código, deu pra ver que se o turbonet for maior que 5 megas, não se aplica comodato, certo? Só que se eu descobrir alguma falha na sua lógica, acho meios de burlar isso, entendeu?
[]´s