Wednesday, November 24, 2010

LOVs does not reset criteria values. (Fixed in 11.1.1.4)

In a default input list of values you can set criteria to query for specific records and select a record with no problem
The problem is that if you open LOV again, even though the criteria values are cleared the results are still the same (filtered).This happens even if you change the record.
This has other side effects like, if LOV is autosubmit and if user types a valid value that does not exist in the previous filtered LOV data the value is not accepted and LOV opens displayed the previous filtered data.
Finally if you put criteria in LOV and select a value and then navigate away from the task flow, when you come back and open LOV the criteria values are shown and Reset button of LOV is not functional.
This functionality of LOVs cause much frustration to users.
Test Case :
http://adfbugs.googlecode.com/files/TestLOVsCriteria.zip

Steps to reproduce in the test case:
1. Not accepting valid values.
1 run Main.jspx
2 go to Test task flow.
3 open managerId LOV and type criteria (i.e. ‘A’ for firstName) and press search
4. Select a row and press ok
5. In LOV field, type a valid value of an employee that first name does not start with ‘A’ and press tab
Result: LOV opens showing rows of employees starting with A. User has to press Reset and search for the value again

* in 11.1.1.4 the valid value is accepted without opening the LOV. Yet if you open LOV second time the results rows are limited but not for employees starting with A.

2. Reset button does not work:
1 run Main.jspx
2 go to Test task flow.
3 open LOV and type criteria (i.e. ‘A’ for firstName) and press search
4. Select a row and press ok
5 Press button to Main (return from task flow)
6 go to Test task flow again
7 Open managerId LOV (Criteria values and results are visible from previous search
8. Press Reset Button on LOV (Nothing happens)
Result: LOV opens showing rows of employees starting with A and criteria value for firstName. User cannot press Reset to clear values and search again.

Monday, November 15, 2010

Activation creates duplicate row when primary key is populated through DB trigger ((Fixed in 11.1.1.4)

The same issue as previus post is also reproduced if Primary key is populated through database trigger and Pk attribute is defined as DB Sequence and refresh after insert.
Fusion Developer's Guide for Oracle ADF
4.10.10 How to Get Trigger-Assigned Primary Key Values from a Database Sequence

To run the test case you need to create database trigger :

CREATE OR REPLACE TRIGGER LOCATIONS_PK
BEFORE INSERT
ON "LOCATIONS"
FOR EACH ROW
BEGIN
IF INSERTING
THEN
IF :NEW."LOCATION_ID" IS NULL
THEN
SELECT LOCATIONS_SEQ.NEXTVAL INTO :NEW."LOCATION_ID" FROM DUAL;
END IF;
END IF;
END;

When you try to insert second line, first line is dublicated, when testing activation safe.


Test case

Friday, November 12, 2010

Activation creates duplicate row when primary key is populated through DB sequence (Fixed in 11.1.1.4)

We are testing if our Application Module is Activation-Safe according to:
Fusion Developer's Guide for Oracle ADF
40.10 Testing to Ensure Your Application Module is Activation-Safe
And we have many problems.
1 of them is that when we press createInsert instead of creating a new row we get the same row 2 times.

I reproduce it in a simple test case from HR schema with Countries and Locations Entities.
In Locations Entity create method I populate primary key from sequence

@Override
protected void create(AttributeList attributeList) {
super.create(attributeList);
SequenceImpl s = new SequenceImpl("LOCATIONS_SEQ",getDBTransaction());
setLocationId(s.getSequenceNumber());
}

As in
Fusion Developer's Guide for Oracle ADF
4.12.5 Assigning the Primary Key Value Using an Oracle Sequence

I check Activation-Safe by un-checking Enable Application Module Pooling in configuration.


I have a simple master Countries form and detail Locations table with CreateInsert button.
When I press CreateInsert for first time a new row is created with new sequence as locationId and I fill also other fields with values.



When I press CreateInsert again instead of getting a new rows I get 2 same rows as the first and both of them has the same new sequence as primary key.!!??


After that whatever I do on the page I get null pointer exception. (NullPointerException)
Is this a bug?

Test case:
http://adfbugs.googlecode.com/files/TestActivateSequence.zip