Monday, May 31, 2010

Choise list in popup turn to null after submit (Fixed in 11.1.1.4)

After migration we have strange behavior in popups with choise list, file upload and other components.
I managed to reproduce it in a simple test case with a table and a Edit popup with a simple choise list.
The first time i open popup it looks ok

If i press 'Submit' button (full submit) the popup is closed as expected since it is autoCancel enabled.

But if i open popup again, then the coise list is empty!!??


This causes other side effects. I.e. if you have partial trigger in popup components from page table, then when you change a line after you have closed popup with submit you get the following error:



The following does not happen if you press the ok/cancel dialog buttons or x button.

The workaround we are using is not to use full submit buttons in popups, and close popup programaticaly in backing bean:

public void closePopUp(String popUpId){
FacesContext facesContext = FacesContext.getCurrentInstance(); ExtendedRenderKitService service = Service.getRenderKitService
(facesContext, ExtendedRenderKitService.class);
service.addScript(facesContext, "AdfPage.PAGE.findComponent('templateid:"+ popUpId
+"').hide();");
}


Also with autocancel = enabled, then a partial submit button and a partial trigger on popup or on parent component will close the popup without problem.

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

Wednesday, May 26, 2010

Single Row LOV in Query Criteria Bug (Fixed in 11.1.1.4)

When List of values has only 1 row then in query criteria you cannot set input to null after the first time you set a value.

To reproduce in the test case of Employees with Departments LOV i set where clause of DepartmentsView rownum=1.

I assign DepartmentsView as LOV in Employees.DepartmentId attribute and set it to autosubmit.

I put DepartmentId in query criteria of Employees.

I create a simple query panel with results table for Employees and i run application:


Steps to reproduce:
1. open DepartmentId LOV and select value. press tab or search
2. delete value of DepartmentId and press tab or search
Result: value is not deleted from LOV field. and search still has the criterion.

Only way to make value null is to press reset button.

Is this a bug?

Test Case:
http://adfbugs.googlecode.com/files/TestSingleRowLOV.zip

Friday, May 14, 2010

ADF and DBA have 2/3 letters in common

I was doing DBA work this week. We installed our application in different schema and the performance dropped to hell.

The View objects queries that we spend a lot of time tuning in previous schema now they had different execution plan.

So I check the instance properties and I see OPTIMIZER_MODE=ALL_ROWS.
This option means that when you do a query the optimizer thinks that you are trying to retrieve all data from the query so it check the statistics to find the best plan to retrieve all rows usually by full table scans. The all_rows mode is generally used during batch-oriented processing and for data warehouses where the goal is to minimize server resource consumption.

This is not the case in our application and I guess in most ADF applications. I changed it to OPTIMIZER_MODE=FIRST_ROWS. The first_rows optimizer_mode is generally used in online system where the end-user wants to see the first page of query results as quickly as possible. This had a huge positive effect in the performance of our fusion application.
May be this is considered basic for DBAs but it seems that ADF developers should know also in order not to loose time tuning view objects in a wrong configured database.

Thursday, May 6, 2010

User principal is not propagated to Middle tier. New bug on 11.1.1.3. (Fixed in 11.1.1.4)

It may be strange that a new bug like that is introduced in a bug fixing release but it can happen to the best also.

After Migrating to jdeveloper 11.1.1.3.0 you will notice that application module method getUserPrincipalName() return always ‘Anonymous’ and history columns for user are populated with null. Andrejus Baranovskis have posted about it, Steve Muench logged on Oracle Metalink - bug# 9672139 and a workaround is posted also in the comments that we also use and seams to solve the problem.
I post it also to follow upe with it.
On our base Application Module class we override the prepare session and:

@Override
protected void prepareSession(Session session) {
String contextUser = ADFContext.getCurrent().getSecurityContext().getUserName();
String envUser = (String)session.getEnvironment().get(PropertyMetadata.USER_PRINCIPAL.getName());
if (!envUser.equals(contextUser)) {
session.getEnvironment().put(PropertyMetadata.USER_PRINCIPAL.getName(),contextUser);
}

super.prepareSession(session);
}

Tuesday, May 4, 2010

Still reproduced bugs in jdeveloper 11.1.1.3

