Alarm iteration script error

New to Foglight scripting and new to Groovy.

Been a Foglight admin for some time now and coder for much longer.

INn the script console I've been putting togethor a little something to iterate over all the current alarms. It's WIP and for now just breaks out when it finds a matching alarm then displays some details.

def alarmID
String alarmMessage
String alarmRule
String alarmSource
boolean foundAlarm=false

def alarmService = server.get("AlarmService")
def alarmList = alarmService.getCurrentAlarms()

for (alarm in alarmList) {
	alarmMessage=alarm.getMessage()
	if(alarm && alarmMessage && !alarmMessage.isEmpty()) {
		alarmID=alarm.getID()
		alarmRule=alarm.getRuleName()
		alarmSource=alarm.getSourceName()
		if(alarmRule.contains('Database_Error_Log')) {
			if(alarmMessage.contains('Error: 9414, Severity: 20, State: 1')) {
				foundAlarm=true
				break
			}
		}
	}
}
if(foundAlarm) {
	"Match found\nID: $alarmID Rule: $alarmRule Source: $alarmSource Message: $alarmMessage"
} else {
	"No match found"
}

Now, if I comment out either  of the nested ifs that use contains it all works just fine. But if both are uncommented we get an error and stack thus

com.quest.nitro.service.sl.interfaces.scripting.ScriptingException: com.quest.nitro.service.sl.interfaces.scripting.ScriptAbortException: java.lang.NullPointerException: Cannot invoke method contains() on null object
----script start------
def alarmService = server.get("AlarmService")
def alarmList = alarmService.getCurrentAlarms()

for (alarm in alarmList) {
alarmMessage=alarm.getMessage()
if(alarm && alarmMessage && !alarmMessage.isEmpty()) {
alarmID=alarm.getID()
alarmRule=alarm.getRuleName()
alarmSource=alarm.getSourceName()
if(alarmRule.contains('Database_Error_Log')) {
if(alarmMessage.contains('Error: 9414, Severity: 20, State: 1')) {
foundAlarm=true
break
}
}
}
}
if(foundAlarm) {
"Match found\nID: $alarmID Rule: $alarmRule Source: $alarmSource Message: $alarmMessage"
} else {
"No match found"
---- script end ------
com.quest.nitro.service.scripting.ScriptingService.invoke(ScriptingService.java:647)
com.quest.nitro.service.sl.impl.scripting.ScriptingBean.invoke(ScriptingBean.java:177)
sun.reflect.GeneratedMethodAccessor1539.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
com.quest.nitro.service.sl.aop.AuditingInterceptor.invoke(AuditingInterceptor.java:95)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
com.sun.proxy.$Proxy71.invoke(Unknown Source)
sun.reflect.GeneratedMethodAccessor1539.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
com.sun.proxy.$Proxy71.invoke(Unknown Source)
sun.reflect.GeneratedMethodAccessor39154.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
org.codehaus.groovy.runtime.InvokerHelper.invokePojoMethod(InvokerHelper.java:913)
org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:904)
com.quest.nitro.service.scripting.FoglightServiceInterface.invokeMethod(FoglightServiceInterface.java:100)
org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:48)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
system._core_commons.scripts.runScript.run(runScript:42)
com.quest.nitro.service.scripting.groovy.GroovyScript.exec(GroovyScript.java:153)
com.quest.nitro.service.scripting.Script.runInternal(Script.java:321)
com.quest.nitro.service.scripting.Script.run(Script.java:266)
com.quest.nitro.service.scripting.ScriptingService.invoke(ScriptingService.java:635)
sun.reflect.GeneratedMethodAccessor443.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
sun.reflect.misc.Trampoline.invoke(MethodUtil.java:72)
sun.reflect.GeneratedMethodAccessor265.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:276)
com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112)
com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46)
com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237)
com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138)
com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
com.quest.nitro.service.mbean.ForgeMBeanServerSupport.invoke(ForgeMBeanServerSupport.java:144)
sun.reflect.GeneratedMethodAccessor266.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
com.quest.nitro.service.mbean.ForgeMBeanServerFactory$1.invoke(ForgeMBeanServerFactory.java:68)
com.sun.proxy.$Proxy15.invoke(Unknown Source)
javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:298)
com.sun.proxy.$Proxy265.invoke(Unknown Source)
com.quest.nitro.webconsole.services.ScriptServiceImpl.eval(ScriptServiceImpl.java:89)
sun.reflect.GeneratedMethodAccessor441.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
com.quest.wcf.services.Registry$LazyInvocationHandler.invoke(Registry.java:133)
com.sun.proxy.$Proxy282.eval(Unknown Source)
com.quest.wcf.core.module.function.FunctionManager.evaluateScript(FunctionManager.java:582)
com.quest.wcf.core.module.function.FunctionManager.evaluateScriptFunction(FunctionManager.java:401)
com.quest.wcf.core.module.function.FunctionManager.evaluate(FunctionManager.java:273)
com.quest.wcf.core.module.function.FunctionManager.getResult(FunctionManager.java:189)
com.quest.wcf.core.module.function.AsyncFunctionProgressTracker.execute(AsyncFunctionProgressTracker.java:64)
com.quest.wcf.core.module.function.BaseAsyncProgressTracker.run(BaseAsyncProgressTracker.java:185)
com.quest.nitro.service.taskmanager.RunnableTaskImpl.run(RunnableTaskImpl.java:71)
com.quest.nitro.service.taskmanager.TaskStatusImpl.run(TaskStatusImpl.java:181)
com.quest.nitro.service.taskmanager.TaskExecutor.run(TaskExecutor.java:104)
java.lang.Thread.run(Thread.java:750)
Caused by:
com.quest.nitro.service.sl.interfaces.scripting.ScriptAbortException: java.lang.NullPointerException: Cannot invoke method contains() on null object
----script start------
def alarmService = server.get("AlarmService")
def alarmList = alarmService.getCurrentAlarms()

