Tuesday, December 20, 2011

Access Keys are accessible even from a modal popup

When a popup is open in a page in default (modal) mode then the rest of the components of the page are not accessible with mouse, yet if buttons have Access keys they are still functional allowing the user to brake the functionality.

n the attached test case run testpopup page
Press Edit button to open popup
Press Alt+Shift+c access key of Commit button

Expected: Nothing should happen
Actual: Commit is performed and popup is closed.



Test case.

SR is posted for this and Bug 13338347: ACCESS KEYS SHOLD BE DISABLED BASED ON THE CONTEXT

Yet the Oracle development consider this as a Browser issue. 'The issue is not in the scope of the ADF Product as this is the feature of the browser. '

We are working on a workaround about this issue.
We are based on the fact that when a button is disabled then the access key is not functional.
So on popup FetchListeners we disable the buttons of the main page and on popupCancelListeners we enable buttons again.
It seems to work, yet we need to check any side effect and we need to implement it for all popups.

Thursday, October 6, 2011

Pressing 'Tab' in LOV field new bug in jdeveloper 11.1.2.1

Trying to evaluate latest version of jdeveloper 11.1.2.1 in order to migrate our applications that is still in 11.1.1.4 i hit on the following bug.

While navigating through panel form fields with tab key, all validations of the page are thrown as if a full submit was performed.
This happens when you have input list of value field and the focus is on the field and you press tab key. The input list of value is autosubmit in order to refresh other fields

In the test case run testTab page and press CreateInsert button. Click on Department or Job List of value field and press Tab key. All validations of the page appear.
I also notice that errors appear in Greek even though my browser language is in English.



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

Bug 11939353 was already logged in oracle support which is fixed in a future release.

also in OTN Thread: Validation issue
https://forums.oracle.com/forums/thread.jspa?threadID=2254388&start=15&tstart=0

According to this thread a workaround exist in Didier's blog:
How To Avoid The JBO-27014 Error During The AutoSubmit

Sunday, August 28, 2011

Cannot use a region in a page more than one time?

In our application we use regions for reusability and consistency.
For example we have An address region that we reuse in order to show and edit a person address and a company address. We pass the address owner as a parameter to the region in order to show corresponding data.

Yet if regions are placed in the same page then both regions show the same data even if they get different parameters.

This is because of automatic application modules nesting.
The framework see that AddressModule is already in data control and it use the same for both regions due to shared data control scope.

It does not happen if we don't use shared data control scope, yet then we have a different database connection for each region. It does not seems right to have different connection to get different data!!?

In the test case i have a simple Department Task flow that query for specific department depending on passed parameter inDepId


Then in a page i place the same region 2 times with different parameter passed in each region.
Yet when i run the application both regions show the same data.



Is there a way to show different data without having different database connection?

Test Case:

http://adfbugs.googlecode.com/files/TestRegions.rar

Tuesday, August 16, 2011

Rollback is executed when a region is refreshed

We are using Task flows as regions in jdeveloper 11.1.1.4 in the latest project.
I have just noticed that when a region refreshes then a data control transaction rollback is executed transparently.
This does not happen the first time the region is displayed but every time it is refreshed after that.
This cause unexpected behavior of loosing data and the current rows of any other shared transaction task flow.

Could this be an expected (designed) functionality? Why?

As a test case I have 2 application modules (DepartmentsModule and Employees module) and a page that has departments and a region that has Employees with ‘share transaction if possible’ in the EmployeesTaskFlow.
Also the EmployeesTaskFlow get as parameter the current DepartmentId and has Refresh condition ifNeeded so that it refresh every time I navigate into departments.

Yet when I press next button I loose any change made on current department and I stay in the same row.
What I see in log is that Rollback is executed as a consequence of region Refresh and releaseViewPort.



Is this expected behavior or a bug?

I will check also what happens in 11.1.2 that it seems the nesting implementation have changed:
http://one-size-doesnt-fit-all.blogspot.com/2011/08/task-flows-sayonara-auto-am-nesting-in.html

It reproduce also in 11.1.2

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

A Perfect explanation and solution is given by Oracle Support. I will put it as is here:
@ At the point when the customer decided the region should share the
@ transaction with its parent, he also made the region a potential actor on the
@ parent transaction. Since the transaction mode on the region is not 'Always
@ Use Existing Transaction', the region transaction is not necessarily created
@ by the parent (and I will come back to that later), the behavior of the
@ region becomes the behavior of the parent even if they don't share the same
@ datacontrol. That is because both datacontrol are in one transaction since
@ the transaction is shared. When the region refresh, it rollback the
@ transaction which rollback both datacontrol.
@ .
@ To make the share mode work, the main point the customer should pay attention
@ to is that the transaction should be created by the parent, not by the
@ region. If it is created by the region, then the region become the owner of
@ the transaction and will rollback when the region is refreshed. If the
@ transaction was created by the parent it will work as expected.
@ .
@ What you need to do is ensure that the transaction is owned by the parent.
@ You need to have it created before the region. They are several ways to do
@ that:
@ 1) Have the parent page in a bounded taskflow with 'Always Begin New
@ Transaction' mode on.
@ 2) Call beginTransaction() on the DataControlFrame in an action that
@ navigates to the parent page with the region.
@ 3) Have a method activity that executes beginTransaction() on a request bean
@ before navigating to the parent page with the region.
@ The code to do begin the transaction is:
@ .
@ public void beginTransaction()
@ {
@ BindingContext context = BindingContext.getCurrent();
@ .
@ String dcFrameName = context.getCurrentDataControlFrame();
@ DataControlFrame dcFrame = context.findDataControlFrame(dcFrameName);
@ dcFrame.beginTransaction(new TransactionProperties());
@ }
@ .
@ To prevent the region from owning the transaction and run into these types of
@ issue for share mode, you can set the transaction mode on the taskflow to:
@ or 'Always Use Existing Transaction' in the
@ property inspector. If the transaction does not exist, an exception is
@ thrown.
@ .
@ I modified the original test case to illustrate the different options. Open
@ the workspace and look at adfc-config.xml. Run the Start page, withoutTrans
@ is the original test case, withTrans and beginTrans are 2 options that work.
@ .


Resolution Test Case
http://adfbugs.googlecode.com/files/TestRegionRollback2.zip
Hello

Unfortunately it seems that the issue is not fully resolved.
This works until a Data control frame commit or Rollback is executed.
Then it seems that the parrent looses control again of the transaction and regions rollback again on every refresh...
In the test case i added 2 buttons that do :

DataControlFrame dcFrame = context.findDataControlFrame(dcFrameName);
dcFrame.commit();
and
DataControlFrame dcFrame = context.findDataControlFrame(dcFrameName);
dcFrame.rollback();

The test case work fine until any of the commit or rollback transaction is pressed
Then Next button still causes rollback to be executed.

This means that still i cannot control the full data control frame transaction when i have regions with parameters.

New test case
http://adfbugs.googlecode.com/files/TestRegionRollback3.zip

Sunday, June 26, 2011

Table Filter Number format bug

In a filterable table when we typed a number with decimals we got the following error:


It is an oracle database error that shows that the number entered in criteria is not converted correctly according to the locale of the database.
Same value in Search criteria works correctly.




So is this a bug?


Test case is on 11.1.2. It reproduce also in 11.1.1.4



I guess you need a database with different locale to reproduce (a locale that decimal ceparator is ',')

Tuesday, June 7, 2011

First jdeveloper 11.1.2 bug

For start let me say that i am impressed positively with the new jdeveloper development experience.
Fast and furious
Yet I hit on the first bug already.
I used the default oracle three column layout and created a jsf page with a panel box
On runtime when I tried to disclose first empty column I got a java script error




Is it a problem of old template?
Is it a problem of combination of jspx template with Facelet page?
Will see…
Test case
http://adfbugs.googlecode.com/files/Application5.rar

Major : Jdeveloper 11.1.2 release

Less than a month after the 'tricky' release of 11.1.1.5 the major release is here.
Not yet for SOA and Web Center.
Yet it is much earlier than i expected.
http://www.oracle.com/technetwork/developer-tools/jdev/downloads/index.html
Lets hope it is the stable and promissing release we expected.
I have done over 10 migrations already of applications from TP1.
More than 3 every year, and it was a tricky task every time.
I am downloading at the moment.
Lets see...

