What is a bug? especially in a framework that is used to develop applications? Is it only something that is described differently in manual? I will be writing more about that in this blog by presenting the functionality of the framework i am working on. Jdeveloper and fusion middleware
Wednesday, November 24, 2010
LOVs does not reset criteria values. (Fixed in 11.1.1.4)
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)
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;
Friday, November 12, 2010
Activation creates duplicate row when primary key is populated through DB sequence (Fixed in 11.1.1.4)
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
Friday, October 15, 2010
Number precision and conversion in query criteria
I created a simple Query page from HR schema for Employees (Entity and View) with some typical criteria.
When a user type a value in a String criterion field then he is not allowed to type more characters than the precision of the field.(i.e. 25 for LastName, email)
The same apply for the LOV field (Department 4 digits)
Yet Number fields have strange behavior.No mater the precision of the Number field you can type as many digits you want.
Yet if you type up to 21 then the last 4 digits are converted to 0!!?
If you type more than 21 digits it is converted to the first digits with other 3 as decimals!?
If you type number with more than 3 decimals it is rounded to 3 decimals.
Is this a bug to be fixed?
Test case:
Sunday, October 10, 2010
ADF/SOA custom worklist viewFilter
Developer's Guide for Oracle SOA Suite &30.13 Creating Reusable Worklist Regions
It was not easy since
• WSRP Container is missing in latest jdeveloper 11.1.1.3
• when I deployed nothing was shown and no error in the logs.
I found out that WSRP Container seems not to be needed and that it was authorization issue.
Since the application must have security enabled, you need to give access also to task flows that comes from libraries:
Then the task list is visible and task details shows as dialog.
Yet we need to show to the user a custom view that contains Flex Fields with business logic values.
I see that there is a parameter you can pass to the worklist task flow the viewFilter:
Developer's Guide for Oracle SOA Suite &34.4 Passing Worklist Portlet Parameters
'viewFilter Specifies the selected view for which the tasks are displayed.'
Yet when I use it with values like:
value="Due Soon"
value="My Work Queues/Standard Views/Due Soon"
I get the following error:
Is this a bug or i need diferent format of value in order to filter specific task view?
I also noticed that from view menu all views shows 2 times apart from Inbox:
Is this also a bug?
Test case:
http://adfbugs.googlecode.com/files/TestCustomWorklist.zip
Friday, September 24, 2010
Making View Criteria Case Insensitive and MDS
http://adfbugs.blogspot.com/2010/07/making-view-criteria-case-insensitive.html
Yet this has 2 side effects.
- It makes values of criteria upercase.
- It brakes MDS save criteria functionality.
I found a simpler solution (workaround).
/**
* Set the view criteria rows to use case-insensitive querying and
* uppercase any of the non-null query-by-example criteria provided.
*/
private void doCaseInsensitiveOnStringsInViewCriteria() {
ViewCriteria[] vclist = getApplyViewCriterias(ViewCriteria.CRITERIA_MODE_QUERY);
if (vclist.length>0) {
for (ViewCriteria vc : vclist){
if (!vc.isUpperColumns())
vc.setUpperColumns(true);
}
}
}
@Override
protected void executeQueryForCollection(Object object, Object[] object2 int i) {
doCaseInsensitiveOnStringsInViewCriteria();
super.executeQueryForCollection(object, object2, i);
}
This code makes query criteria Case insensitive and also does not make values of criteria upercase.Yet it still brake MDS .
Sice we need this in LOV criteria that does not have Save search, we can prevent this code to execute in LOVs using :
if (this.getName().contains("LOCAL_VIEW_USAGE"))
doCaseInsensitiveOnStringsInViewCriteria();
Test case:
http://adfbugs.googlecode.com/files/MDSTestUpper.zip
Saturday, September 11, 2010
Validating Train Flow
You can easily create a train task flow and add pages as Train stops and add in page train navigation and train buttons (Next/Previous) and create a wizard like navigation.
Yet many times you need to validate the input of a train stop before you go to the next one. When this validation is more complex than a required field you probably need to do it when the user tries to navigate to the next train stop.
I found a solution close to what I needed in Duncan Mills post: Executing Activities between Train Stops
http://groundside.com/blog/DuncanMills.php?blog=6&cat=18&page=1&disp=posts&paged=2
The strange thing is that you need to define an outcome on the target Train Stop activity.
Then you add a wildcard to go to a router to check your condition in order to decide to go to the target Train Stop or the source.
In my example the condition is if the Department has employees or not. If it has it go to employees page, if not it returns to department task flow.
The remaining issue is to show the appropriate message. In the example I have added it as a simple text that is visible when Department does not have Employees
Test Case:
http://adfbugs.googlecode.com/files/TestTrainValidation.zip
Tuesday, August 31, 2010
MDS saved search brakes application module browser
27.2.3 How to Persist Saved Searches into MDS
Yet after you do that if you try to run any application module you get exception:
(oracle.jbo.ConfigException) JBO-33003: Connection name hrconn is not defined.
and in server log:
SEVERE: MDSConfigurationException encountered in parseADFConfigurationMDS-01335: namespace "/persdef" mapped to metadata-store-usage "mdsstore" but its definition was not found in MDS configuration. oracle.mds.config.MDSConfigurationException: MDS-01335: namespace "/persdef" mapped to metadata-store-usage "mdsstore" but its definition was not found in MDS configuration. at oracle.mds.config.PConfig.populateNamespaceConfigList(PConfig.java:811) at oracle.mds.config.PConfig.loadFromBean(PConfig.java:717) at oracle.mds.config.PConfig.
...
The workaround we found is to remove specific configuration and add it again when we want to deploy.
Is this a bug?
Test case:
http://adfbugs.googlecode.com/files/MDSTest.zip
Tuesday, August 10, 2010
MDS User customization capabilities and cost
I used the following References
Guides
34 Customizing Applications with MDS
http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/customize.htm
35 Allowing User Customizations at Runtime
http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/ad_persist.htm#CIHHEHCF
13 Managing the Metadata Repository
http://download.oracle.com/docs/cd/E15523_01/core.1111/e10105/repos.htm#CIHDCHCF
Articles
http://www.oracle.com/technology/pub/articles/adf-development-essentials/part8.html
Tutorial
http://www.oracle.com/technology/products/jdev/11/cuecards111/adf_set_18/ccset18_ALL.html
Blogs
http://biemond.blogspot.com/2009/07/customize-and-personalize-your-jsf.html
http://andrejusb.blogspot.com/2009/09/persisting-query-criteria-results.html
I created a demo application:
http://adfbugs.googlecode.com/files/MDSTest.zip
Where user1/welcome1 has customizations:
And user2/welcome2 has not:
And tested also our application with MDS enabled
I came up with the following conclusions :
User customization Persist user changes through MDS is very powerful framework and all users would like to have it, yet it has it limitation and its cost:
Limitations:
1. Save Search: If you Use MDS then you need to configure also Saved search, or else you get exception when you try to save it
2. Components Not all components and attributes are persisted by default and they might override your custom business logic.
3. Deployment: New deployment file is needed (MAR) and configuration in order to define MDS repository domain. Investigation is needed for continues integration and deployment processes and update deployment scripts
Cost
> Performance
-- Increased resources needed on weblogic (memory and disc io)
-- Increased resources needed on database (mds_repository)
-- Lower response time on customisable components
> Increase testing needs
> Increase Administration needs (database, weblogic, metadata management)
> Saved search may break integration between Pages. Workaround may be needed for specific search pages. This will increase development needs
> Increase Support needs.
Wednesday, July 21, 2010
Choice list and LOV in query criteria bug (Fixed in 11.1.1.4)
When ever in query criteria we have choice list as first criterion and we have also input List of values in criteria then the input List of values does not return values.
When you open LOV and select a row the LOV closes automatically and value is not returned.
I managed to reproduce it in simple test case in HR schema with 1 choice list and 1 list of values:
The workaround is either not to use choice list as first criterion or not to have Input List of values field autosubmit = true.
Strange?
Test Case:
http://adfbugs.googlecode.com/files/TestChoiseListAndLov.zip
Friday, July 9, 2010
Making View Criteria Case Insensitive.
Yet the default view criteria used in LOVs or criteria of fields added in advanced search are always Case Sensitive and you cannot declaratively change that.
I found a realy old post of Steve Muench for similar case in very old release of jdeveloper
http://www.oracle.com/technology/products/jdev/howtos/10g/dynamiccrit/index.html
and managed with little changes to apply it in latest release also:
Now all view criteria for string fields are case insensitive.
Note that this implementation will override any criterion you have set as Case Sensitive.
You can add this code to your base view object so that all view objects work like that.
test case:
http://adfbugs.googlecode.com/files/TestCaseInsensitive.zip
Thursday, July 1, 2010
Table input text resize while typing non latin characters/ output text not selectable
As long as you type characters the width of the field becomes smaller:
I have tested with Greek and Turkish characters.
If you mouse over the field it returns to the correct width.
Is this a bug?
Also there is no way you can select a value from the output fields in order to copy it.
These are quite frustrating for the users
Test Case:
http://adfbugs.googlecode.com/files/TestTableInputOutput.zip
Monday, June 21, 2010
Always run weblogic servers as Administrator
I spend all weekend trying to install SOA suite at home.
I have a new i7 pc with windows 7 and 4G ram.
After spending hours on installing:
-->11g database,
-->Repositories with rcu (failed the first time because of database parameters processes and open_cursors must be 500)
-->Java bridge
-->Lookback adapter.
-->Weblogic 10.3.3.
-->Application development runtime 11.1.1.2 and 11.1.1.3
-->SOA Suite 11.1.1.2 and patchset 11.1.1.3
I try to run admin server and I got many exceptions … class not found … invalid variables, deployments failed.
So I thought I did something wrong and I did the hall thing again (from the weblogic part). But still the same ??!!. Then it came to me…
I right click on Start Admin server and I choose run as Administrator… and eurica!! All went smoothly.
I used the same way to open cmd windows to run managed servers:
-->first soa_server took 20 minutes to deploy all applications
-->then bam_server
Everything worked fine now.
Yet the memory consumption of my pc went to 3GB, and everything was operating really slowly after that.
So I suggest… don’t try this at home…
Monday, June 14, 2010
Range Paging in LOVs bug #9467477
http://adfbugs.blogspot.com/2009/07/performance-tuning-lovs-and-range.html
Yet it still has bugs, when you use LOV criteria or on dependent LOV sometimes it shows error:
java.sql.SQLException: Missing IN or OUT parameter at index:: 1 at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
I have posted an SR for this and bug was logged #9467477 SQLEXCEPTION: MISSING IN OR OUT PARAMETER AT INDEX, IN LOV WITH RANGE PAGING, that it is also fixed for next jdeveloper 11.1.1.4 release. Thanks Didier.
I decided to post it also here since this bug is not public visible in Support (not even for me that i posted the SR.
Steps to reproduce in test case are:
1. Open Departments LOV
2. Scroll down to LOV until fethcing data message apears
3. Type in criteria for departmentId value i.e.'1' and without pressing Search select a row in LOV.SQL
Error message apears:
Test Case:
http://adfbugs.googlecode.com/files/LovRangePagingBug.zip
Monday, June 7, 2010
Entity Security (jdeveloper11.1.1.3 Functionality Change)
I managed to reproduced in a simple test case with 1 entity Jobs on an editable table.
I have enabled security and I have 2 roles ‘UpdateJobs’ and ‘ViewJobs’.
I have added authorisation to entity update and delete for role UpdateJobs.
When I loggin with a user that just have ViewJobs role table rows comes read only and Delete button disabled.
Yet CreateInsert button is enabled and if I press it new row is created with updatable attributes that I can also save it without a problem.
Before last patch you could still create new row but it was not updatable.
Is this a bug?
Test case:
http://adfbugs.googlecode.com/files/TestInsertSecurity.zip
password for User and Manager : welcome1
Wednesday, June 2, 2010
ADF Client Tag Libraries of weblogic 10.3.3 installation are diferent from jdeveloper11.1.1.3
http://www.oracle.com/technology/software/products/middleware/index.html
have different adf faces component ligraries.
We found it the hard way.
We used the new feature of popups the autoCancel property.
Even though in embeded weblogic is working, when we deployed we had a jsp compilation error:
Error message: Failed to compile JSP /pages/bill/billissue/billIssue.jspxbillIssue.jspx:792:23: This attribute is not recognized. autoCancel="disabled"> ^--------^ Error type: class weblogic.servlet.jsp.CompilationException
by searching the differences we found out that
Oracle/MiddlewareR1P2/oracle_common/modules/oracle.adf.view_11.1.1/adf-richclient-impl-11.jar!/META-INF/afu.tld
in jdeveloper 11.1.1.3
is different than
wsl_middleware/oracle_common/modules/oracle.adf.view_11.1.1/adf-richclient-impl-11.jar!/META-INF/afu.tld
of the weblogic 10.3.3. installation
The weblogic afu.tld does not have the autoCancel property
We hope that by just copying the jdeveloper11.1.1.3 adf-richclient-impl-11.jar to weblogic the problem will be fixed.
Unfortunately, just copying the jar did not solve the problem
Test Case: http://adfbugs.googlecode.com/files/TestAutoCancelPopup.zip
SR posted :3-1820014361
It seems that you need to manual install on latest weblogic 10.3.3. tha latest adf runtime libraries.
You can find how to on:
Oracle Support Knowledge base Note [ID 1094153.1] Installing ADF 11.1.1.3 Runtime Into FMW 11gR1 Patchset 2
or http://theblasfrompas.blogspot.com/2010/05/installing-adf-runtime-into-fmw-11gr1.html
Monday, May 31, 2010
Choise list in popup turn to null after submit (Fixed in 11.1.1.4)
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)
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
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)
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
*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
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.
Wednesday, April 28, 2010
A new version of JDeveloper is out: JDeveloper 11.1.1.3.0 (Build 5660)
You can download it from OTN.
New features and bugs fixed list is available [Here]
It is mostly a bug fixing release.
some bugs reported as fixed seems to be related to bugs of this blog:
8975151 RFI:UNABLE TO USE VO RANGE_PAGING OPTION IN LIST OF VALUES
D8B2-BLK:PRJ:LOV THROWING NPE AFTER DISABLING AMPOOLING.
9149095 RFI: RANGE PAGING JSF PAGE RETURNS TOTAL ROW COUNT IN GETFETCHEDROWCOUNT()
I will walk through the bugs reported till now and try to reproduce them in new release and i will post a list of fixed and still reproduced bugs
Wednesday, April 21, 2010
Inserting new rows as last row of table
End user requirement was that when we press Insert the new row should be added as last row no matter which is the current row.
This is implemented by overriding the View Object method insert(row).
/**
* Insert new Rows at the end of RowSet.
* @param row
*/
@Override
public void insertRow(Row row) {
//go to the end of Rowset if it has rows
Row lastRow = this.last();
if (lastRow != null) {
//insert new row at the end and make it current
int indx = this.getRangeIndexOf(lastRow) + 1;
this.insertRowAtRangeIndex(indx, row);
this.setCurrentRow(row);
} else { // empty Rowset
super.insertRow(row);
}
}
Note: This could cose performance issue when inserting new rows on very large tables.
Don’t forget in table components to always set displayRow="selected" so that the new row to be visible no matter how many rows there are.
Test Case:
http://adfbugs.googlecode.com/files/TestNewRowAtEnd.zip
Friday, April 16, 2010
Auto Submit does not set the value in bindings if you navigate with mouse (Fixed in 11.1.1.4)
You can test that by debuging an input field by typing a value and go to an other field using mouse, the setter of the field is not called. Yet the value change listener is invoked.
This causes problem in dependent components also since they will be recalculated with the old value.
For example in dependent LOV by navigating away from the dependant field with the mouse it does not cause the LOV to re-execute with the new value so you may have validation error even if the value of LOV field is correct, or you may have wrong filter in LOV.
Test Case:
http://adfbugs.googlecode.com/files/TestAutoSubmitMouseNav.zip
The workaround we use in such cases is since the value change listener of DepartmentId is invoked to explicity set also the binding field value there. Like:
ADFUtils.setBoundAttributeValue("DepartmentId", valueChangeEvent.getNewValue());
Monday, April 12, 2010
Unique Key Validator on Entity does not work correctly
Also after that in table components validations messages does not show after a refresh of browser, data change automatically to database values without showing an error.
For example in simple department Entity i create an alternative Key for DepartmentName to be unique.
Then i add an entity Unique Key Validation for this key:
I run a page with departments table and i create 2 departments
1 Dep1
2 Dep2
If i change department 1 name to dep2 then i correctly get the validation error:
But if i change department 2 to dep1 then i get unique validation errors even if both values in entities would be unique.
This could be logical for the developer since he knows that each row is validated seperately but not for the user.
Also if i refresh page in browser then if i do the same thing i dont get validation errors.
Tuesday, April 6, 2010
Type Map change corrupt project metadata.
Yet the developer still can change it at any time. At first it shows disabled but if you click something else and click Bussiness Components tab again then you can change it.
If you change it to java, then Entity attributes are generated with types like (BigDecimal instead of oracle.domain.Number, java.sql.Date instead of oracle.domain.Date)
If you change them to oracle types then at some adf components you get ClassCastExceptions.
If you try to chance Type Map to ‘Oracle’ again then you cannot. Even though it shows in project properties changed if you close and re-open it is still ‘Java’.
The only way to change it back to ‘Oracle’ is to open .jpx project file and to manually remove the xml entry --Attr Name="_jbo.TypeMapEntries" Value="Java" –
Tuesday, March 30, 2010
Oracle ACE awarded
I would like to thank Oracle and especially Steve for this recognition of my efforts to contribute to Oracle community my experience on Oracle products
This blog has been proven to be quite helpful to people working on ADF framework since they can find bugs and workarounds to save them time while developing fusion applications.
It has also helped to submitting bugs on Oracle Support and improving the framework,
I definitely try to do constructive criticism on the framework, as I feel very strongly about its potential and I hate to see it being compromised by implementation or occasional design issues. Fact is, there is nothing like it out there for rich client web development.
I am glad that Oracle people also see it this way and I will continue this effort to the best of my abilities.
Wednesday, March 24, 2010
Removing a LOV return value leaves garbage in view object (Fixed in 11.1.1.4)
When you have an LOV with 1 return value then the xml in the view object is like:
When you add a second return value from LOV by edit wizard:
Then the View object XML is like:
If from the same wizard I remove the second value then unfortunately the xml does not return to the initial state. It still has the DerivedAttrNames :
This causes various bugs in interface that are not easy to find, since nothing is displayed in log: