Buggy code:
@ ManagedBean ( name = "ucRowStyleAlarmGenerator" ) @ ViewScoped public class UcRowStyleAlarmGenerator implements RowStypeAlarmGenerator , Serializable { private static final long serialVersionUID = - 4481220679566199852L ; public static final String ifSigQSNR = "ifSigQSNR" ; public static final String fecCorrected = "fecCorrected" ; public static final String fecUncorrectable = "fecUncorrectable" ; public static final String avgOnlineCmDsSNR = "avgOnlineCmDsSNR" ; private String alarmColorLv1 ; private String alarmColorLv2 ; private String alarmColorLv3 ; private double minFecCorrectedLv1 ; private double maxFecCorrectedLv1 ; private double minFecUncorrectableLv1 ; private double maxFecUncorrectableLv1 ; private double minIfSigQSNRLv1 ; private double maxIfSigQSNRLv1 ; private double minAvgOnlineCmDnSNRLv1 ; private double maxAvgOnlineCmDnSNRLv1 ; private double minFecCorrectedLv2 ; private double maxFecCorrectedLv2 ; private double minFecUncorrectableLv2 ; private double maxFecUncorrectableLv2 ; private double minIfSigQSNRLv2 ; private double maxIfSigQSNRLv2 ; private double minAvgOnlineCmDnSNRLv2 ; private double maxAvgOnlineCmDnSNRLv2 ; private double minFecCorrectedLv3 ; private double maxFecCorrectedLv3 ; private double minFecUncorrectableLv3 ; private double maxFecUncorrectableLv3 ; private double minIfSigQSNRLv3 ; private double maxIfSigQSNRLv3 ; private double minAvgOnlineCmDnSNRLv3 ; private double maxAvgOnlineCmDnSNRLv3 ; @ PostConstruct public void init ( ) { FacesContext facesContext = FacesContext . getCurrentInstance ( ) ; ExternalContext externalContext = facesContext . getExternalContext ( ) ; PortletRequest portletRequest = ( ( PortletRequest ) ( externalContext . getRequest ( ) ) ) ; PortletPreferences portletPreferences = portletRequest . getPreferences ( ) ; alarmColorLv1 = portletPreferences . getValue ( "alarmColorLv1" , "#ff9900" ) ; alarmColorLv2 = portletPreferences . getValue ( "alarmColorLv2" , "#ff00ff" ) ; <START_BUG> alarmColorLv3 = portletPreferences . getValue ( "alarmColorLv2" , "#ff0000" ) ; <END_BUG> minFecCorrectedLv1 = parseDouble ( portletPreferences . getValue ( "minFecCorrectedLv1" , "0" ) ) ; maxFecCorrectedLv1 = parseDouble ( portletPreferences . getValue ( "maxFecCorrectedLv1" , "5" ) ) ; minFecUncorrectableLv1 = parseDouble ( portletPreferences . getValue ( "minFecUncorrectableLv1" , "0" ) ) ; maxFecUncorrectableLv1 = parseDouble ( portletPreferences . getValue ( "maxFecUncorrectableLv1" , "2" ) ) ; minIfSigQSNRLv1 = ( parseDouble ( portletPreferences . getValue ( "minIfSigQSNRLv1" , "20" ) ) ) * 10 ; maxIfSigQSNRLv1 = ( parseDouble ( portletPreferences . getValue ( "maxIfSigQSNRLv1" , "24" ) ) ) * 10 ; minAvgOnlineCmDnSNRLv1 = ( parseDouble ( portletPreferences . getValue ( "minAvgOnlineCmDnSNRLv1" , "30" ) ) ) * 10 ; maxAvgOnlineCmDnSNRLv1 = ( parseDouble ( portletPreferences . getValue ( "maxAvgOnlineCmDnSNRLv1" , "33" ) ) ) * 10 ; minFecCorrectedLv2 = parseDouble ( portletPreferences . getValue ( "minFecCorrectedLv2" , "5" ) ) ; maxFecCorrectedLv2 = parseDouble ( portletPreferences . getValue ( "maxFecCorrectedLv2" , "10" ) ) ; minFecUncorrectableLv2 = parseDouble ( portletPreferences . getValue ( "minFecUncorrectableLv2" , "2" ) ) ; maxFecUncorrectableLv2 = parseDouble ( portletPreferences . getValue ( "maxFecUncorrectableLv2" , "5" ) ) ; minIfSigQSNRLv2 = ( parseDouble ( portletPreferences . getValue ( "minIfSigQSNRLv2" , "16" ) ) ) * 10 ; maxIfSigQSNRLv2 = ( parseDouble ( portletPreferences . getValue ( "maxIfSigQSNRLv2" , "20" ) ) ) * 10 ; minAvgOnlineCmDnSNRLv2 = ( parseDouble ( portletPreferences . getValue ( "minAvgOnlineCmDnSNRLv2" , "28" ) ) ) * 10 ; maxAvgOnlineCmDnSNRLv2 = ( parseDouble ( portletPreferences . getValue ( "maxAvgOnlineCmDnSNRLv2" , "30" ) ) ) * 10 ; minFecCorrectedLv3 = parseDouble ( portletPreferences . getValue ( "minFecCorrectedLv3" , "10" ) ) ; maxFecCorrectedLv3 = parseDouble ( portletPreferences . getValue ( "maxFecCorrectedLv3" , "100" ) ) ; minFecUncorrectableLv3 = parseDouble ( portletPreferences . getValue ( "minFecUncorrectableLv3" , "5" ) ) ; maxFecUncorrectableLv3 = parseDouble ( portletPreferences . getValue ( "maxFecUncorrectableLv3" , "100" ) ) ; minIfSigQSNRLv3 = ( parseDouble ( portletPreferences . getValue ( "minIfSigQSNRLv3" , "10" ) ) ) * 10 ; maxIfSigQSNRLv3 = ( parseDouble ( portletPreferences . getValue ( "maxIfSigQSNRLv3" , "16" ) ) ) * 10 ; minAvgOnlineCmDnSNRLv3 = ( parseDouble ( portletPreferences . getValue ( "minAvgOnlineCmDnSNRLv3" , "22" ) ) ) * 10 ; maxAvgOnlineCmDnSNRLv3 = ( parseDouble ( portletPreferences . getValue ( "maxAvgOnlineCmDnSNRLv3" , "28" ) ) ) * 10 ; } @ Override public String getRowDataCss ( Object value , String dataType ) { } private double parseDouble ( String value ) { } public double getMinFecCorrectedLv1 ( ) { } public void setMinFecCorrectedLv1 ( double minFecCorrectedLv1 ) { } public double getMaxFecCorrectedLv1 ( ) { } public void setMaxFecCorrectedLv1 ( double maxFecCorrectedLv1 ) { } public double getMinFecUncorrectableLv1 ( ) { } public void setMinFecUncorrectableLv1 ( double minFecUncorrectableLv1 ) { } public double getMaxFecUncorrectableLv1 ( ) { } public void setMaxFecUncorrectableLv1 ( double maxFecUncorrectableLv1 ) { } public double getMinIfSigQSNRLv1 ( ) { } public void setMinIfSigQSNRLv1 ( double minIfSigQSNRLv1 ) { } public double getMaxIfSigQSNRLv1 ( ) { } public void setMaxIfSigQSNRLv1 ( double maxIfSigQSNRLv1 ) { } public double getMinAvgOnlineCmDnSNRLv1 ( ) { } public void setMinAvgOnlineCmDnSNRLv1 ( double minAvgOnlineCmDnSNRLv1 ) { } public double getMaxAvgOnlineCmDnSNRLv1 ( ) { } public void setMaxAvgOnlineCmDnSNRLv1 ( double maxAvgOnlineCmDnSNRLv1 ) { } public double getMinFecCorrectedLv2 ( ) { } public void setMinFecCorrectedLv2 ( double minFecCorrectedLv2 ) { } public double getMaxFecCorrectedLv2 ( ) { } public void setMaxFecCorrectedLv2 ( double maxFecCorrectedLv2 ) { } public double getMinFecUncorrectableLv2 ( ) { } public void setMinFecUncorrectableLv2 ( double minFecUncorrectableLv2 ) { } public double getMaxFecUncorrectableLv2 ( ) { } public void setMaxFecUncorrectableLv2 ( double maxFecUncorrectableLv2 ) { } public double getMinIfSigQSNRLv2 ( ) { } public void setMinIfSigQSNRLv2 ( double minIfSigQSNRLv2 ) { } public double getMaxIfSigQSNRLv2 ( ) { } public void setMaxIfSigQSNRLv2 ( double maxIfSigQSNRLv2 ) { } public double getMinAvgOnlineCmDnSNRLv2 ( ) { } public void setMinAvgOnlineCmDnSNRLv2 ( double minAvgOnlineCmDnSNRLv2 ) { } public double getMaxAvgOnlineCmDnSNRLv2 ( ) { } public void setMaxAvgOnlineCmDnSNRLv2 ( double maxAvgOnlineCmDnSNRLv2 ) { } public double getMinFecCorrectedLv3 ( ) { } public void setMinFecCorrectedLv3 ( double minFecCorrectedLv3 ) { } public double getMaxFecCorrectedLv3 ( ) { } public void setMaxFecCorrectedLv3 ( double maxFecCorrectedLv3 ) { } public double getMinFecUncorrectableLv3 ( ) { } public void setMinFecUncorrectableLv3 ( double minFecUncorrectableLv3 ) { } public double getMaxFecUncorrectableLv3 ( ) { } public void setMaxFecUncorrectableLv3 ( double maxFecUncorrectableLv3 ) { } public double getMinIfSigQSNRLv3 ( ) { } public void setMinIfSigQSNRLv3 ( double minIfSigQSNRLv3 ) { }

Fix:
alarmColorLv3 = portletPreferences . getValue ( "alarmColorLv3" , "#ff0000" ) ;