Mario Fusco wrote
I think I've fixed all the outstanding jitting issues and these fixes will
be available in the upcoming 5.5 release (we are deploying the beta1 in
these days). However it would be great if I could reproduce the bugs you
found, both because I could check if they are actually fixed in the 5.5
and possibly give you some more informed suggestions to workaround them in
the 5.4. In order to do that, the only info I miss is how the
CMVNewLoanBean class is made. Could you please send its source code (or at
least the parts relevant for the 2 failing rules you have) ?
I'm not sure how to answer that question, but hopefully this will be a
start. I can provide more if you have specifics or if I'm going in the
wrong direction.
public class CMVNewLoanBean extends CMVBaseRequestBean {
private CMVCustomerBean customer = null;
private Map<String,CMVLenderBean> activeLenders = new
HashMap<String,CMVLenderBean>();
public CMVCustomerBean getCustomer() {
if (customer == null) {
customer = new CMVCustomerBean();
}
return customer;
}
public void setCustomer(CMVCustomerBean customer) {
this.customer = customer;
}
public Map<String,CMVLenderBean> getActiveLenders() {
return activeLenders;
}
public void setActiveLenders(Map<String,CMVLenderBean> activeLenders) {
this.activeLenders = activeLenders;
}
public CMVLenderBean getActiveLender(String lenderName) {
return activeLenders.get(lenderName);
}
}
public class CMVEmployerBean {
public enum PERIODICITY {
BI_WEEKLY ("B"),
MONTHLY ("M"),
SEMI_MONTHLY ("S"),
WEEKLY ("W");
private final String periodicity;
PERIODICITY(String periodicity) {
this.periodicity = periodicity;
}
public String getPeriodicity() {
return periodicity;
}
}
private PERIODICITY periodicity = null;
private String averagePayCheck = ""; //amount per pay check
public String getAveragePayCheck() {
return averagePayCheck;
}
public void setAveragePayCheck(String averagePayCheck) {
this.averagePayCheck = averagePayCheck;
}
public Integer getMonthlySalary() {
Integer monthlySalary = 0;
if (!averagePayCheck.equals("") && !periodicity.equals(null)) {
monthlySalary = ((Double)
StringUtils.getNumber(averagePayCheck)).intValue();
if (periodicity.equals(PERIODICITY.SEMI_MONTHLY) ||
periodicity.equals(PERIODICITY.BI_WEEKLY)) {
monthlySalary = monthlySalary * 2;
} else if (periodicity.equals(PERIODICITY.WEEKLY)) {
monthlySalary = monthlySalary * 4;
}
} else {
throw new NumberFormatException("The monthly salary was requested but
either the periodicity (" + periodicity + ") or the average pay check (" +
averagePayCheck + ") is not valid.");
}
return monthlySalary;
}
}
public class CMVCustomerBean {
private List<CMVEmployerBean> employers = new ArrayList<CMVEmployerBean>();
public List<CMVEmployerBean> getEmployers() {
return employers;
}
public boolean addEmployer(CMVEmployerBean employer) {
employers.add(employer);
return true;
}
public CMVEmployerBean getEmployer(int index) {
CMVEmployerBean employer = null;
if (this.employers.size() <= index) {
employer = new CMVEmployerBean();
employers.add(employer);
} else {
employer = this.employers.get(index);
}
return employer;
}
public CMVEmployerBean getLatestEmployer() {
return getEmployer(0);
}
public void setEmployers(List<CMVEmployerBean> employers) {
this.employers = employers;
}
}
Mario Fusco wrote
brendanneff wrote
>
> Here are the rules that seem to be causing the errors:
>
> rule "Cashcure - Average Monthly Income Less Than 1251"
> when
> $loan : CMVNewLoanBean( new
> Integer(getCustomer().getLatestEmployer().monthlySalary) < 1251)
> then
> $loan.setLenderError($loan.getCurrentLender().getName(), 20253);
> end
>
Out of curiosity, why do you create the new Integer there instead of just
doing:
CMVNewLoanBean( getCustomer().getLatestEmployer().monthlySalary < 1251)
I don't have a good answer for that as it came that way, but I was wondering
the same thing. I'll try making that switch and see if it has any effect.
--
View this message in context:
http://drools.46999.n3.nabble.com/exception-jitting-problem-tp4019763p401...
Sent from the Drools: User forum mailing list archive at
Nabble.com.