I went through previus posted bugs and verified that the following defects are still reproduced in new version of jdeveloper:

*Attribute Validation on Input List of Values attribute
http://adfbugs.blogspot.com/2009/11/attribute-validation-on-input-list-of.html

Page Fragment Design view is messed up when using resource bundle
http://adfbugs.blogspot.com/2009/10/page-fragment-design-view-is-messed-up.html

Workaround for Page Fragment Design view when using resource bundle
http://adfbugs.blogspot.com/2009/11/workaround-for-page-fragment-design.html

Number precision and scale bug
http://adfbugs.blogspot.com/2009/10/number-precision-and-scale-bug.html

Tab selection and Enable User Customization on Session bug.
http://adfbugs.blogspot.com/2009/09/tab-selection-and-enable-user.html

Unsaved changes uncommittedDataWarning bug
http://adfbugs.blogspot.com/2009/09/unsaved-changes-uncommitteddatawarning.html

*ExecuteEmptyRowSet and Range Paging.
http://adfbugs.blogspot.com/2009/09/executeemptyrowset-and-range-paging.html

Table Filter Bug
http://adfbugs.blogspot.com/2009/08/table-filter-bug.html

Returning from dialog to a page that has f:verbatim tag bug
http://adfbugs.blogspot.com/2009/08/returning-from-dialog-to-page-that-has.html

*Range paging and Table Selected Row Bugs
http://adfbugs.blogspot.com/2009/07/range-paging-and-table-selected-row.html
*** even though related metalink bug 8673654 is marked as fixed for this version

*Partial Page Rendering ChangeEventPolicy="ppr" bug.
http://adfbugs.blogspot.com/2009/07/partial-page-rendering.html

Setting value programmatically on required field.
http://adfbugs.blogspot.com/2009/11/setting-value-programmatically-on.html

*Composition Association and Locking
http://adfbugs.blogspot.com/2009/12/composition-association-and-locking.html

*Bind Variable and View Criteria in view with range paging bug
http://adfbugs.blogspot.com/2010/02/bind-variable-and-view-criteria-in-view.html

*Rollback does not refresh current row of af:table after validation errors.
http://adfbugs.blogspot.com/2010/03/rollback-does-not-refresh-current-row.html

Removing a LOV return value leaves garbage in view object
http://adfbugs.blogspot.com/2010/03/removing-lov-return-value-leaves.html

Type Map change corrupt project metadata.
http://adfbugs.blogspot.com/2010/04/type-map-change-corrupt-project.html

Unique Key Validator on Entity does not work correctly
http://adfbugs.blogspot.com/2010/04/unique-key-validator-on-entity-does-not.html

Auto Submit does not set the value in bindings if you navigate with mouse
http://adfbugs.blogspot.com/2010/04/auto-submit-does-not-set-value-in.html

From the above i consider more important those with * since there is not an easy workaround or have big effect on functionality.

Monday, May 3, 2010

Fixed Defects in 11.1.1.3

I went through previus posted bugs and verified that the following defects are fixed in new version of jdeveloper:

LOV execute query many times
http://adfbugs.blogspot.com/2009/08/lov-execute-query-many-times.html

Range Paging in Master Detail bug.
http://adfbugs.blogspot.com/2009/08/range-paging-in-master-detail-bug.html

Af:Query bind variable bug
http://adfbugs.blogspot.com/2009/08/afquery-bind-variable-bug.html

LOV view object Tuning: 'Only up to row number' bug
http://adfbugs.blogspot.com/2009/08/lov-view-object-tuning-only-up-to-row.html

Query Component Required Criterion bug ( r1 Bug)http://adfbugs.blogspot.com/2009/07/query-component-required-criterion-bug.html

New Bind Variable and View Criteria bug
http://adfbugs.blogspot.com/2010/01/new-bind-variable-and-view-criteria-bug.html

Selectively required criteria in LOV
http://adfbugs.blogspot.com/2010/01/selectively-required-criteria-in-lov.html

Required Criterion on Choice List type Attribute.
http://adfbugs.blogspot.com/2010/01/required-criterion-on-choice-list-type.html

These are quite important Fixes for us since they improve LOV functionality that we commonly use and view criteria. They also improve the performance of these controls.