Friday, May 27, 2011

Combo box does not remember values in table

When you define a List of Values in a View object as Combo Box with List Of Values there is an option to define ‘Most Recently Used Count’

Where you, enter the number of items to display in the choice list when you want to provide a shortcut to the end user to display their most recent selections.


This is quite useful functionality and it work fine when the field is used in a panel form layout.



Yet when it is used in table then it does not work, no matter how many times you select a value it does not remember the previously added values.




Is this a bug?


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



Still reproduce in jdeveloper 11.1.2

SR 3-3705906727 was posted for this.
Enchancement request that was created was rejected by Oracle development team.

=== ODM Answer ===

The MRUCount when the inputComboboxListOfValues is in a table won't work when ADF bindings are used:

The LOV bindings are created dynamically when used in a table and the "Most Recently Used Count" (MRU) feature is not enabled then.
MRU doesn't work in af:query too.

There is currently no plan to implement this feature in future releases.

Monday, May 16, 2011

Jdeveloper 11.1.1.5 severe bug (Fixed in 11.1.2)

We started evaluating jdeveloper 11.1.1.5 in order to see if and when we will use it.
When you press rollback and the page has a table with editable fields, all fields get the same values as the last row of the table.This is a really blocking issue in order to use the latest version
It seems the problem is in the immediate property of Rollback button

This is also in forums
http://forums.oracle.com/forums/thread.jspa?messageID=9587923#9587923

Oracle have logged a bug 12551764 for it and an Alert in support
Note 1321896.1 - 11.1.1.5.0 Regression: Rollback Button With Property immediate="true" Causes Replacing Existing Rows With Current One
since it is possibly going to affect all users of 11.1.1.5
Oracle is working on a patch for it.
I will do more investigation about the posted bugs here when this patch is ready

Tuesday, May 3, 2011

Application Module cannot get principal when you use transaction controller in task flows (Fixed in 11.1.2)

When you use Transaction behavior in Task flows then ApplicationModuleImpl.getUserPrincipalName gives a java.lang.NullPointerException
To reproduce it I have an application module with an exposed method:

public void checkTransaction(){
System.out.println(this.getDBTransaction().getSession().getEnvironment().get("jbo.user.principal"));
System.out.println(this.getUserPrincipalName());
}

I also have 2 ‘isolated’ task flows, StartNewTransaction with ‘Always Begin new Transaction’ and UseExistingTransaction with ‘Use existing transaction if possible’




I have user: ‘user1/welcome1’ and run TestTransactions page and loggin.
In main page checkTransactions works as expected. Yet in other task flows it gives a:

java.lang.NullPointerException
at oracle.jbo.server.ApplicationModuleImpl.getUserPrincipalName(ApplicationModuleImpl.java:8429)
at model.modules.AppModuleImpl.checkTransaction(AppModuleImpl.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)


Is this a specific method bug?
Will I have issues with history columns?
Do I loose any other security context?

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

Does not reproduce in jdeveloper 11.1.2

Monday, March 21, 2011

Invalid values in choice lists

There are some cases that in database there are some values in fields that are not selectable any more in List for the specific fields.
For example there can be a lookup table for Status that some values can be selected by user and other that only the system can set.
An other case are Types that are not valid any more but exist for old data.
So if you have limited the data of a choice list with a where statement there is a chance that, data exist for the limited rows. The behavior of choise list then is quite problematic.

To demonstrate it in HR schema I limit the DepartmentView to have only departments that have managers (WHERE Departments.MANAGER_ID is not null) and jobs WHERE Jobs.MIN_SALARY<4000. In a simple adf form if you go to an Employee that has a department without a manager then the department choice list seems to have no value and 2 empty selections.
Also in the log you see the message:
ADFv: Could not find selected item matching value 210 of type: oracle.jbo.domain.Number in the list-of-values.
User thinks there is no department for employee and he can make changes (not on department) and save yet the department is not set to null.

