The Composite Application Debug Utilities consist of several debugging tools to help Composite Application developers debug composite applications.
- Topology Peek is a graphical tool for runtime analysis. It provides a live user interface rendering of Composite Application caches and the ability to copy and clone pages, open pages from the peek navigator, and generate reports of composite applications. It also provides a quick view of the current perspective.
- Property Broker Monitor is a runtime tool to evaluate property broker events, probe and query the broker registry, and trace debug information on property changes. It is also an emulation tool to call actions directly.
- The Extension Explorer shows the extension points and extensions that are stored in platform extension registry.
- The Preference Explorer shows the preference data stored in the preference store.
The Composite Application Debug Utilities are available as an update site for Lotus Expeditor 6.2, and Lotus Notes 8.5. Please refer to this article for the instructions on how to download and install the utilities.
Topology Peek is used for a runtime analysis of composite application topology. The topology layer is made up of components including portlets, views, wires, pages, and labels. Each major component in the topology of an application is shown in a tree representing the actual topology hierarchy. You can click any of the components and view the underlying data model for each. Also included is a peek quick view dialog. This dialog shows the components and their meta data for the current open page (if it is a composite application page) and also the enabled/disabled activities specified in the topology xml for the application.
Topology Peek allows you to:
- View label, page, and all components in all installed composite applications
- View wires and their meta data
- View properties and actions defined under each component
- View a snapshot of the meta data for each component on each page and the activities for the page (updated dynamically when the perspective is changed)
To access the topology peek quick view, click Tools > CA -> Show Components and Properties, or click the icon on the toolbar. This dialog can remain open when switching perspectives and will update dynamically.
The Components tab shows the components on the current page, with the component name followed by the full view ID. When you select a component, the bottom table displays all the component meta data.
The Activities tab shows the activities of the current page and their states.
To access the Topology Peek main perspective, click Open > Topology Peek. It contains the actual topology tree view and each component under each application tree. The screen shot below shows all of the composite applications deployed to the client. The components with a wrench are wires. The components shown under the Notes Mail View portlet component are all of the properties and actions registered for that component. The arrows represent IN and OUT directions for properties and the running man represents an action. When you click any component, the properties view to the right updates to display the current component data.
You can select multiple elements in the properties view and copy them to the clipboard. For example, you could copy the following elements from the table below:
The copied content would look like this when pasted into a text file:
com.ibm.rcp.application = 852568CF00736714_1F_3KE527R200VQ502MGJOIMC2096
com.ibm.rcp.wires = 852568CF00736714_3aabf8894dc8e8a61831397210ff300c19c7ff9;852568CF00736714_3aabf8894dc8e8a61831397210ff300c19c7ff7;852568CF00736714_3aabf8894dc8e8a61831397210ff300c19c7ff5
com.ibm.rcp.launcher = false
com.ibm.rcp.id = 852568CF00736714_6_3KE527R200VQ502MGJOIMC20T2
com.ibm.rcp.type = TYPE_PERSPECTIVE
com.ibm.rcp.components = 852568CF00736714_5_3KE527R208CCC02M6C5LO530P0;852568CF00736714_5_3KE527R208V1802EGKPIR130G2;852568CF00736714_5_3KE527R208CCC02M6C5LO530P2
com.ibm.portal.bookmarkable = Yes
com.ibm.portal.remote-cache-expiry = 0
com.ibm.rcp.useNavigator = false
com.ibm.portal.PageIcon = C:\Documents and Settings\Administrator\IBM\RCP\1171577418125\cimperat\.metadata\.plugins\com.ibm.rcp.topologyhandler\Applications\images\tab_calendar_16.png
com.ibm.rcp.activities = com.ibm.workplace.Mail.activity;com.ibm.workplace.LotusNotes.activity;com.ibm.rcp.composite.application.activity
From Topology Peek, you can also generate a report of the composite application. Right-click the application and click Generate Report on the context menu to open a browser window that contains the information on the composite application.
Property Broker Monitor
The property broker monitor is an Eclipse view that can be placed on any screen to assist in monitoring the broker activity on that screen. This tool is used for a runtime analysis of the property broker registry and events happening in the broker. The different tabs are dynamic and represent real-time events and data, updated as the environment changes around the monitor.
You can accomplish the following with the monitor:
- Use the Console tab to see the different events happening in the broker.
- Use the Current Page tab to show the components on the current page, along with their actions and parameters.
- Use the Active Actions tab to show all active registered actions currently in the broker.
- Use the Active Wires tab to show all of the currently enabled wires in the broker.
- Use the Types tab to show all types defined in namespaces.
- Use the Property Values tab to show property and value pairs stored in the broker.
- Trace Properties to view additional logging on the console tab.
Launching the Property Broker Monitor
To open the Property Broker Monitor, click Tools > CA Debug > Show Actions and Properties, or click the icon ( ) on the toolbar.
The Property Broker Monitor view appears in a default area of the perspective , but you can put it wherever you like on any screen.
You can evaluate almost any object in the different lists by selecting the row in the table and clicking the icon () or right-clicking the row and clicking Show on the context menu. This displays a dialog with the associated objects for the event or entry in the table. The screen shot below shows the dialog for an Event object that contains several objects.
Tracing a property allows you to see debugging information about that property when it is passed into the broker in the changedProperties call. By tracing a property, you can see where it fails or succeeds in the delivery of the property change event to the receiving actions. To trace a property, go to the Current Page tab, find the relevant parameter on an action you want to trace, right-click the parameter, and click Trace.
During normal execution, the flow of a property change that is being traced might look like the screen below. I have annotated some of the key findings and output messages to better help you understand how to debug them.
1. The changedProperties() call was made on the broker.
2. While iterating through the active wires, the broker found a problem when matching against the changed property. Depending on how many wires are enabled, you may see a lot of failures at first.
3. The property change passed the wire evaluation and was added to the processing queue.
4. The PRE_ACTION_CALLED event is called just prior to calling the handler of the property change action.
5. Execution rights return to the broker once the action has been called by the handler.
Property Broker Monitor Emulation Tab
The emulation tab allows you to "spoof" a property change and watch it execute through the broker and to receiving actions. There are two ways you can emulate a property change - one, calling the action directly and two, using an active wire.
Calling the action directly
The Emulation tab allows you to "spoof" a property change and watch it execute through the broker and to receiving actions. You can emulate a property change -by calling the action directly or by using an active wire.
1. Select the "Call an action directly" option.
2. Find the action from the appropriate owner you want to call - in this case, the SetSelectedDate action from a Notes Calendar.
3. Enter the value you want to send to the actions input parameter.
4. Cool tip: If the type of the parameter is known to the monitor, it will attempt to show you the text format you must use. In this case, it is an xsd:dateTime.
5. The list of name value pairs is the information for what the source property must look like for the action to take in the property change.
Using an active wire
The only difference between using an active wire and calli ng the action directly is that the monitor will construct the property change and send the value to the broker using the from owner ID specified in the wire. This exactly emulates the execution flow of a production property change.
Copying and pasting information
Basic copying and pasting
Most of the screens support copy and paste of a given entry. For instance, on the following screen you can copy the Action SetURLAction to the clipboard as a text block.
This operation copies the following to the clipboard:
name = SetURLAction
type = standard
parameter 0 =
--- Parameter (receive a URL string)---
type = InURLType
namespace = http://www.ibm.com/wps/eb
class = java.lang.String
direction = IN
title key = receive a URL string
description key =
nls file name = null
boundTo = request-parameter
title = Set URL to browser and load
description = Set URL to browser and load
nls file = null
invokeOnMultipleMatch = false
activeOnStartup = true
Copying and pasting as a table
If you do not want to copy the actual objects, you can alternatively copy the table as what you see. For instance, you can copy this as a table:
This puts the following on the clipboard:
Event, Count, Name, Source, Target, Time
BROKER_WARNING, 1, InstanceToOwner called: instance="com.ibm.rcp.csiviews.viewpart.CSIViewPart:2945EF13586EA21E7A42178791936AE3_5_3KE527R208CCC02M6C5LO53093", owner="local/xiaotong.nsf/87256b880066f795", Mail - Inbox, com.ibm.rcp.csiviews.viewpart.CSIViewPart:2945EF13586EA21E7A42178791936AE3_5_3KE527R208CCC02M6C5LO53093, null, 09:05:52:00062
BROKER_WARNING, 1, InstanceToOwner called: instance="com.ibm.rcp.csiviews.viewpart.CSIViewPart:2945EF13586EA21E7A42178791936AE3_5_3KE527R208CCC02M6C5LO53093", owner="local/xiaotong.nsf/87256b880066f795", Mail - Inbox, com.ibm.rcp.csiviews.viewpart.CSIViewPart:2945EF13586EA21E7A42178791936AE3_5_3KE527R208CCC02M6C5LO53093, null, 09:05:58:00531
PROPERTY_BEING_TRACED, 1, Property (EmailAddress) is now being traced, null, null, 09:06:48:00218
BROKER_WARNING, 1, InstanceToOwner called: instance="com.ibm.rcp.csiviews.viewpart.CSIViewPart:2945EF13586EA21E7A42178791936AE3_5_3KE527R208CCC02M6C5LO53093", owner="local/xiaotong.nsf/87256b880066f795", Mail - Inbox, com.ibm.rcp.csiviews.viewpart.CSIViewPart:2945EF13586EA21E7A42178791936AE3_5_3KE527R208CCC02M6C5LO53093, null, 09:07:00:00281
BROKER_WARNING, 1, InstanceToOwner called: instance="com.ibm.rcp.csiviews.viewpart.CSIViewPart:2945EF13586EA21E7A42178791936AE3_5_3KE527R208CCC02M6C5LO53093", owner="local/xiaotong.nsf/87256b880066f795", Mail - Inbox, com.ibm.rcp.csiviews.viewpart.CSIViewPart:2945EF13586EA21E7A42178791936AE3_5_3KE527R208CCC02M6C5LO53093, null, 09:07:05:00109
To access the Extension Explorer, click Open > Extension Explorer. It shows the extension points and extensions that are stored in platform extension registry. The left side of the perspective shows the extensions defined on the system. The top level item in the left tree is the plug-in n amespace. The right side of the perspective shows the extension element details. For example, the screen capture below shows the following extension contribution defined in the plug-in:
To access the Preference Explorer, click Open > Preference Explorer. It shows the preference data stored in the preference store. The left side of the perspective shows the Eclipse preference hierarchy. The right side of the perspective shows the properties (name and value pairs) that are stored in the preference node. For example, the follow screen capture shows the security preferences that are in the plugin_customization.ini file of the Notes rcp directory: