[rules-users] Eval0Invoker : java.lang.NullPointerException

Wolfgang Laun wolfgang.laun at gmail.com
Wed Dec 14 14:10:06 EST 2011


If you have data where
   $panDevice.getSmartDeviceModel()
returns null, a condition such as
   eval( $panDevice.getSmartDeviceModel().getDeviceClass() == null )
will cause a NPE. It is evaluated in parallel and independent from any
other rool that might check
   $panDevice.getSmartDeviceModel() == null

All accesses to fields of $panDevice.getSmartDeviceModel() must be
guarded against this reference being null.

-W

On 14/12/2011, Venkat <ven12344 at yahoo.com> wrote:
> Please find the rules below. That exception is happening from this rule
>
> PAN Device MAC Address null or empty rule
>
> to
>
> PAN Device Smart Device Model null rule
>
>
>
> import java.lang.Error;
> import java.util.List;
> import com.ge.energy.drms.smartgrid.datamodel.model.Customer
> import com.ge.energy.drms.core.datamodel.messagesupport.ServiceContext
> import
> com.ge.energy.drms.external.integration.service.persistence.RegistrationDeregistrationPersistence
> import
> com.ge.energy.drms.smartgrid.datamodel.services.enddevicemanagement.pandeviceregistrationservice.MissingEntryFault
> import com.ge.energy.drms.smartgrid.datamodel.model.ElectricServiceInterface
> import com.ge.energy.drms.smartgrid.datamodel.model.PANDevice
>
> global Customer customer;
> global ServiceContext serviceContext;
>
> rule "Customer and Service Context null check rule"
> no-loop true
> salience 1000
> 	when
> 		eval( customer == null && serviceContext == null ) // condition
> 	then
> 		throw new MissingEntryFault("Customer and ServiceContext are both
> required"); // consequence
> end
>
> rule "User Name null or empty check rule"
> no-loop true
> salience 900
> 	when
> 		ServiceContext( userName == null || userName == "" ) // condition
> 	then
> 		throw new MissingEntryFault("USER ID is required"); // consequence
> end
> /*
> rule "User Name validation check rule"
> no-loop true
> salience 800
> 	when
> 		$serviceContext : ServiceContext()
> 		RegistrationDeregistrationPersistence( eval( validateUserName(
> $serviceContext ) <= -1 ) ) // condition
> 	then
> 		throw new Error("USER ID is invalid"); // consequence
> end
> */
> rule "Service Account Number null or empty rule"
> no-loop true
> salience 700
> 	when
> 		Customer( serviceAccountNumber == null || serviceAccountNumber == "" ) //
> condition
> 	then
> 		throw new MissingEntryFault("Service Account Number is required"); //
> consequence
> end
>
> rule "Install Service null or empty rule"
> no-loop true
> salience 600
> 	when
> 		Customer( installService == null || installService == "" ) // condition
> 	then
> 		throw new MissingEntryFault("Install Service is required"); // consequence
> end
>
> rule "Electric Service Interface null or empty rule"
> no-loop true
> salience 500
> 	when
> 		Customer( electricServiceInterfaces == null ||
> electricServiceInterfaces.size() <=0 ) // condition
> 	then
> 		throw new MissingEntryFault("Electric Service Interfaces are required");
> // consequence
> end
>
> rule "ESN null or empty rule"
> no-loop true
> salience 400
> 	when
> 		$customer : Customer()
> 		$esi : ElectricServiceInterface() from
> $customer.getElectricServiceInterfaces()
> 		eval( $esi.getESN() == null || $esi.getESN().isEmpty() ) //condition
> 	then
> 		throw new MissingEntryFault("ESN cannot be null or empty"); // consequence
> end
>
> rule "PAN Device null or empty rule"
> no-loop true
> salience 300
> 	when
> 		$customer : Customer()
> 		$esi : ElectricServiceInterface() from
> $customer.getElectricServiceInterfaces()
> 		eval( $esi.getPANdevices() == null || $esi.getPANdevices().size()<=0 )
> //condition
> 	then
> 		throw new MissingEntryFault("PAN Device list cannot be null or empty"); //
> consequence
> end
>
> rule "PAN Device MAC Address null or empty rule"
> no-loop true
> salience 200
> 	when
> 		$customer : Customer()
> 		$esis : ElectricServiceInterface() from
> $customer.getElectricServiceInterfaces()
> 			$panDevice : PANDevice() from $esis.getPANdevices()
> 			eval( $panDevice.getMACAddress() == null || $panDevice.getMACAddress() ==
> "" ) //condition
> 	then
> 		throw new MissingEntryFault("MAC Address cannot be null or empty"); //
> consequence
> end
>
> rule "PAN Device Install Code null or empty rule"
> no-loop true
> salience 100
> 	when
> 		$customer : Customer()
> 		$esis : ElectricServiceInterface() from
> $customer.getElectricServiceInterfaces()
> 			$panDevice : PANDevice() from $esis.getPANdevices()
> 			eval( $panDevice.getInstallCode() == null || $panDevice.getInstallCode()
> == "" ) //condition
> 	then
> 		throw new MissingEntryFault("Install Code cannot be null or empty"); //
> consequence
> end
>
> rule "PAN Device Smart Device Model null rule"
> no-loop true
> salience 90
> 	when
> 		$customer : Customer()
> 		$esis : ElectricServiceInterface() from
> $customer.getElectricServiceInterfaces()
> 			$panDevice : PANDevice() from $esis.getPANdevices()
> 			eval( $panDevice.getSmartDeviceModel() == null ) //condition
> 	then
> 		throw new MissingEntryFault("Smart Device Model cannot be null"); //
> consequence
> end
>
> rule "PAN Device Smart Device Model Device Class null rule"
> no-loop true
> salience 80
> 	when
> 		$customer : Customer()
> 		$esis : ElectricServiceInterface() from
> $customer.getElectricServiceInterfaces()
> 			$panDevice : PANDevice() from $esis.getPANdevices()
> 			eval( $panDevice.getSmartDeviceModel().getDeviceClass() == null )
> //condition
> 	then
> 		throw new MissingEntryFault("Device Class cannot be null"); // consequence
> end
>
> rule "PAN Device Smart Device Model Device Type null rule"
> no-loop true
> salience 70
> 	when
> 		$customer : Customer()
> 		$esis : ElectricServiceInterface() from
> $customer.getElectricServiceInterfaces()
> 			$panDevice :PANDevice() from $esis.getPANdevices()
> 			eval( $panDevice.getSmartDeviceModel().getDeviceType() == null )
> //condition
> 	then
> 		throw new MissingEntryFault("Device Type cannot be null"); // consequence
> end
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/Eval0Invoker-java-lang-NullPointerException-tp3586222p3586355.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



More information about the rules-users mailing list