If you go to an employee that has invalid job you see again the choice list empty, even though it has a value. If you try to change any other field and submit you get the required field error even though it has a value.


Similar issue exists when Choice List is dependent to another field. Then if you change the other field and choice list does not have a valid value any more it shows empty even though the value still exist in view object. In this case you need to define dependency on view attributes so that the choice list becomes null every time you change the other field. This way though the choice list value will be lost even if it is valid.


Test Case:



Still reproduce in 11.1.2

SR and bug Bug 12320392: JDEV 11.1.1.4.0 INVALID ENTRIES IN SELECTONECHOICE
was posted for this. Yet it is rejected by the Oracle development team with the answer:
=== ODM Answer ===
From the Bug request # 12320392 - JDEV 11.1.1.4.0 INVALID ENTRIES IN SELECTONECHOICE
BDE team has answered as follows:

Currently there is no way to do this automatically for selectonechoice component. Which is why for this use case you should use af:inputListOfValues or af:inputComboboxListOfValues (ADF LOV Choice List).

Saturday, March 19, 2011

Jhug

Jhug is Java Helenig User group
http://www.jhug.gr/
It is a very active user group with great people that i had the pleasure to meet. Among others they organise monthly meetings in greece, discussing technology development and making presentations. I have attended 2 times and had the honor to make a presentation about jdeveloper 11g
http://adfbugs.googlecode.com/files/Jdeveloper%20IDE.pdf
I find this user group very usefull and helpfull and wish to continue like this.

Monday, February 14, 2011

Dependent LOV in table shows invalid values

Dependent LOV in table sometimes show invalid values.
This is reproduced in Jdeveloper 11.1.1.3 and 11.1.1.4
For example lets say that there is a business rule that ‘The manager of an Employee must be from the same Department.’

To implement this we usually have a list of value for departments and a list of values for Managers that is depended from the department field. Also added dependency on ManagerId attribute to DepartmentId attribute.

I have created an updatable table with the above fields and added auto-submit and partial trigger properties

So for example (testTable.jspx)
When Department is Administration there are 2 selectable employees (189,200) for manager Id
When Department is Marketing there are 3 different selectable employees (190,201,202) for manager Id

It works correctly as long as there is no validation error in manager id field.


To reproduce the problem, do the following:

1. Select row for employee 190 that has department Marketing and type in ManagerId field the value 200.
2. Select an other row. A validation error shows for Manager Id.
3. Select again the same row and change Department to Administration. (Validation error continue to show)
4. open ManagerId LOV. The values shown are wrong (190,201,202). The ManagerId LOV is not refreshed according to Department.
5. Select or Type a value in field (i.e. 201 that is invalid) and press commit. The invalid value cleared. The row is saved to database with null value for manager id.


This issue does not reproduce in form layout (testForm.jspx) since Manager Lov always becomes null when department is changed.

It is quite confusing for the users.

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

Still reproduce in jdeveloper 11.1.2
The workaround we found for this is in managed bean to resetValue of the LOV component in the value change listener of choise list

Friday, February 11, 2011

Jdeveloper is Ready

On the first release of jdeveloper 11, I had made a post that jdeveloper is not ready.
http://forums.oracle.com/forums/thread.jspa?messageID=2836045&#2836045

After 4 patches I feel now that jdeveloper 11.1.1.4 and ADF is ready to use for development of large scale enterprise applications.

The basic bugs have been minimized and the IDE have been stabilized.

We migrated the 46000 files (1GB) adf application to 11.1.1.4 without any serious issue apart from fixing the jazn-data.xml according to note 1288757.1 - Policy Migration of the "jazn-data.xml" File Fails Silently in JDeveloper 11.1.1.4.0.

We are also working now with java 64 bit on windows and set the following configuration :

Set in jdev.conf file (in $Middleware_Home$\jdeveloper\jdev\bin) depending on java installation path:
SetJavaHome D:\Java64\jdk1.6.0_23
AddVMOption -XX:MaxPermSize=1024M

Set in ide.conf file (in $Middleware_Home$\jdeveloper\ide\bin) depending on the available memory:

AddVMOption -Xmx2048M

