debugging oracle adf applications (openworld 2009)
DESCRIPTION
This talk explains key techniques for debugging Oracle ADF applications.TRANSCRIPT
![Page 1: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/1.jpg)
![Page 2: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/2.jpg)
<Insert Picture Here>
How to Debug Oracle Application Framework Applications
Steve Muench
Oracle ADF Development Team
![Page 3: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/3.jpg)
"My ADF Application's Not Working… Help!"
"I see an exception stack trace…"
"I get data, but it's the wrong data…"
"I expect to see data, but no rows appear…"
"My application is slow…"
![Page 4: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/4.jpg)
Start by Getting More Contextual Information
and Trying to Isolate the Problem
Enable Debug Diagnostics
Verbose trace of what happens before problem occurs
Try to reproduce using the BC Tester
Avoid web app restart delay as you narrow down the problem
Try to reproduce using a standalone test client
No UI interaction required = fastest option of all
![Page 5: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/5.jpg)
HOW TO…
Enable Diagnostic Logging
![Page 6: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/6.jpg)
Enable Diagnostic Logging
► Increase Log Lines and/or Log to File
Main Menu: { Tools | Preferences… }
![Page 7: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/7.jpg)
Enable Diagnostic Logging
► Create New Run Configuration
Main Menu: { Application | Project Properties… }
![Page 8: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/8.jpg)
Enable Diagnostic Logging
► Name New Run Configuration
![Page 9: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/9.jpg)
Enable Diagnostic Logging
► Edit New Run Configuration
![Page 10: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/10.jpg)
Enable Diagnostic Logging
► Add –Djbo.debugoutput=console to Java Options
![Page 11: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/11.jpg)
Enable Diagnostic Logging
► Choosing Active Run Configuration
![Page 12: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/12.jpg)
HOW TO
Debug with the Business
Components Tester
![Page 13: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/13.jpg)
Debug with the Business Components Tester
► Right-click Debug to Use Default Configuration
![Page 14: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/14.jpg)
Debug with the Business Components Tester
► Debug Specific Configuration In AM Editor
![Page 15: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/15.jpg)
Debug with the Business Components Tester
► Double-click App Module to See Client Methods
![Page 16: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/16.jpg)
Debug with the Business Components Tester
► Choose Method, Enter Params, and Execute
![Page 17: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/17.jpg)
Debug with the Business Components Tester
► Double-click View Instance to See Data
![Page 18: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/18.jpg)
Debug with the Business Components Tester
► Alternatively, Show Data in Editable Table
![Page 19: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/19.jpg)
Debug with the Business Components Tester
► If Needed, View Object Operations Available
![Page 20: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/20.jpg)
Debug with the Business Components Tester
► Choose Method, Enter Params, and Execute
![Page 21: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/21.jpg)
HOW TO
Create a Command-Line
Test Client Program
![Page 22: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/22.jpg)
Create a Command-Line Test Client Program
► Create a New Java Class with main() Method
![Page 23: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/23.jpg)
Create a Command-Line Test Client Program
► Use bc4jclient Code Template
![Page 24: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/24.jpg)
Create a Command-Line Test Client Program
► Replace AM, Config, VO Names Appropriately
![Page 25: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/25.jpg)
Create a Command-Line Test Client Program
► Write Code to Work with AM and/or VO
![Page 26: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/26.jpg)
HOW TO
Export Debugger Call Stack
and Exact JDev/ADF Version
![Page 27: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/27.jpg)
Export Debugger Call Stack
► Visit Stack Window Preferences
![Page 28: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/28.jpg)
Export Debugger Call Stack
► Enable Line Numbers in Stack Window
![Page 29: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/29.jpg)
Export Debugger Call Stack
► Export the Stack to a Text File
![Page 30: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/30.jpg)
Copying Exact Build Information to the Clipboard
![Page 31: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/31.jpg)
TIP
Having the ADF Source Code
Makes a Big Difference
![Page 32: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/32.jpg)
Without ADF Source…
Parameter Insight Only Gives Data Types
![Page 33: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/33.jpg)
With ADF Source…
Parameter Insight Shows Parameter Names, Too
![Page 34: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/34.jpg)
Without ADF Source…
Quick JavaDoc Does Not Work At All
![Page 35: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/35.jpg)
With ADF Source…
Quick JavaDoc Gives You Instant Overviews
![Page 36: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/36.jpg)
Without ADF Source…
Only Method Breakpoints in Fwk, and No Stepping
![Page 37: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/37.jpg)
With ADF Source…
Break Anywhere, Step Into Anything
![Page 38: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/38.jpg)
Without ADF Source…
Go To Declaration Shows Only Decompiled Stub
![Page 39: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/39.jpg)
With ADF Source…
Go To Declaration Really Goes There
![Page 40: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/40.jpg)
With ADF Source, and Find Usages…
Find Where Exceptions Thrown, Properties Used,
Diagnostics Printed, and More
PropertyConstantsPropertyMetadata(oracle.jbo.common)
Configuration Property Definitions
CSMessageBundle(oracle.jbo.common)
ADF Business Components
Runtime Error Messages
ADFmMessage(oracle.adf.model)
ADF Model Data Binding
Runtime Error Messages
![Page 41: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/41.jpg)
Requesting the ADF Source Code Is Painless
1. Open a Service Request on Metalink
Indicate exactly the JDev/ADF release you are working with
(for example, 11.1.1.1.0)
2. Have the Legal Agreement Signed
Typically VP or higher but depends on the company
Signer's company must be same as the CSI number
3. Return the Legal Agreement to Oracle
Scan the agreement and email it
4. Support Updates the SR with Download Link
Download the source
![Page 42: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/42.jpg)
Dev Guide Explains How to Setup Source
![Page 43: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/43.jpg)
HOW TO
Set Up and Use Oracle ADF
Source for Debugging
![Page 44: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/44.jpg)
Set Up Oracle ADF Source for Debugging
► Create New Library
Main Menu: { Tools | Manage Libraries… }
![Page 45: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/45.jpg)
Set Up Oracle ADF Source for Debugging
► Name Library and Add Source Path Entry
![Page 46: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/46.jpg)
Set Up Oracle ADF Source for Debugging
► Select ADF Source Zip File
![Page 47: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/47.jpg)
Use Oracle ADF Source for Debugging
► In Project Properties, Add Library
![Page 48: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/48.jpg)
Use Oracle ADF Source for Debugging
► Select ADF Source Library You Created Earlier
![Page 49: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/49.jpg)
Use Oracle ADF Source for Debugging
► With Library in Your Classpath, Ready to Debug
![Page 50: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/50.jpg)
HOW TO DEBUG
Exception with Stack Trace
![Page 51: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/51.jpg)
Symptom: NullPointerException on Navigation
![Page 52: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/52.jpg)
Log Window Gives More Info
Double-click To Maximize Tabbed Contents
![Page 53: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/53.jpg)
Framework Caught Unexpected Exception
Scroll Down to See Original Cause
![Page 54: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/54.jpg)
NullPointerException in EmpImpl.validateEmp()
Click on the Hyperlink to Open Source
![Page 55: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/55.jpg)
If getComm() Returns null, We Have a Problem
Verify Your Suspicion Using Exception Breakpoint
![Page 56: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/56.jpg)
In the Breakpoints Tab…
Create a New Exception Breakpoint
![Page 57: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/57.jpg)
Use In-Field Classname Insight or Dropdown
to Specify Exception Class Name
![Page 58: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/58.jpg)
Debug the Application Again Using the
Business Components Browser
![Page 59: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/59.jpg)
Unrelated Code Also Throws NullPointerException!
Delay Enabling Breakpoint to Avoid Stopping Here
![Page 60: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/60.jpg)
Navigate to Source of ApplicationModuleImplUsing Go to Java Type…
![Page 61: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/61.jpg)
Type Enough of the Class to Narrow the List
Camelcase Matching Saves Keystrokes
![Page 62: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/62.jpg)
Navigate to prepareSession() Method
Using Quick Outline
![Page 63: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/63.jpg)
Type to Narrow the Method List
Use Arrows+[Enter] or Mouse to Navigate
![Page 64: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/64.jpg)
Set a Breakpoint in prepareSession()This Occurs After AM is Checked Out of Pool
![Page 65: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/65.jpg)
Edit Exception Breakpoint to Add Group Name
![Page 66: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/66.jpg)
Name the Breakpoint Group Anything You Like
![Page 67: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/67.jpg)
Edit the prepareSession() Breakpoint
![Page 68: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/68.jpg)
Visit the Actions Tab
![Page 69: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/69.jpg)
Configure the Action to Enable a Breakpoint Group
Choosing Yours from the List
![Page 70: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/70.jpg)
Disable the Breakpoint Group By Default
Action Will Enable it at prepareSession() Time
![Page 71: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/71.jpg)
Debug Again. Only Stop at NullPointerException
After First Hitting the prepareSession() Breakpoint
![Page 72: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/72.jpg)
Add a Watch Expression for getComm()
to Inspect Value of the Comm Attribute
![Page 73: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/73.jpg)
Suspicion is Confirmed, It's Null
![Page 74: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/74.jpg)
Add Null Protection to Fix the Bug
Debug and Test to Verify Your Fix
![Page 75: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/75.jpg)
Symptom: DMLException After Committing Data
![Page 76: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/76.jpg)
Exception Breakpoints Stop for
Subtype Exceptions, Too
![Page 77: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/77.jpg)
Summary of Techniques Used in the Example
Exception breakpoints
To stop when exception is thrown
Use more generic or more specific exception type as needed
Breakpoint Groups and Actions
To avoid stopping at uninteresting occurrences
Watch Expressions
To easily inspect the value of attributes
![Page 78: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/78.jpg)
HOW TO DEBUG
"Wrong Data" Problems
![Page 79: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/79.jpg)
Overview of Application to Debug
tfParam_deptno => #{pageFlowScope.deptno}
VarDeptno =#{pageFlowScope.deptno}
<af:setActionListenerfrom="#{bindings.Deptno.inputValue}"
to="#{requestScope.deptno}"
tfParam_deptno =#{requestScope.deptno}
![Page 80: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/80.jpg)
Symptom: Choose Department "ACCOUNTING" (10)
But See Employees for All Departments
![Page 81: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/81.jpg)
Set a Breakpoint in ViewObjectImpl
bindParametersForCollection() Method & Debug
![Page 82: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/82.jpg)
Breakpoint Hit: View Object Query is Executing,
But Which One?
![Page 83: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/83.jpg)
This Query Execution is for VO Instance
Named "DepartmentList" (for Dropdown List)
![Page 84: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/84.jpg)
Edit the Breakpoint to Make it Break Only For the
"EmpView1" View Object We're Interested In
![Page 85: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/85.jpg)
Edit Breakpoint, Add Conditional Expression to
Stop Only For "EmpView1" VO Instance
![Page 86: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/86.jpg)
Choose a Department, Click Button to
Call the Task Flow
![Page 87: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/87.jpg)
Suppress Hiding Null Array Elements
Using Debugger Data Window Preferences
![Page 88: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/88.jpg)
Suppress Hiding Null Array Elements
Using Debugger Data Window Preferences
![Page 89: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/89.jpg)
Bind Variable VarDeptno has null value
Next, Need to Figure Out Why
![Page 90: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/90.jpg)
Toggle Breakpoint on TaskFlow Call Activity
and Repeat the Test
![Page 91: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/91.jpg)
At Breakpoint, Use ADF Structure to Inspect the
Request Scope: deptno Attribute Set Correctly
![Page 92: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/92.jpg)
Drilldown to Task Flow, Toggle Breakpoint on
Default MethodCall Activitity, then Continue
![Page 93: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/93.jpg)
At the Breakpoint, Use ADF Structure to Inspect
the Task Flow: pageFlowScope.deptno Set OK
![Page 94: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/94.jpg)
Navigate to the Method Call Activity's Page Def
![Page 95: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/95.jpg)
Toggle Breakpoint on ExecuteWithParams Action,
Then Continue Execution
![Page 96: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/96.jpg)
At the Breakpoint, Explore the Value of Method
Action's Arguments: VarDeptno is null Incorrectly!
![Page 97: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/97.jpg)
Explore Action Binding Runtime Metadata
in ADF Data Window to See EL Expression Used
![Page 98: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/98.jpg)
View the Whole EL Expression Value,
Copy it to Clipboard
![Page 99: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/99.jpg)
Use EL Evaluator to Test Pasted Expression
It Evaluates to null. Notice Typo deplno
![Page 100: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/100.jpg)
Fix Typo, Test Expression, Copy to Clipboard
![Page 101: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/101.jpg)
Edit Action Binding, Paste in Correct Expression
Rerun Application to Verify the Fix
![Page 102: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/102.jpg)
Now, EmpView1's VarDeptno Bind Variable
Gets Correctly Set to the Selected Department Id
![Page 103: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/103.jpg)
Summary of Techniques Used in the Example
Breakpoint in bindParametersForCollection()
To break whenever a View Object's query executes
Conditional breakpoint expressions
To break only for the EmpView1 VO instance
Breakpoints on Task Flow Activities
To break on task flow call and method call (among others)
ADF Structure and ADF Data Windows
To Inspect ADF context, scopes, task flow artifacts
Breakpoint on Action Bindings in Page Definition
To break just before action occurs
EL Evaluator Window
To test EL expressions in correct runtime context
![Page 104: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/104.jpg)
HOW TO DEBUG
"No Data" Problems
![Page 105: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/105.jpg)
Symptom: No Data Appears
![Page 106: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/106.jpg)
At bindParametersForCollection() Breakpoint,
Add Watches for getQuery() and params
![Page 107: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/107.jpg)
Use View Whole Value... to Copy/Paste Query
Into SQL Worksheet, Then Format SQL
Format SQL
![Page 108: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/108.jpg)
Execute SQL Using Same Bind Variable Values
As in the Watches Window. Data OK
![Page 109: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/109.jpg)
ViewObject FlowChart for "No Data" Problems
Fetched Row null?
bindParametersForCollection()
createRowFromResultSet()
Rows Returned
?
No Results from DB
Discriminator Mismatch
rowQualifies()Qualifies
for RowSet?
Failed to Qualify
No
No
Yes
Yes
No
Row Added to RowSet
Yes
while (hasNext())
![Page 110: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/110.jpg)
createRowFromResultSet() Shows Null Row
Points to Discriminator Mismatch Problem
![Page 111: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/111.jpg)
Query Retrieves JOB Column Values Different
From the Defined Discriminator Values!
![Page 112: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/112.jpg)
Changing the Applied View Criteria to Limit Results
to Only Include Clerks and Salesmen Fixes Problem
![Page 113: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/113.jpg)
Summary of Techniques Used in the Example
Breakpoint in bindParametersForCollection()
To examine query statement and bind variable values
SQL Worksheet
To test query against same database as the application
Breakpoint in createRowFromResultSet()
To test whether database row is retrieved without error
![Page 114: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/114.jpg)
TIP
Show Id in Data and Watches
Windows to Distinguish
Instances
![Page 115: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/115.jpg)
Use Id in Data/Watch Windows to Distinguish Objs
► Open Data or Watch Window Preferences
![Page 116: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/116.jpg)
Use Id in Data/Watch Windows to Distinguish Objs
► Enable Id Column
![Page 117: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/117.jpg)
Use Id in Data/Watch Windows to Distinguish Objs
► Jot Down Id of Objects at One Breakpoint
![Page 118: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/118.jpg)
Use Id in Data/Watch Windows to Distinguish Objs
► Compare to Object Id at Other Breakpoint
![Page 119: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/119.jpg)
HOW TO DEBUG
"Slow Application" Problems
![Page 120: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/120.jpg)
Logging Executed Queries and Fetched Rows
![Page 121: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/121.jpg)
Logging Executed Queries and Fetched Rows
![Page 122: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/122.jpg)
TIP
Customize Debugger Display
of Any Object Type
![Page 123: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/123.jpg)
Customize Debugger Display of Any Object Type
► Select Object Preferences for a Given Entry
![Page 124: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/124.jpg)
Customize Debugger Display of Any Object Type
► Decide What Fields/Expressions To Show
![Page 125: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/125.jpg)
Customize Debugger Display of Any Object Type
► Four Changes Are Showing, But Others, Too
![Page 126: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/126.jpg)
Customize Debugger Display of Any Object Type
► Customize Supertype Members, Too, If Needed
![Page 127: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/127.jpg)
Other Interesting Info in ADF Structure / ADF Data
Lifecycle Breakpoints and Page UI Component Tree
![Page 128: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/128.jpg)
Other Interesting Info in ADF Structure / ADF Data
ADF Context
![Page 129: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/129.jpg)
TIP
Watches Can Evaluate Most
Java Expressions
![Page 130: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/130.jpg)
Not Sure What Watch Expression to Use?
Find Member in Data Window, Then Watch It
![Page 131: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/131.jpg)
Navigate Members Regardless of Access Mode
mInner.mRows[0].mData.mStorage
Call Functions
getViewObject().findAttributeDef("Dname").getUIHelper().getLabel(getViewObject().getApplicationModule().getSession().getLocaleContext())
Debugger Watch Expressions Can Do Many Things
For Example, At a Breakpoint in ViewRowImpl…
![Page 132: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/132.jpg)
Debugger Watch Expression Tricks (Cont'd)
Call Methods That Produce Log Output
xmlNode.print(System.out)
![Page 133: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/133.jpg)
TIP
Breakpoint Expressions Can
Reference Watch Expressions
![Page 134: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/134.jpg)
Breakpoint Conditional Expressions
Basic Expresssions
Any Expression that Works in a Watch
Boolean operators ! (not), || (logical or), && (logical and)
Gotcha: Remember to Think About null Values
Expr != null && Expr.equals("Foo")
"Foo".equals(Expr)
Advanced Expressions
_throw to reference exception object being thrown
instanceof fully.qualified.ClassNameStringExpr != null && StringExpr.indexof("Something") >= 0
StringExpr != null && StringExpr.startsWith("Something")
Expr ? IfTrueExpr : IfFalseExpr
![Page 135: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/135.jpg)
When Debugging Does Not Succeed…
Create a Great Test Case for Worldwide Support
Small investment of your time pays dividends
Simple testcase → faster diagnosis, workaround, fix
Base the testcase on EMP or HR schema
Eliminates any database setup complications
Otherwise, provide minimal SQL script
Insert only enough sample data to reproduce problem
Create a command-line test client
Reduces reproduce instructions to: "Run Test.java"
Otherwise, give the minimum steps to reproduce
Some issues only occur in context of multi-step, web scenario
![Page 136: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/136.jpg)
ADF DEBUGGING FUTURES
![Page 137: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/137.jpg)
The following is intended to outline our general
product direction. It is intended for information
purposes only, and may not be incorporated into any
contract. It is not a commitment to deliver any
material, code, or functionality, and should not be
relied upon in making purchasing decisions.
The development, release, and timing of any
features or functionality described for Oracle’s
products remains at the sole discretion of Oracle.
![Page 138: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/138.jpg)
Future ADF Logger Improvements
► Configure Loggers Dynamically
![Page 139: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/139.jpg)
Future ADF Logger Improvements
► Configure Logger Levels Dynamically
![Page 140: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/140.jpg)
Future ADF Logger Improvements
► See Class/Method With Every Log Message
![Page 141: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/141.jpg)
Future ADF Logger Improvements
► Flexibly Search Log Files
![Page 142: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/142.jpg)
Future ADF Logger Improvements
► Flexibly Search Log Files
![Page 143: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/143.jpg)
Future ADF Debugger Improvements
► Easily See Binding Values
![Page 144: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/144.jpg)
Future ADF Debugger Improvements
► Easily Explore ViewRows and Entity Objects
![Page 145: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/145.jpg)
Future ADF Debugger Improvements
► Quick Expand
![Page 146: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/146.jpg)
Future ADF Debugger Improvements
► Quick Expand
![Page 147: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/147.jpg)
Learn More at OOW and Oracle Develop
Related Sessions and Hands-on Labs:
Oracle JDeveloper and ADF at the Demoground
Moscone West - W-114, W-116, W-109
ADF day at OOW Un-conference
Wed 9:00-5:00 Moscone West – Overlook 1
Win a Wii – visit Oracle Usability pod (Oracle Develop lobby)
Date Session
Mon 10:15am Oracle Fusion Design Fundamentals (Yosemite B)
Mon 4:00pm Mastering Oracle ADF Task Flow (Yosemite B)
Tue 2:30pm Oracle ADF: Fusion Applications Teams' Best Practices (Golden Gate 3)
Tue 5:30pm Ensuring Reusability in Oracle ADF: Designing for Data Model and Component Reuse
(Golden Gate 3)
Wed 1:00pm ADF Methodology Group Meeting (Moscone West, 3rd Floor, Overlook 1)
![Page 148: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/148.jpg)
<Insert Picture Here>
More Information on Oracle JDeveloper
http://oracle.com/technology/jdev
Tutorials and How-To’s
Samples
Demos
Books and Training
Discussion forum
Blogs
More…
![Page 149: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/149.jpg)
http://blogs.oracle.com/smuenchadf
![Page 150: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/150.jpg)
Middleware Lounge
At the Marriott Hotel
Free Amazon Web Services access$35 credit for development time
Daily workshops: “Developing in the Cloud”
Q&A with Amazon representatives and other experts
Internet accessWireless access
SunRay machines also provided
Recharging stations for your phone or laptop
Free food and beverages
Live Twitter feeds and blog updates
Watch keynotes and featured sessions while relaxing, recharging, and checking email
Workshops DailyIn the Middleware Lounge
•Daily, 11:30 AM Introduction to Amazon Web
Services
•Monday 2:00 PM Developing with WebCenter and Oracle Content Management in
Amazon Web Services
•Tuesday 2:00 PM Developing with WebCenter and Oracle Content Management in Amazon Web
Services
•Wednesday 2:15 PM Developing with Oracle SOA Suite in Amazon
Web Services
•Thursday 2:30 PM Developing with Oracle SOA Suite in Amazon
Web Services
![Page 151: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/151.jpg)
Appendix
Useful ADFM/ADFBC Methods for Debugging
Object Method Description
ViewObjectImpl bindParametersForCollection Inspect SQL and bind variables just before
executing query
createRowFromResultSet Study each row as its fetched from the database
ViewRowImpl populate Observe row after being populated with fetched
data
setAttributeInternal Examine attribute value being set
setAttributeValues Examine multiple attribute values being set
(typically by LOV mechanism)
ApplicationPoolImpl doCheckout Watch AM as its checked out of the pool
doManagedCheckin See AM as its checked into pool in managed mode
doUnmanagedCheckin See AM as its checked into pool in stateless mode
EntityImpl setAttributeInternal Examine attribute value being set
ExprEval doEvaluate Analyze each Groovy expression being evaluated
JUCtrlActionBinding doIt Follow any (method) action binding invocation
![Page 152: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/152.jpg)
QUESTIONS?
![Page 153: Debugging Oracle ADF Applications (OpenWorld 2009)](https://reader034.vdocument.in/reader034/viewer/2022042521/5469eacdaf7959b5448b4a8f/html5/thumbnails/153.jpg)