Hi,

I'm looking into issue 1512, the equals/hashCode issue identified from findbug.

To ensure I understand the business requirement / data model, could
someone clarify whether the following is true or not?

1. For each loan product, it may be associated with multiple fees. (I
guess fees the product could apply)
2. However, each loan product will be associated with the same fee at
most once. In other words, in mysql,
table prd_offering_fees should have a unique constraint on
(prd_offering_id, fee_id)

You can also see the attached patch on LoanOfferingBOTest that
reflects the above assumption. Or you can see the actual test right
below (rather than going through the patching).

- sam

A new test method in LoanOfferingBOTest.java (equivalent to the attached patch)

        public void testBuildloanOfferingWithDuplicateFeeXXX() throws 
SystemException,
                ApplicationException {
                createIntitalObjects();
                Date startDate = offSetCurrentDate(0);
                LoanOfferingBO loanOffering = new 
LoanOfferingBO(TestObjectFactory
                                .getContext(), "Loan Offering", "LOAN", 
productCategory,
                                prdApplicableMaster, startDate, interestTypes,
                                new Money("1000"), new Money("3000"), 12.0, 
2.0, 3.0,
                                (short) 20, (short) 1, (short) 12, false, true, 
false,
                                frequency, principalglCodeEntity, 
intglCodeEntity);
                
                FeeBO fee = TestObjectFactory.createOneTimeAmountFee("Loan One 
time ",
                                        FeeCategory.LOAN, "100", 
FeePayment.UPFRONT);

                LoanOfferingFeesEntity loanOfferingFees1 =
                        new LoanOfferingFeesEntity(loanOffering, fee);          
        
                loanOffering.addPrdOfferingFee(loanOfferingFees1);

                // another fee for the proudct: which refers to the same fee
                // as the one above
                LoanOfferingFeesEntity loanOfferingFees2 =
                        new LoanOfferingFeesEntity(loanOffering, fee);          
        
                loanOffering.addPrdOfferingFee(loanOfferingFees2);
                
                assertEquals("sam: I believe the business requirement is that 
the
loan should not have fees that are essentially the same.",
                                1, loanOffering.getLoanOfferingFees().size());

                assertEquals("sam: I belive these two offering fees are 
considered
identical from business requirement",
                                true, 
loanOfferingFees1.equals(loanOfferingFees2));
        }

Attachment: issue1512_prelim_testcase.patch
Description: Binary data

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/

Reply via email to