AddVMOption -Xms512M

The low memory messages have been minimized.

I would like to congratulate the jdeveloper team for their work and wish the best for the future.

Friday, January 28, 2011

Saturday, January 22, 2011

Jdeveloper 11.1.1.4 resolved bugs

I went through the bugs posted here and tried to reproduce them in new release of jdeveloper 11.1.1.4 patch set 3.
It seems many of them are resolved since I cannot reproduce them in the specific test chases. Those are:

Choice List Loose value in disclosed af:Query
http://adfbugs.blogspot.com/2011/01/coise-list-loose-value-in-disclosed.html

LOVs does not reset criteria values. Yet there is a new issue that second time you open LOV it displays same amount of rows as the first search but different.
http://adfbugs.blogspot.com/2010/11/lovs-does-not-reset-criteria-values.html

Activation creates duplicate row when primary key is populated through DB sequence
http://adfbugs.blogspot.com/2010/11/activation-creates-duplicate-row-when_15.html
http://adfbugs.blogspot.com/2010/11/activation-creates-duplicate-row-when.html

Passivation - Activation looses data of Subclassed Entities (Dimitris Stasinopoylos blog)
http://dstas.blogspot.com/2010/11/entity-inheritance-and-passivation.html

Choice list and LOV in query criteria bug
http://adfbugs.blogspot.com/2010/07/choice-list-and-lov-in-query-criteria.html

Range paging in LOVs throw SQL exception with specific steps
http://adfbugs.blogspot.com/2010/06/range-paging-in-lovs-bug-9467477.html

Choise list and checkboxes in popup turn to null after submit
http://adfbugs.blogspot.com/2010/05/choise-list-in-popup-turn-to-null-after.html

Single Row LOV in Query Criteria cannot clear value
http://adfbugs.blogspot.com/2010/05/single-row-lov-in-query-criteria-bug.html

User not populated to model and history collumns
http://adfbugs.blogspot.com/2010/05/user-principal-is-not-propagated-to.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

Removing a LOV return value leaves garbage in view object
http://adfbugs.blogspot.com/2010/03/removing-lov-return-value-leaves.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

Many Thanks to Oracle Developmnet team.

Sunday, January 16, 2011

New Patch Set PS3 of JDeveloper (11.1.1.4) is out there

New Patch Set PS3 of JDeveloper (11.1.1.4) is out there
http://www.oracle.com/technetwork/developer-tools/jdev/downloads/index.html
From the release notes it seems to have a lot of bug fixes and some usefull new features.
http://www.oracle.com/technetwork/developer-tools/jdev/index-088099.html
http://www.oracle.com/technetwork/developer-tools/jdev/relnotes-14-jan-11-261400.html

From the basic components the most usefull new features for us will be:
• Column stretching of results table in search and select dialog
• Ability to configure column widths of inputComboboxListOfValues
• New API on the RichPopup component that complements the client-side API to show, hide and cancel a popup.

In the next weeks I will go through the bugs posted there and the SRs in Oracle Support to post what is fixed or not.

I hope there will be no new defects on existing functionality and that we can easily migrate applications to new patch

Tuesday, January 11, 2011

Choice List Loose value in disclosed af:Query (Fixed in 11.1.1.4)

Choice lists seem to be quite sensitive on loosing their value. Apart from popups with full submit button, they loose their values also inside af:query component when it is closed and submited.
In a simple Query page with Query panel and result table I put some criteria values:


Then i close the Search panel and i press Submit button


When i open Search panel again the selected value in department choise list is lost


Is this a nice bug or what?
Test Case:
http://adfbugs.googlecode.com/files/TestDisclosedCriteria.zip

Monday, January 10, 2011

Happy new year 2011

Happy new year to all.
I wish you all health (less physical bugs) and better productivity (less code bugs)

I would like to apologize for not beeing posting the last month.
It is not that we don't find bugs, it is just that we had a major milestone and a lot of pressure.
I will try to be more active from now on, as we are also expecting new versions of Jdeveloper this year and I will be more involved in other Fusion technologies , SOA, BPMN, WC etc. this year.

Posting for you soon