<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-12864007</id><updated>2011-07-28T05:20:52.621-07:00</updated><category term='ADF BC View Object removeCurrentRow removeRowWithKey'/><category term='JAZNUserAdaptor'/><category term='shell extension'/><category term='eBusiness R12 FRM-92050 lservlet IE8'/><category term='JDeveloper code templates location java.tpl'/><category term='ADF Faces'/><category term='JDeveloper CVS version control'/><category term='ADF Faces backing beans'/><category term='jar'/><category term='war'/><category term='ear'/><category term='zip'/><category term='free utilities'/><title type='text'>Brenden Anstey's JDeveloper and ADF Faces blog</title><subtitle type='html'>JDeveloper, Java Server Faces, ADF Business Components</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://brendenanstey.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://brendenanstey.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Brenden Anstey</name><uri>http://www.blogger.com/profile/09715936768254537319</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12864007.post-5002936973498796436</id><published>2009-12-05T00:40:00.000-08:00</published><updated>2009-12-05T01:14:39.540-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eBusiness R12 FRM-92050 lservlet IE8'/><title type='text'>How to run eBusiness Suite R12 using IE8</title><content type='html'>&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;br /&gt;IE8 is not supported for R12 as yet but it does work by disabling a security setting related to Cross Site Scripting (XSS). This solution works on Vista 64 using IE8 on Release 12.1&lt;br /&gt;&lt;br /&gt;Here is how to do it:&lt;br /&gt;Firstly we need to add the EBS application server to trusted sites within IE as we definitely do want the IE8 XSS filter active for general Internet browsing.&lt;br /&gt;1. In IE8 Select Tools-&gt;Internet Options-&gt;Security(tab)-&gt;Trusted Sites&lt;br /&gt;2. Click Sites and type in the hostname of the server running R12, untick Require HTTPS if needed and add the website to the list of trusted sites. Hit close.&lt;br /&gt;3. Still in the Security tab click the custom level button and scroll right to the bottom and the third option from the bottom at the time of writing is 'Enable XSS Filter" set the option value to Disable.&lt;br /&gt;&lt;br /&gt;Make sure you only disable the XSS filter for Trusted sites which should be a small list of intranet servers that you trust the content from.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12864007-5002936973498796436?l=brendenanstey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brendenanstey.blogspot.com/feeds/5002936973498796436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12864007&amp;postID=5002936973498796436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/5002936973498796436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/5002936973498796436'/><link rel='alternate' type='text/html' href='http://brendenanstey.blogspot.com/2009/12/how-to-run-ebusiness-suite-r12-using.html' title='How to run eBusiness Suite R12 using IE8'/><author><name>Brenden Anstey</name><uri>http://www.blogger.com/profile/09715936768254537319</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12864007.post-7298973333920951229</id><published>2008-12-09T02:06:00.001-08:00</published><updated>2008-12-09T02:50:10.502-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell extension'/><category scheme='http://www.blogger.com/atom/ns#' term='jar'/><category scheme='http://www.blogger.com/atom/ns#' term='war'/><category scheme='http://www.blogger.com/atom/ns#' term='zip'/><category scheme='http://www.blogger.com/atom/ns#' term='ear'/><title type='text'>Browse JAR, WAR and EAR files in Explorer</title><content type='html'>&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;br /&gt;Found this really neat method if getting the Windows Zip Explorer Compressed (zipped) Folders extension to read JAR, WAR and EAR files in Windows Explorer.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_2iRmtcr1mMg/ST5JgIf2r2I/AAAAAAAAAAU/ymvENAyVCgg/s1600-h/war-file.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 272px;" src="http://3.bp.blogspot.com/_2iRmtcr1mMg/ST5JgIf2r2I/AAAAAAAAAAU/ymvENAyVCgg/s400/war-file.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5277736629710532450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Instructions&lt;/span&gt;&lt;br /&gt;Open notepad and paste the below Registry Entries into a text file named ear-jar-war.reg, save it on your desktop and then run it. This will associate the three types with the the Zip shell extension: Compressed (zipped) Folders&lt;br /&gt;If any of the extensions are associated with something else, Compressed (zipped) Folders will now appear in the recommended programs for these file types so you can associate them manually.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Windows Registry Editor Version 5.00&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.jar]&lt;br /&gt;"Content Type"="application/x-zip-compressed"&lt;br /&gt;"PerceivedType"="compressed"&lt;br /&gt;@="CompressedFolder"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.jar\CompressedFolder]&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.jar\CompressedFolder\ShellNew]&lt;br /&gt;"Data"=hex:50,4b,05,06,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.jar\OpenWithProgids]&lt;br /&gt;"CompressedFolder"=""&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.jar\PersistentHandler]&lt;br /&gt;@="{098f2470-bae0-11cd-b579-08002b30bfeb}"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.war]&lt;br /&gt;"Content Type"="application/x-zip-compressed"&lt;br /&gt;"PerceivedType"="compressed"&lt;br /&gt;@="CompressedFolder"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.war\CompressedFolder]&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.war\CompressedFolder\ShellNew]&lt;br /&gt;"Data"=hex:50,4b,05,06,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.war\OpenWithProgids]&lt;br /&gt;"CompressedFolder"=""&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.war\PersistentHandler]&lt;br /&gt;@="{098f2470-bae0-11cd-b579-08002b30bfeb}"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.ear]&lt;br /&gt;"Content Type"="application/x-zip-compressed"&lt;br /&gt;"PerceivedType"="compressed"&lt;br /&gt;@="CompressedFolder"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.ear\CompressedFolder]&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.ear\CompressedFolder\ShellNew]&lt;br /&gt;"Data"=hex:50,4b,05,06,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.ear\OpenWithProgids]&lt;br /&gt;"CompressedFolder"=""&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\.ear\PersistentHandler]&lt;br /&gt;@="{098f2470-bae0-11cd-b579-08002b30bfeb}"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Oh and of course back up your registry before running. As you can see from above it only adds some keys to HKEY_CLASSES_ROOT, tested in XP, but at your own risk and all that ;)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12864007-7298973333920951229?l=brendenanstey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brendenanstey.blogspot.com/feeds/7298973333920951229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12864007&amp;postID=7298973333920951229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/7298973333920951229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/7298973333920951229'/><link rel='alternate' type='text/html' href='http://brendenanstey.blogspot.com/2008/12/browse-jar-war-and-ear-files-in.html' title='Browse JAR, WAR and EAR files in Explorer'/><author><name>Brenden Anstey</name><uri>http://www.blogger.com/profile/09715936768254537319</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_2iRmtcr1mMg/ST5JgIf2r2I/AAAAAAAAAAU/ymvENAyVCgg/s72-c/war-file.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12864007.post-9036327311612444679</id><published>2008-07-07T18:52:00.000-07:00</published><updated>2008-07-07T19:16:22.325-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JDeveloper code templates location java.tpl'/><title type='text'>How to find, share and back up JDeveloper code templates</title><content type='html'>&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;br /&gt;JDeveloper code templates are stored in the JDevHome folder in an XML file called java.tpl. This is one file worth backing up if you have a lot of custom code templates.&lt;br&gt;&lt;br /&gt;The file is in [Drive:]\JDevHome[Version]\system\oracle.jdeveloper.[version] eg. &lt;br&gt;&lt;br /&gt;C:\JDev\IDE\JDevHome10.1.3.3_1\system\oracle.jdeveloper.10.1.3.41.57&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12864007-9036327311612444679?l=brendenanstey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brendenanstey.blogspot.com/feeds/9036327311612444679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12864007&amp;postID=9036327311612444679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/9036327311612444679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/9036327311612444679'/><link rel='alternate' type='text/html' href='http://brendenanstey.blogspot.com/2008/07/how-to-find-share-and-back-up.html' title='How to find, share and back up JDeveloper code templates'/><author><name>Brenden Anstey</name><uri>http://www.blogger.com/profile/09715936768254537319</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12864007.post-7116850318358868427</id><published>2008-05-11T17:18:00.000-07:00</published><updated>2008-07-07T17:44:40.429-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free utilities'/><title type='text'>Free software I wouldn't be without</title><content type='html'>&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;br /&gt;Here are some tool-utilities-programs I wouldn't be without. All free and very useful:&lt;br /&gt;PuTTY : SSH Client : &lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"&gt;Link&lt;/a&gt;&lt;br /&gt;UnxUtils: grep, cut and ls your way around Windows : &lt;a href="http://sourceforge.net/projects/unxutils/"&gt;Link&lt;/a&gt;&lt;br /&gt;CutePDF : Convert ANY document to PDF : &lt;a href="http://www.cutepdf.com/"&gt;Link&lt;/a&gt;&lt;br /&gt;Foxit: Lightweight fast PDF reader: &lt;a href="http://www.foxitsoftware.com/"&gt;Link&lt;/a&gt;&lt;br /&gt;XML Notepad : Free XML tool from Microsoft : &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=72d6aa49-787d-4118-ba5f-4f30fe913628&amp;amp;displaylang=en"&gt;Link&lt;/a&gt;&lt;br /&gt;Collabnet Subversion : Powerful source control : &lt;a href="http://subversion.tigris.org/project_packages.html"&gt;Link&lt;/a&gt;&lt;br /&gt;TortoiseSVN : Explorer extension and GUI for Subversion: &lt;a href="http://tortoisesvn.net/downloads"&gt;Link&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12864007-7116850318358868427?l=brendenanstey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brendenanstey.blogspot.com/feeds/7116850318358868427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12864007&amp;postID=7116850318358868427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/7116850318358868427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/7116850318358868427'/><link rel='alternate' type='text/html' href='http://brendenanstey.blogspot.com/2008/05/free-software-i-wouldnt-be-without.html' title='Free software I wouldn&apos;t be without'/><author><name>Brenden Anstey</name><uri>http://www.blogger.com/profile/09715936768254537319</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12864007.post-264422202060323530</id><published>2007-05-23T21:48:00.000-07:00</published><updated>2007-05-23T22:40:42.571-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAZNUserAdaptor'/><category scheme='http://www.blogger.com/atom/ns#' term='ADF Faces'/><title type='text'>J2EE Container Managed Security: How to reference the current user</title><content type='html'>&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;br /&gt;&lt;p&gt;When J2EE container managed security is used the User Principal can be referenced in a number of ways:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;strong&gt;Expression Language&lt;/strong&gt; &lt;br /&gt;&lt;pre&gt;       &amp;lt;af:outputText value=&lt;span style="color:red;"&gt;"#{facesContext.externalContext.userPrincipal.name}"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;Managed / Backing Bean&lt;/strong&gt;&lt;br /&gt;&lt;pre&gt;       ExternalContext ectx = FacesContext.getCurrentInstance().getExternalContext();&lt;br /&gt;       String userName = ectx.getUserPrincipal().getName();&lt;br /&gt;       System.out.println(&lt;span style="color:red;"&gt;"Current user: "&lt;/span&gt; + userName);&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;ADF BC Application Module&lt;/strong&gt;&lt;br /&gt;&lt;pre&gt;       String userName = getUserPrincipalName();&lt;br /&gt;       System.out.println(&lt;span style="color:red;"&gt;"Current user: "&lt;/span&gt; + userName);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12864007-264422202060323530?l=brendenanstey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brendenanstey.blogspot.com/feeds/264422202060323530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12864007&amp;postID=264422202060323530' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/264422202060323530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/264422202060323530'/><link rel='alternate' type='text/html' href='http://brendenanstey.blogspot.com/2007/05/j2ee-container-managed-security-how-to.html' title='J2EE Container Managed Security: How to reference the current user'/><author><name>Brenden Anstey</name><uri>http://www.blogger.com/profile/09715936768254537319</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12864007.post-8633031759487922608</id><published>2007-03-27T18:56:00.000-07:00</published><updated>2007-03-27T19:32:34.913-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADF BC View Object removeCurrentRow removeRowWithKey'/><title type='text'>Programmatically removing all entities from a view object</title><content type='html'>&lt;span style="font-family:Arial;font-size:85%;"&gt;Recently I had a case where I needed to remove all rows from a view object and found that there was no existing method to do this. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;The case for doing such an action is where there is a Master-Detail relationship and the detail relation is used only of there is a certain condition met in the master. If the condition is met then the detail is required, however if the user changes their mind then we need a way of removing any records that may have been created in the detail.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;By adding the following method in the View Object Implementation class we can safely delete all records in the view object:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courior;font-size:75%;"&gt;&lt;br /&gt; &lt;pre&gt;    &lt;font color="navy"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; &lt;font color="navy"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/font&gt; removeAllRows()&lt;font color="navy"&gt;{&lt;/font&gt;&lt;br /&gt;       &lt;font color="darkgreen"&gt;// rangeSize is -1    &lt;/font&gt;&lt;br /&gt;       Row[] rows = getAllRowsInRange();&lt;br /&gt;          &lt;font color="navy"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt; (&lt;font color="navy"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt; r = 0; r &amp;lt; rows.length; r++)&lt;br /&gt;            &lt;font color="navy"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt; (rows[r] != &lt;font color="navy"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/font&gt;)&lt;br /&gt;                rows[r].remove();&lt;br /&gt;        &lt;br /&gt;    &lt;font color="navy"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12864007-8633031759487922608?l=brendenanstey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brendenanstey.blogspot.com/feeds/8633031759487922608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12864007&amp;postID=8633031759487922608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/8633031759487922608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/8633031759487922608'/><link rel='alternate' type='text/html' href='http://brendenanstey.blogspot.com/2007/03/programatically-removing-all-entities.html' title='Programmatically removing all entities from a view object'/><author><name>Brenden Anstey</name><uri>http://www.blogger.com/profile/09715936768254537319</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12864007.post-1847593706821509421</id><published>2007-03-24T23:43:00.000-07:00</published><updated>2007-03-25T01:52:28.287-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADF Faces backing beans'/><title type='text'>How to reduce coding by extending Managed Beans</title><content type='html'>&lt;span style="font-family:arial;font-size:85%;"&gt;After coding many backing/managed beans it became clear to me that there were a few things that I seem to be doing over and over, these were:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Getting values from the binding layer&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Setting values in the binding layer&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Executing operation bindings&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Using a combination of the above in a backing bean method&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The logical thing to do was be to but my code for doing this into a class and extend this class for all of my managed beans. The class is called JSFBean and uses the binding &lt;span style="font-family:courier new;"&gt;"#{bindings}"&lt;/span&gt; to access the binding container. The three methods in the class (so far) are: execute, getValue and setValue.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;The bean which I have called JSFBean includes these three methods and some basic error handling. When creating a backing bean simply add "extends JSFBean" to the class definition. &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;JSFBean.java:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:navy;"&gt;&lt;b&gt;package&lt;/b&gt;&lt;/span&gt; com.delexian.ui.backing;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:navy;"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; javax.faces.application.FacesMessage;&lt;br /&gt;&lt;span style="color:navy;"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; javax.faces.context.FacesContext;&lt;br /&gt;&lt;span style="color:navy;"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; javax.faces.el.ValueBinding;&lt;br /&gt;&lt;span style="color:navy;"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; oracle.adf.model.binding.DCBindingContainer;&lt;br /&gt;&lt;span style="color:navy;"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; oracle.binding.OperationBinding;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:navy;"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color:navy;"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; JSFBean &lt;span style="color:navy;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:navy;"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; JSFBean() &lt;span style="color:navy;"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:navy;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:navy;"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; DCBindingContainer getBindings() &lt;span style="color:navy;"&gt;{&lt;/span&gt;&lt;br /&gt;        FacesContext fc = FacesContext.getCurrentInstance();&lt;br /&gt;        ValueBinding vb = fc.getApplication().createValueBinding(&lt;span style="color:red;"&gt;"#{bindings}"&lt;/span&gt;);&lt;br /&gt;        DCBindingContainer dc = (DCBindingContainer) vb.getValue(fc);&lt;br /&gt; &lt;br /&gt;        &lt;span style="color:navy;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; dc;&lt;br /&gt;    &lt;span style="color:navy;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:navy;"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color:navy;"&gt;&lt;b&gt;boolean&lt;/b&gt;&lt;/span&gt; execute(String operation)&lt;span style="color:navy;"&gt;{&lt;/span&gt;&lt;br /&gt;        DCBindingContainer bindings = getBindings();&lt;br /&gt;        OperationBinding operationBinding = bindings.getOperationBinding(operation);&lt;br /&gt;        &lt;span style="color:navy;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; (operationBinding == &lt;span style="color:navy;"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;)&lt;span style="color:navy;"&gt;{&lt;/span&gt;&lt;br /&gt;            FacesContext fc = FacesContext.getCurrentInstance();&lt;br /&gt;            fc.addMessage(&lt;span style="color:red;"&gt;"Invalid Operation"&lt;/span&gt;, &lt;span style="color:navy;"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt; FacesMessage(operation + &lt;span style="color:red;"&gt;" is not a valid operation for this page"&lt;/span&gt;));&lt;br /&gt;            &lt;span style="color:navy;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color:navy;"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/span&gt;;    &lt;br /&gt;        &lt;span style="color:navy;"&gt;}&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;        operationBinding.execute();&lt;br /&gt; &lt;br /&gt;        &lt;span style="color:navy;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; operationBinding.getErrors().isEmpty();&lt;br /&gt;    &lt;span style="color:navy;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:navy;"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; Object getValue(String el)&lt;span style="color:navy;"&gt;{&lt;/span&gt;&lt;br /&gt;             FacesContext fc = FacesContext.getCurrentInstance();&lt;br /&gt;             ValueBinding expr = fc.getApplication().createValueBinding(el);&lt;br /&gt;             &lt;span style="color:navy;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; expr.getValue(fc);&lt;br /&gt;         &lt;span style="color:navy;"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;    &lt;span style="color:navy;"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color:navy;"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/span&gt; setValue(String el, Object value)&lt;span style="color:navy;"&gt;{&lt;/span&gt;&lt;br /&gt;        FacesContext fc = FacesContext.getCurrentInstance();&lt;br /&gt;        ValueBinding expr = fc.getApplication().createValueBinding(el);&lt;br /&gt;        expr.setValue(fc, value);&lt;br /&gt; &lt;br /&gt;    &lt;span style="color:navy;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:navy;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;An example usage in a backing bean Employees.java, extends JSFBean:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:navy;"&gt;&lt;b&gt;package&lt;/b&gt;&lt;/span&gt; com.delexian.ui.backing;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:navy;"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color:navy;"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; Employees &lt;span style="color:navy;"&gt;&lt;b&gt;extends&lt;/b&gt;&lt;/span&gt; JSFBean &lt;span style="color:navy;"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:navy;"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; Employees() &lt;span style="color:navy;"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:navy;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:navy;"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; String calculate_action() &lt;span style="color:navy;"&gt;{&lt;/span&gt;&lt;br /&gt;        execute(&lt;span style="color:red;"&gt;"CalculateCommission"&lt;/span&gt;);&lt;br /&gt;        execute(&lt;span style="color:red;"&gt;"Commit"&lt;/span&gt;);&lt;br /&gt;        &lt;span style="color:navy;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color:navy;"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color:navy;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color:navy;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courior;font-size:85%;"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12864007-1847593706821509421?l=brendenanstey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brendenanstey.blogspot.com/feeds/1847593706821509421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12864007&amp;postID=1847593706821509421' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/1847593706821509421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/1847593706821509421'/><link rel='alternate' type='text/html' href='http://brendenanstey.blogspot.com/2007/03/how-to-reduce-coding-by-extending.html' title='How to reduce coding by extending Managed Beans'/><author><name>Brenden Anstey</name><uri>http://www.blogger.com/profile/09715936768254537319</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12864007.post-117005260603492699</id><published>2007-01-28T21:43:00.000-08:00</published><updated>2007-03-22T06:29:49.293-07:00</updated><title type='text'>An ADF Faces and XML Publisher Success Story</title><content type='html'>&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;strong&gt;Deciding on an output mechanism for the application&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;After months of developing an application using ADF Faces and ADF Business components it came time to solve the last of my integration and design issues: Integrating a reporting/output mechanism. Early in the project I considered the option of using Oracle Reports or doing (redoing) printable versions of the entire entry form. With over 40 sections to the online application form, neither of these options seemed desirable or suitable.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;At a recent conference XML Publisher generated quite a lot of interest so I thought I would download it and see what the hype was about. It didn't take long to work out that XML Publisher was going to be the tool of choice for my application. The original Word documents that the application was built from could be used with the data plugged straight in to where it needed to go. One of the big gains was not having to worry about formatting, this alone saved a huge amount of time.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;strong&gt;Integrating XML Publisher with JDeveloper&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Deepak Vohra has produced an article on OTN called &lt;a href="http://www.oracle.com/technology/pub/articles/vohra-jdev-xmlpub.html"&gt;Integrating Oracle XML Publisher with Oracle JDeveloper 10g&lt;/a&gt;&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;which provided examples of using the XML Publisher API's in a simple Java Class. &lt;/span&gt;&lt;span style="font-family:Arial;"&gt;To start of with I created a small Java project based on one class which I executed from its Main method. This allowed me to get all the class paths and libraries sorted out and have me a good understanding of the XML Publisher Java API's. I was able to produce and merge PDF documents including page numbering in a very short space of time. I had to set enough memory for the XMP Publisher API's to overcome an out of memory error (Add "-Xmx256m"to your project run properties). The next step was to integrate this into a sandbox J2EE project and start writing to the browser response stream rather than disk. This presented a few challenges immediately, mostly around the location of the Data Template and XSL files which defined the output to be produced. In fact any interaction with the file system would prove to be a problem due to the relative execution changing to the location of the OC4J and not the class that is running. The other key problems were getting a pooled connection to the database and coding any file system operations to run in the embedded OC4J (XP) and target 10.1.3 middle tier (Linux). &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;strong&gt;Key design problems and their solutions&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;Getting a pooled connection for use by XML Publisher was solved by exposing a client method from the Application Module which returned a database connection from the connection pool. Getting the connection is described &lt;a href="http://radio.weblogs.com/0118231/2004/01/30.html#a232"&gt;here&lt;/a&gt; in Steve Muench's blog.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;The next design problem was where to actually call the XML Publisher API's to do all of the processing. The answer in short was a Managed Bean. The bean references the binding layer to get its parameters and is called by a JSP, which sets the response stream for the XML Publisher PDFDocMerger to write its PDF output to. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;As for the interaction with the file system, I used a system properties table within the database which contained the various directories for the XML Data Templates and XSL style sheets for the output. I coded an AM method which used System.getProperties().getProperty("os.name"); to work out what OS the OC4J was running under and get the property for that Operating System eg. xmlp.windows.template.dir would get the full path on Windows for the XML Publisher template directory. (not quite write once - run anywhere, but close enough)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;XML Publisher has been a huge win for this particular project and has successfully plugged a huge gap in the output mechanism for the application. The API's are comprehensive and every time looked to see if it could do something, the answer seemed to be yes and more! XML Publisher will definately be my preferred reporting tool for future ADF based projects.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:0;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12864007-117005260603492699?l=brendenanstey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brendenanstey.blogspot.com/feeds/117005260603492699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12864007&amp;postID=117005260603492699' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/117005260603492699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/117005260603492699'/><link rel='alternate' type='text/html' href='http://brendenanstey.blogspot.com/2007/01/adf-faces-and-xml-publisher-success.html' title='An ADF Faces and XML Publisher Success Story'/><author><name>Brenden Anstey</name><uri>http://www.blogger.com/profile/09715936768254537319</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12864007.post-116494021572376979</id><published>2006-11-30T17:24:00.000-08:00</published><updated>2007-03-23T18:35:17.294-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JDeveloper CVS version control'/><title type='text'>Tips for using CVS with JDeveloper</title><content type='html'>&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;strong&gt;Versions &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Server: Linux OS, CVS Version 1.11.1p1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Client: Windows XP, JDeveloper 10.1.3.1 using ADF BC / Faces &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Other tools (non-mandatory but good to have), PuTTy, PAgent, PGen PSftp &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Overview of the Setup Process&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Create a generic user to own the CVS Repositry and a group which all the CVS users will belong. Create a user for each developer and add them to the same group. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;To create a server repository as the generic user the command is: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;cvs -d /oracle/cvs/CVSROOT init &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;JDeveloper uses a private public key pair and SSH2 (other protocols available) to connect to the CVS. The key pair is generated in JDeveloper and the public key has to be manually added to the users authorized_keys file in the .ssh directory within the users home directory. The CVSROOT is the root directory of the CVS repository which is created by the CVS owner mentioned above. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Key Points About Using JDeveloper with CVS&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Using JDeveloper with a CVS will break dependencies within the project which are normally enforced by JDeveloper in single user mode. When updating your project from the CVS the dependencies between objects are not enforced resulting in objects becoming out of sync. For instance a standard ADF BC View Object may consist of two files, its XML definition and View implementation file. It will also be referenced by one or more Application Module(s) and possibly a Viewlink. To prevent missing references and broken dependencies all the referenced / referencing objects must be included when committing and updating the CVS. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Open and close the project if there are dependency errors that do not seem to be correct. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;CVS does not implement locking, it is the developers responsibility to make sure that the files they wish to work on are up to date. If two developers have worked on a file simultaneously a merge will be required when synchronising the CVS. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;How do I know if my source is up to date with the CVS?&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The key to getting the CVS JDev integration working properly is using the Pending Changes window effectively. Within this window are three tabs, Outgoing, Incoming and Candidates. Outgoing contains changed items which are not up to date with the CVS. Incoming displays items are new or the local copy is out of date with the CVS. Candidates are files not yet checked in with the CVS. The most important tab in the Pending Changes window is the Incoming Tab. Watch this one with care as incoming changes are NOT reflected in the Application Navigator unlike other file statuses. New files are not shown in the Application Navigator because they are not in the project but may be referenced by existing objects updated from the CVS. Using the Incoming tab is key to keeping the project in sync.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Minimising Pain and Suffering with CVS&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Develop your model first and view second. If the model is not complete before development of the user interface it is worth finalising it first. The reason being is that the user interface (JSP's, pageDef's and Databindings.cpx) are a lot easier to fix than the data model when the project gets out of date and or needs to be merged. Most people will do this anyway, but it not always the case that the model is completed first. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Commit all changes regularly and especially before leaving at the end of the day. In the morning check the Incoming tab and update as necessary.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Occasionally perform a full checkout of your project from the CVS. This will cause any synchronisation issues to come to the surface and recover any missing files from backup if necessary. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Have the Li/Unix administrator include the CVS in the server backups. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Project Files and the CVS&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The project JPR files often report conflicts which cannot be resolved by merging or committing changes. Fortunately JDeveloper is smart enough to pick up any stray/new files and add them to the project. Close and open the project and if all files are present force an unchanged commit of the project JPR file.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Bugs and Annoyances&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;View link files are continually 'touched' when the AM is updated resulting in them being in changed status continually even though they are not out of date with the CVS. This also clutters the Outgoing tab which is a pain if some of them are legitimately updated. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;JDeveloper occasionally hangs when performing some CVS actions from the navigator. CVS actions issued from the Pending Changes window seem to be more reliable. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Occasionally some files are not recognised as an Object (such as a VO) and are displayed as their individual files in the Application Navigator. If this happens close and reopen your project and the object will reappear and its supporting files will be attached. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Further Reading&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Oracle® Application Development Framework Developer’s Guide For Forms/4GL Developers (chapter 32 Working Productively in Teams) This manual can be downloaded from otn.oracle.com &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12864007-116494021572376979?l=brendenanstey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brendenanstey.blogspot.com/feeds/116494021572376979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12864007&amp;postID=116494021572376979' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/116494021572376979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/116494021572376979'/><link rel='alternate' type='text/html' href='http://brendenanstey.blogspot.com/2006/11/tips-for-using-cvs-with-jdeveloper.html' title='Tips for using CVS with JDeveloper'/><author><name>Brenden Anstey</name><uri>http://www.blogger.com/profile/09715936768254537319</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12864007.post-114853045798021257</id><published>2006-03-24T21:12:00.000-08:00</published><updated>2007-03-23T18:37:41.398-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADF Faces'/><title type='text'>ADF Faces – First Impressions</title><content type='html'>&lt;span style="font-family:arial;font-size:85%;"&gt;The much anticipated JDeveloper 10.1.3 was released at the end of January 2006 and definitely lived up to expectations among the JDeveloper community. The slick new interface boasts some really great features including significant enhancements in the code editor and overall feel of the IDE.&lt;br /&gt;&lt;br /&gt;So what about Faces? ADF Faces is based on the JavaServer Faces industry standard framework. An open source implementation of JavaServer Faces called MyFaces has been [donated] to the Apache Foundation by Oracle.&lt;br /&gt;&lt;br /&gt;The persistence layers offered by JDeveloper are ADF Business Components and Toplink. Oracle has released fully working example application called the SRDemo which is a simple service request system. The aim of the SRDemo is to solve most of the design woes faced by any developer starting out on green fields J2EE web application. SRDemo is written in ADF Faces (JSP) using TopLink and use J2EE container security for authentication and authorisation.&lt;br /&gt;&lt;br /&gt;Why TopLink? TopLink is a POJO (plain old java object) based approach to creating an object-to-relational persistence layer. TopLink uses and EJB (Enterprise Java Bean) session façade and provides a full declarative (XML) persistence layer defined in what’s called a TopLink map. One really nice feature of TopLink is named queries; Named queries encourage the reuse of TopLink entities by exposing different operations on the entity (such as setting or changing conditions) by exposing methods through the Session Façade bean. I was impressed with TopLink, because it has some original and well implemented ideas. The POJO approach unpacks all the complexity which is hidden in ADF BC, which can be a bit daunting when starting out with the TopLink framework.&lt;br /&gt;&lt;br /&gt;There are some significant improvements with ADF BC including some out-of-the-box goodies which either didn’t work or were a headache to implement in 10.1.2. Read-only view objects are great as well as dynamic view criteria. For those coming from an Oracle Forms or non-OO background, ADF BC is an easier transition than TopLink and is a mature and robust framework to go with.&lt;br /&gt;&lt;br /&gt;The actual ADF Faces user interface can be implemented in two ways, a JSP (Java Server Pages) or a JSPX (XML Document). The faces lifecycle and faces-config.xml implements the controller layer providing the interaction between the model and view layers. ADF Faces provides an abundant set of UI components which give a consistent looking and rich user interface. Strong support for expression language makes binding components to the model a breeze. The backing bean and managed bean concept has also greatly simplified managing events.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12864007-114853045798021257?l=brendenanstey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brendenanstey.blogspot.com/feeds/114853045798021257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12864007&amp;postID=114853045798021257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/114853045798021257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/114853045798021257'/><link rel='alternate' type='text/html' href='http://brendenanstey.blogspot.com/2006/03/adf-faces-first-impressions.html' title='ADF Faces – First Impressions'/><author><name>Brenden Anstey</name><uri>http://www.blogger.com/profile/09715936768254537319</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12864007.post-111596595414055176</id><published>2005-05-12T23:22:00.000-07:00</published><updated>2007-03-23T18:38:24.128-07:00</updated><title type='text'>Running ADF applications in Debug mode</title><content type='html'>&lt;span style="font-family:arial;font-size:85%;"&gt;The ADF Lifecycle occasionally handles some exceptions and doesn't propagate them anywhere useful. This can be frustrating when you are encountering some strange behaviour but can't determine the cause.&lt;br /&gt;&lt;br /&gt;When running the embedded OC4J container with JDeveloper you can enable debug level logging mode which will cause ADF to log all SQL statements, exceptions and other info to the Embedded OC4J containers log window in JDev.&lt;br /&gt;&lt;br /&gt;to enable debug mode, right click on your ViewController project and select properties. Then select Profiles-&gt;Development-&gt;Runner nodes. In the java options field add the following:&lt;br /&gt;&lt;br /&gt;-Djbo.debugoutput=console&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12864007-111596595414055176?l=brendenanstey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/111596595414055176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12864007/posts/default/111596595414055176'/><link rel='alternate' type='text/html' href='http://brendenanstey.blogspot.com/2005/05/running-adf-applications-in-debug-mode.html' title='Running ADF applications in Debug mode'/><author><name>Brenden Anstey</name><uri>http://www.blogger.com/profile/09715936768254537319</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
