<?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'><id>tag:blogger.com,1999:blog-6567533362852893161</id><updated>2009-08-28T00:38:58.461-07:00</updated><title type='text'>ccmtesttest</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ccmtesttest.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6567533362852893161/posts/default'/><link rel='alternate' type='text/html' href='http://ccmtesttest.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Chris Muir</name><uri>http://www.blogger.com/profile/06566648350240654621</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6567533362852893161.post-513220983229816629</id><published>2008-01-27T02:09:00.001-08:00</published><updated>2008-01-27T02:09:49.406-08:00</updated><title type='text'>test reddit</title><content type='html'>&lt;!-- Start of social bookmarks. Check http://tips-for-new-bloggers.blogspot.com/ for updates --&gt;test reddit&lt;br /&gt;&lt;span class="post-author"  style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;Add Post To: |&lt;br /&gt;&lt;a href="http://www.blogger.com/%22http://technorati.com/faves?add=%22%20+%20data:post.url" target="_blank"&gt;Technorati&lt;/a&gt;|&lt;br /&gt;&lt;a href="http://www.blogger.com/%22http://reddit.com/r/sandbox/submit?url=%22%20+%20data:post.url%20+%20%22&amp;amp;title=%22%20+%20data:post.title" target="_blank"&gt;Reddit&lt;/a&gt;|&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;!-- End of social bookmarks --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6567533362852893161-513220983229816629?l=ccmtesttest.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ccmtesttest.blogspot.com/feeds/513220983229816629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6567533362852893161&amp;postID=513220983229816629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6567533362852893161/posts/default/513220983229816629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6567533362852893161/posts/default/513220983229816629'/><link rel='alternate' type='text/html' href='http://ccmtesttest.blogspot.com/2008/01/test-reddit.html' title='test reddit'/><author><name>Chris Muir</name><uri>http://www.blogger.com/profile/06566648350240654621</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17562970040951625427'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6567533362852893161.post-22596059349820512</id><published>2007-05-31T22:07:00.000-07:00</published><updated>2007-05-31T22:08:34.804-07:00</updated><title type='text'>yadda yadda yadda another test</title><content type='html'>&lt;p class="MsoNormal"&gt;An existing SQL database such as Oracle will have a full range of table constraints, including primary keys, unique keys, foreign keys, not nulls and check constraints.&lt;span style=""&gt;  &lt;/span&gt;JDeveloper's ADF Business Components (&lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;ADF&lt;/st1:city&gt; &lt;st1:state st="on"&gt;BC&lt;/st1:state&gt;&lt;/st1:place&gt;) provides a number of different mechanisms for validating data before it hits the database.&lt;span style=""&gt;  &lt;/span&gt;However does &lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;ADF&lt;/st1:city&gt; &lt;st1:state st="on"&gt;BC&lt;/st1:state&gt;&lt;/st1:place&gt; provide any mechanisms for overriding the database constraint error messages if they do occur, supplying an alternative "user friendly" error message?&lt;/p&gt;    &lt;p class="MsoNormal"&gt;The following post was raised on request for a client to explain the ADF BC facility provided.&lt;span style=""&gt;  &lt;/span&gt;The discussion assumes you are familiar with Oracle's default schema "HR" and its associated table employees, and the constraints implemented in the employees table:&lt;/p&gt;                                          &lt;p class="MsoNormal"&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;&lt;span style=""&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;CREATE TABLE employees&lt;br /&gt;(employee_id NUMBER(6,0)&lt;br /&gt;,first_name VARCHAR2(20)&lt;br /&gt;,last_name VARCHAR2(25) CONSTRAINT emp_last_name_nn NOT NULL&lt;br /&gt;,email VARCHAR2(25) CONSTRAINT emp_email_nn NOT NULL&lt;br /&gt;,phone_number VARCHAR2(20)&lt;br /&gt;,hire_date DATE CONSTRAINT emp_hire_date_nn NOT NULL&lt;br /&gt;,job_id VARCHAR2(10) CONSTRAINT emp_job_nn NOT NULL&lt;br /&gt;,salary NUMBER(8,2)&lt;br /&gt;,commission_pct NUMBER(2,2)&lt;br /&gt;,manager_id NUMBER(6,0)&lt;br /&gt;,department_id NUMBER(4,0)&lt;br /&gt;,CONSTRAINT emp_salary_min CHECK (salary &gt; 0)&lt;br /&gt;,CONSTRAINT emp_email_uk UNIQUE (email)&lt;br /&gt;,CONSTRAINT emp_emp_id_pk PRIMARY KEY (employee_id)&lt;br /&gt;,CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)&lt;br /&gt;REFERENCES departments (department_id)&lt;br /&gt;,CONSTRAINT emp_job_fk FOREIGN KEY (job_id)&lt;br /&gt;REFERENCES jobs (job_id)&lt;br /&gt;,CONSTRAINT emp_manager_fk FOREIGN KEY (manager_id)&lt;br /&gt;REFERENCES employees (employee_id));&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;u2:p&gt;&lt;/u2:p&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Overriding the database constraint error messages&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;The Oracle database isn't known for displaying particularly useful or friendly error messages when a table constraint is violated.&lt;span style=""&gt;  &lt;/span&gt;For example if we create a new HR.employees record with an unknown DepartmentId value, the database throws the following error:&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span class="x3w"&gt;ORA-02291: integrity constraint (HR.EMP_DEPT_FK) violated - parent key not found&lt;/span&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;This message is not particular useful to the average user as they wont know what EMP_DEPT_FK is, what an integrity constraint is, or why the parent key is not found.&lt;/p&gt;      &lt;p class="MsoNormal"&gt;Via &lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;ADF&lt;/st1:city&gt; &lt;st1:state st="on"&gt;BC&lt;/st1:state&gt;&lt;/st1:place&gt; can we provide a more useful message?&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Section "25.8.3 How to Customize Error Messages for Database Constraint Violations" of the "Application Development Framework Developer's Guide for Forms/4GL Developers" manual outlines that a standard ADF BC project can be extended with a custom message bundle to customise the database's constraint error messages when caught by the midtier.&lt;span style=""&gt;  &lt;/span&gt;Note to implement this, as noted in section 25.8.3, you must follow steps 1 to 5 of section 25.8.1.&lt;span style=""&gt;  &lt;/span&gt;Take care to follow the special Note in step 3 if you're using JDev 10.1.3+, though it appears unnecessary in JDev 11g.&lt;/p&gt;&lt;o:p&gt;&lt;/o:p&gt;Section 25.8.3 shows us how to create a custom message bundle class for our ADF BC project, which is comprised of key-value message pairs, where we can list our constraint names and the custom message we wish to show respectively. &lt;p class="MsoNormal"&gt;If we consider the HR.employees tables named constraints, of which there are 4 not null constraints, 1 &lt;st1:place st="on"&gt;&lt;st1:country-region st="on"&gt;uk&lt;/st1:country-region&gt;&lt;/st1:place&gt;, 1 pk, and 3 fk constraints, we could create the following custom message bundle class to cover off all the constraints:&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style="font-size: 85%;"&gt;public class MessageBundle1 extends ListResourceBundle {&lt;u2:p&gt;&lt;/u2:p&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style="font-size: 85%;"&gt;  private static final Object[][] sMessageStrings = &lt;u2:p&gt;&lt;/u2:p&gt;new String[][] {&lt;u2:p&gt;&lt;/u2:p&gt;&lt;br /&gt;  { "EMP_LAST_NAME_NN" ,"A not null error message0"    }&lt;u2:p&gt;&lt;/u2:p&gt;&lt;br /&gt; ,{ "EMP_EMAIL_NN"     ,"A not null error message1"    }&lt;u2:p&gt;&lt;/u2:p&gt;&lt;br /&gt; ,{ "EMP_HIRE_DATE_NN" ,"A not null error message2"    }&lt;u2:p&gt;&lt;/u2:p&gt;&lt;br /&gt; ,{ "EMP_JOB_NN"       ,"A not null error message3"    }&lt;u2:p&gt;&lt;/u2:p&gt;&lt;br /&gt; ,{ "EMP_SALARY_MIN"   ,"A check error message4"       }&lt;u2:p&gt;&lt;/u2:p&gt;&lt;br /&gt; ,{ "EMP_EMAIL_UK"     ,"A unique key error message5"  }&lt;u2:p&gt;&lt;/u2:p&gt;&lt;br /&gt; ,{ "EMP_EMP_ID_PK"    ,"A primary key error message6" }&lt;u2:p&gt;&lt;/u2:p&gt;&lt;br /&gt; ,{ "EMP_DEPT_FK"      ,"A foreign key error message7" }&lt;u2:p&gt;&lt;/u2:p&gt;&lt;br /&gt; ,{ "EMP_JOB_FK"       ,"A foreign key error message8" }&lt;u2:p&gt;&lt;/u2:p&gt;&lt;br /&gt; ,{ "EMP_MANAGER_FK"   ,"A foreign key error message9" }};&lt;u2:p&gt;&lt;/u2:p&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=""&gt;&lt;span style="font-family: courier new; font-size: 85%;"&gt;&lt;u2:p&gt;  &lt;/u2:p&gt;  protected Object[][] getContents() {&lt;u2:p&gt;&lt;/u2:p&gt;&lt;br /&gt;     return sMessageStrings;&lt;u2:p&gt;&lt;/u2:p&gt;&lt;br /&gt; }&lt;u2:p&gt;&lt;/u2:p&gt;&lt;br /&gt;}&lt;/span&gt;&lt;u2:p&gt;&lt;/u2:p&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;u2:p&gt;&lt;/u2:p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;Some caveats to be aware of:&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 11.35pt; text-indent: -11.35pt;"&gt;The constraint names in the message bundle class must be in uppercase to match the case-specific constraint name raised by the database.&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 11.35pt; text-indent: -11.35pt;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The HR schema has named the not null constraints within its tables explicitly.&lt;span style=""&gt;  &lt;/span&gt;In your schema if you choose not to name the not null constraints, Oracle will generate a constraint name of the format SYS_C00000n where n is a counter incremented for each auto named constraint created by the database.&lt;span style=""&gt;  &lt;/span&gt;It's fine to refer to these constraint names instead in your custom message bundle.&lt;span style=""&gt;  &lt;/span&gt;However be aware if you recreate your schema and Oracle chooses to name the constraints starting at a different n value, obviously the ADF BC custom message bundle approach above will not work.&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-left: 11.35pt; text-indent: -11.35pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;If you've setup your &lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;ADF&lt;/st1:city&gt; &lt;st1:state st="on"&gt;BC&lt;/st1:state&gt;&lt;/st1:place&gt; Entity Object (EO) to have the same primary key as the table, the EO includes a mechanism for validating primary key values within the ADF BC mid-tier before it gets to the database.&lt;span style=""&gt;  &lt;/span&gt;Because of this the alternative error message above may or may not be shown.&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-left: 11.35pt;"&gt;The EO pk routine checks any created/updated pk value against all pk values for the existing EO that have been &lt;b style=""&gt;cached in the midtier&lt;/b&gt; at &lt;b style=""&gt;submit time&lt;/b&gt;.&lt;span style=""&gt;  &lt;/span&gt;If it finds a matching value (or in other words that the values aren't unique) it throws the following JBO (JDeveloper) exception where X is the primary key value(s):&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 11.35pt;"&gt;&lt;span class="x3w"&gt;JBO-25013: Too many objects match the primary key oracle.jbo.Key[X ].&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 11.35pt;"&gt;In this case you will not see your message, but the JBO error above.&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 11.35pt;"&gt;EOs and their associated View Objects (VOs) are by default configured to lazy fetch records from the database into the midtier in ranges (record sets of say 10 records) based on user requests.&lt;span style=""&gt;  &lt;/span&gt;This lazy loading feature is designed to make it unnecessary to load all the records from a table into the midtier for speed and memory efficiencies while taking advantage of the fact the user probably doesn't want to view all 1000 employee records at once, but will be happy viewing a sub set at a time.&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 11.35pt;"&gt;As noted above, if the record has been fetched into the midtier's &lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;ADF&lt;/st1:city&gt;  &lt;st1:state st="on"&gt;BC&lt;/st1:state&gt;&lt;/st1:place&gt; memory structures, the JBO-25013 error will display (without our custom message) when a new record's pk violates the pk constraint at submit time.&lt;span style=""&gt;  &lt;/span&gt;However if the record with the matching pk value hasn't yet been fetched into the midtier, the check will be left to the database and is done at &lt;b style=""&gt;commit time&lt;/b&gt;.&lt;span style=""&gt;  &lt;/span&gt;In this case the database will raise the error message, and our custom message bundle message will also be shown.&lt;b style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-left: 11.35pt; text-indent: -11.35pt;"&gt;&lt;!--[if !supportLists]--&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 11.35pt; text-indent: -11.35pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;To my knowledge JDeveloper 10.1.3+ has no facility with the EOs to validate &lt;st1:place st="on"&gt;&lt;st1:country-region st="on"&gt;uk&lt;/st1:country-region&gt;&lt;/st1:place&gt; values similar to the pk check above.&lt;span style=""&gt;  &lt;/span&gt;The JDeveloper 11g Technical Preview release introduces a new &lt;st1:country-region st="on"&gt;&lt;st1:place st="on"&gt;uk&lt;/st1:place&gt;&lt;/st1:country-region&gt; mechanism as separate to the pk facility and should be considered.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 11.35pt; text-indent: -11.35pt;"&gt;&lt;span style="background: yellow none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Beating the database constraints at their own game in &lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;ADF&lt;/st1:city&gt; &lt;st1:state st="on"&gt;BC&lt;/st1:state&gt;&lt;/st1:place&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;In my opinion however, good user interface (UI) design dictates that it would be better to stop the database errors occurring in the first place to provide a relatively more satisfying experience for the user. How do you do this? Well you stop the user from ever entering data that violates the constraints in the first place.&lt;br /&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;The first set of suggestions here are obvious but need to be stated:&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-left: 11.35pt; text-indent: -11.35pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Using and generating surrogate read-only primary keys - if you're allowing the user to create or edit records, and the table has a surrogate primary key generated via a sequence in the database that guarantees uniqueness, make the field read-only (or hidden).&lt;span style=""&gt;  &lt;/span&gt;Then within the ADF BC EO for the associated table, populate the pk programmatically on creating a new record via the sequence.&lt;span style=""&gt;  &lt;/span&gt;In this fashion the user can never enter a non unique pk for the primary key value.&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-left: 11.35pt; text-indent: -11.35pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Use poplists and list of values (LOVs) for foreign keys - if the user in creating or editing a record needs to enter a foreign key value, don't allow them to manually type potentially invalid foreign key values.&lt;span style=""&gt;  &lt;/span&gt;Instead provide poplists and LOVs for the user to select a valid value from.&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-left: 11.35pt; text-indent: -11.35pt;"&gt;&lt;!--[if !supportLists]--&gt;Make mandatory database fields mandatory in &lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;ADF&lt;/st1:city&gt; &lt;st1:state st="on"&gt;BC&lt;/st1:state&gt;&lt;/st1:place&gt; objects and the UI components - the ADF BC EO and VO attributes have a property Mandatory that will enforce the user entering a value before it hits the database.&lt;span style=""&gt;  &lt;/span&gt;In turn the UI technologies usually provide facilities to check this too.&lt;span style=""&gt;  &lt;/span&gt;For instance the 10.1.3 ADF Faces &lt;af:inputtext&gt; component has a required boolean attribute, that shows a star next to the item at runtime indicating it is mandatory, and fires Javascript to check for a value and raises an error otherwise at runtime. (Admittedly this is done by default, but some users may miss this point)&lt;br /&gt;&lt;/af:inputtext&gt;&lt;/p&gt;    Beyond the obvious ideas, JDeveloper also provides a number of validators at the EO level that enforce data integrity checks and supply custom error messages if a problem is found before they hit the database.&lt;span style=""&gt;  &lt;/span&gt;For the brevity of this post they will not be considered here.&lt;span style=""&gt;  &lt;/span&gt;I note that &lt;a href="http://kettenisblogs.blogspot.com/"&gt;Jan Kettenis&lt;/a&gt; under the recent post &lt;a href="http://kettenisblogs.blogspot.com/2007/05/uml-rules.html"&gt;UML Rules&lt;/a&gt; is currently writing a whitepaper on implementing business rules in ADF BC which hopefully will cover the majority of the validators and a useful source of information beyond Section "6.7 Using Declarative Validation Rules" in Oracle's developer's guide.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6567533362852893161-22596059349820512?l=ccmtesttest.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ccmtesttest.blogspot.com/feeds/22596059349820512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6567533362852893161&amp;postID=22596059349820512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6567533362852893161/posts/default/22596059349820512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6567533362852893161/posts/default/22596059349820512'/><link rel='alternate' type='text/html' href='http://ccmtesttest.blogspot.com/2007/05/yadda-yadda-yadda-another-test.html' title='yadda yadda yadda another test'/><author><name>Chris Muir</name><uri>http://www.blogger.com/profile/06566648350240654621</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17562970040951625427'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6567533362852893161.post-632102771016283437</id><published>2007-05-31T22:01:00.001-07:00</published><updated>2007-05-31T22:04:11.226-07:00</updated><title type='text'>Very big title about nothing in particular that goes with cheesse</title><content type='html'>test blah test blah bigwordjoinedtogether test blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogether.&lt;br /&gt;&lt;br /&gt;test blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogether.&lt;br /&gt;&lt;br /&gt;test blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogethertest blah test blah bigwordjoinedtogether.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6567533362852893161-632102771016283437?l=ccmtesttest.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ccmtesttest.blogspot.com/feeds/632102771016283437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6567533362852893161&amp;postID=632102771016283437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6567533362852893161/posts/default/632102771016283437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6567533362852893161/posts/default/632102771016283437'/><link rel='alternate' type='text/html' href='http://ccmtesttest.blogspot.com/2007/05/very-big-title-about-nothing-in.html' title='Very big title about nothing in particular that goes with cheesse'/><author><name>Chris Muir</name><uri>http://www.blogger.com/profile/06566648350240654621</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17562970040951625427'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>