for (alarm in alarmList) {
alarmMessage=alarm.getMessage()
if(alarm && alarmMessage && !alarmMessage.isEmpty()) {
alarmID=alarm.getID()
alarmRule=alarm.getRuleName()
alarmSource=alarm.getSourceName()
if(alarmRule.contains('Database_Error_Log')) {
if(alarmMessage.contains('Error: 9414, Severity: 20, State: 1')) {
foundAlarm=true
break
}
}
}
}
if(foundAlarm) {
"Match found\nID: $alarmID Rule: $alarmRule Source: $alarmSource Message: $alarmMessage"
} else {
"No match found"
---- script end ------
com.quest.nitro.service.scripting.Script.runInternal(Script.java:345)
com.quest.nitro.service.scripting.Script.run(Script.java:266)
com.quest.nitro.service.scripting.ScriptingService.invoke(ScriptingService.java:635)
com.quest.nitro.service.sl.impl.scripting.ScriptingBean.invoke(ScriptingBean.java:177)
sun.reflect.GeneratedMethodAccessor1539.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
com.quest.nitro.service.sl.aop.AuditingInterceptor.invoke(AuditingInterceptor.java:95)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
com.sun.proxy.$Proxy71.invoke(Unknown Source)
sun.reflect.GeneratedMethodAccessor1539.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
com.sun.proxy.$Proxy71.invoke(Unknown Source)
sun.reflect.GeneratedMethodAccessor39154.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
org.codehaus.groovy.runtime.InvokerHelper.invokePojoMethod(InvokerHelper.java:913)
org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:904)
com.quest.nitro.service.scripting.FoglightServiceInterface.invokeMethod(FoglightServiceInterface.java:100)
org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:48)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
system._core_commons.scripts.runScript.run(runScript:42)
com.quest.nitro.service.scripting.groovy.GroovyScript.exec(GroovyScript.java:153)
com.quest.nitro.service.scripting.Script.runInternal(Script.java:321)
com.quest.nitro.service.scripting.Script.run(Script.java:266)
com.quest.nitro.service.scripting.ScriptingService.invoke(ScriptingService.java:635)
sun.reflect.GeneratedMethodAccessor443.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
sun.reflect.misc.Trampoline.invoke(MethodUtil.java:72)
sun.reflect.GeneratedMethodAccessor265.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:276)
com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112)
com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46)
com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237)
com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138)
com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
com.quest.nitro.service.mbean.ForgeMBeanServerSupport.invoke(ForgeMBeanServerSupport.java:144)
sun.reflect.GeneratedMethodAccessor266.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
com.quest.nitro.service.mbean.ForgeMBeanServerFactory$1.invoke(ForgeMBeanServerFactory.java:68)
com.sun.proxy.$Proxy15.invoke(Unknown Source)
javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:298)
com.sun.proxy.$Proxy265.invoke(Unknown Source)
com.quest.nitro.webconsole.services.ScriptServiceImpl.eval(ScriptServiceImpl.java:89)
sun.reflect.GeneratedMethodAccessor441.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
com.quest.wcf.services.Registry$LazyInvocationHandler.invoke(Registry.java:133)
com.sun.proxy.$Proxy282.eval(Unknown Source)
com.quest.wcf.core.module.function.FunctionManager.evaluateScript(FunctionManager.java:582)
com.quest.wcf.core.module.function.FunctionManager.evaluateScriptFunction(FunctionManager.java:401)
com.quest.wcf.core.module.function.FunctionManager.evaluate(FunctionManager.java:273)
com.quest.wcf.core.module.function.FunctionManager.getResult(FunctionManager.java:189)
com.quest.wcf.core.module.function.AsyncFunctionProgressTracker.execute(AsyncFunctionProgressTracker.java:64)
com.quest.wcf.core.module.function.BaseAsyncProgressTracker.run(BaseAsyncProgressTracker.java:185)
com.quest.nitro.service.taskmanager.RunnableTaskImpl.run(RunnableTaskImpl.java:71)
com.quest.nitro.service.taskmanager.TaskStatusImpl.run(TaskStatusImpl.java:181)
com.quest.nitro.service.taskmanager.TaskExecutor.run(TaskExecutor.java:104)
java.lang.Thread.run(Thread.java:750)

I'm a bit mystified and wondering if anyone knows something I'm missing. Which seems pretty likely Joy

TIA for any help anyone can provide!