<?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:blogger='http://schemas.google.com/blogger/2008' 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-23299681</id><updated>2024-09-24T09:32:31.913-07:00</updated><title type='text'>YoungSoulBlog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://theyoungsoul.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23299681/posts/default?alt=atom'/><link rel='alternate' type='text/html' href='http://theyoungsoul.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Patrick Ryan</name><uri>http://www.blogger.com/profile/00370055637063982666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVkYhXOXoxHnO02pyjG4LmvZS8irINz-Ll5m95wWDkAscUZz4bun_Y7arD3EKxoS9qX7LmwGRLQpFxHlHXHsf-B4MxAS-Zm2TuXd20SvDdqOVNJjPuNnQvJRkRXmpa9wM/s220/pryan.png'/></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-23299681.post-114194171160454602</id><published>2006-03-09T13:56:00.000-08:00</published><updated>2006-03-21T07:48:55.900-08:00</updated><title type='text'>Spring PropertyPlaceholderConfigurer with encrypted property values</title><content type='html'>The problem that drove this thinking was that I needed to keep the dynamic properties of the Spring configuration file separate from the XML configuration files and I also needed to encrypt passwords in the property files.  To do this I would then need to decrypt prior to having Spring do the runtime replacement.&lt;br /&gt;&lt;br /&gt;Spring does allow for the method &#39;&#39;convertPropertyValue&#39;&#39; to be overridden but it only passes the value from the property file and you actually do not have any idea which property name it is associated with.  So this makes it diffcult to know whether you need to perform any additional processing on it.&lt;br /&gt;&lt;br /&gt;If you extend the PropertyPlaceholderConfigurer and override a couple of methods, you can get it to perform to solve the stated problem.  The one drawback is that you must override and re-implement the &#39;&#39;convertProperties&#39;&#39; method which will detect an encrypted property and perform the decryption.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Caveat: this is really a description of how to extend Spring to allow for encrypted property values and not a discussion of encryption techniques&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Assume that the requirements are to allow for encrypted values to be added as property values.  For simplicity it is assumed that the same encryption algorithm is used to create the encrypted values as it is to decrypt or at least it is understood what the algorithm will be.&lt;br /&gt;&lt;br /&gt;Below is an example of an extended PropertyPlaceholderConfigurer.  It is just an example, it will not compile as there will certainly be decisions on the details of the encryption.  Notice that the important overloaded method is &lt;span style=&quot;font-style: italic;&quot;&gt;convertProperties&lt;/span&gt; which looks for property names that begin with &lt;span style=&quot;font-style: italic;&quot;&gt;encrypted.&lt;/span&gt; to know which values to decrypt.&lt;br /&gt;&lt;br /&gt;An example of an encrypted value would be:&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;encrypted.jdbc.password=*(&amp;LHJFL#*(FELF(*%&amp;amp;^F=&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;code&gt;&lt;font color=#7f0055&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=#7f0055&gt;&lt;b&gt;class&lt;/b&gt;&lt;/font&gt;&amp;nbsp;PropertyPlaceholderConfigurer&amp;nbsp;&lt;font color=#7f0055&gt;&lt;b&gt;extends&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&amp;nbsp;{&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;&lt;font color=#7f0055&gt;&lt;b&gt;static&lt;/b&gt;&lt;/font&gt;&amp;nbsp;final&amp;nbsp;String&amp;nbsp;ENCRYPTED&amp;nbsp;=&amp;nbsp;&quot;encrypted.&quot;;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;MyFavoriteEncryptor&amp;nbsp;encryptor&amp;nbsp;=&amp;nbsp;new&amp;nbsp;MyFavoriteEncryptor();&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;protected&amp;nbsp;&lt;font color=brown&gt;&lt;b&gt;void&lt;/b&gt;&lt;/font&gt;&amp;nbsp;convertProperties(Properties&amp;nbsp;props)&amp;nbsp;{&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Enumeration&amp;nbsp;propertyNames&amp;nbsp;=&amp;nbsp;props.propertyNames();&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;(propertyNames.hasMoreElements())&amp;nbsp;{&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;propertyName&amp;nbsp;=&amp;nbsp;(String)&amp;nbsp;propertyNames.nextElement();&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;propertyValue&amp;nbsp;=&amp;nbsp;props.getProperty(propertyName);&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;convertedValue&amp;nbsp;=&amp;nbsp;&quot;&quot;;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(&amp;nbsp;propertyName.startsWith(ENCRYPTED)&amp;nbsp;)&amp;nbsp;{&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=green&gt;//&amp;nbsp;just&amp;nbsp;store&amp;nbsp;the&amp;nbsp;property&amp;nbsp;name&amp;nbsp;without&amp;nbsp;the&amp;nbsp;encrypted&amp;nbsp;prepended&amp;nbsp;value&amp;nbsp;&lt;/font&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=green&gt;//&amp;nbsp;so&amp;nbsp;encrypted.jdbc.password&amp;nbsp;becomes&amp;nbsp;jdbc.password&amp;nbsp;&lt;/font&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;propertyName&amp;nbsp;=&amp;nbsp;propertyName.substring(ENCRYPTED.length());&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;convertedValue&amp;nbsp;=&amp;nbsp;decryptPropertyValue(propertyValue);&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;convertedValue&amp;nbsp;=&amp;nbsp;convertPropertyValue(propertyValue);&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!ObjectUtils.nullSafeEquals(propertyValue,&amp;nbsp;convertedValue))&amp;nbsp;{&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;props.setProperty(propertyName,&amp;nbsp;convertedValue);&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;base64EncryptedValue&amp;nbsp;base64&amp;nbsp;encoded&amp;nbsp;value&amp;nbsp;of&amp;nbsp;the&amp;nbsp;encrypted&amp;nbsp;value&amp;nbsp;from&amp;nbsp;MyFavoriteEncryptor&amp;nbsp;&lt;font color=#7f0055&gt;&lt;b&gt;class&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@return&amp;nbsp;cleartext&amp;nbsp;value.&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;protected&amp;nbsp;String&amp;nbsp;decryptPropertyValue(String&amp;nbsp;base64EncryptedValue)&amp;nbsp;{&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;decryptedValue&amp;nbsp;=&amp;nbsp;null;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&amp;nbsp;{&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[]&amp;nbsp;decodedString&amp;nbsp;=&amp;nbsp;Base64.decode(base64EncryptedValue);&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;decryptedValue&amp;nbsp;=&amp;nbsp;encryptor.decryptString(decodedString);&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;catch(&amp;nbsp;Exception&amp;nbsp;e&amp;nbsp;)&amp;nbsp;{&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw&amp;nbsp;new&amp;nbsp;RuntimeException(e);&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#7f0055&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&amp;nbsp;decryptedValue;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#7f0055&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt;&amp;nbsp;PropertyPlaceholderConfigurer()&amp;nbsp;{&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super();&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;}&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://theyoungsoul.blogspot.com/feeds/114194171160454602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/23299681/114194171160454602' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23299681/posts/default/114194171160454602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23299681/posts/default/114194171160454602'/><link rel='alternate' type='text/html' href='http://theyoungsoul.blogspot.com/2006/03/spring-propertyplaceholderconfigurer.html' title='Spring PropertyPlaceholderConfigurer with encrypted property values'/><author><name>Patrick Ryan</name><uri>http://www.blogger.com/profile/00370055637063982666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVkYhXOXoxHnO02pyjG4LmvZS8irINz-Ll5m95wWDkAscUZz4bun_Y7arD3EKxoS9qX7LmwGRLQpFxHlHXHsf-B4MxAS-Zm2TuXd20SvDdqOVNJjPuNnQvJRkRXmpa9wM/s220/pryan.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23299681.post-114166805469253918</id><published>2006-03-06T09:55:00.000-08:00</published><updated>2006-03-06T10:00:54.716-08:00</updated><title type='text'>Spring/Hibernate/IdTransferringEventListener</title><content type='html'>If anyone has updated their hibernate jar to the latest 3.1.2 version and updated their code to use the &lt;span style=&quot;font-style: italic;&quot;&gt;merge&lt;/span&gt; method to save objects then you probably noticed that the ID for newly created objects is not populated in the saved object like it used to be.&lt;br /&gt;&lt;br /&gt;Spring has a class called, &lt;span style=&quot;font-style: italic;&quot;&gt;IdTransferringMergeEventListener&lt;/span&gt; which merges the ID of the newly created object with the object that your application holds.  Open up this class and read the comment about how the current implementation only works for 3.0 versions of Hibernate.&lt;br /&gt;&lt;br /&gt;So if you use the Spring 1.2.6 or better, and hibernate 3.1.2 you will need to create an implementation of this event listener that implements the commented out version in the above class.</content><link rel='replies' type='application/atom+xml' href='http://theyoungsoul.blogspot.com/feeds/114166805469253918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/23299681/114166805469253918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23299681/posts/default/114166805469253918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23299681/posts/default/114166805469253918'/><link rel='alternate' type='text/html' href='http://theyoungsoul.blogspot.com/2006/03/springhibernateidtransferringeventlist.html' title='Spring/Hibernate/IdTransferringEventListener'/><author><name>Patrick Ryan</name><uri>http://www.blogger.com/profile/00370055637063982666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVkYhXOXoxHnO02pyjG4LmvZS8irINz-Ll5m95wWDkAscUZz4bun_Y7arD3EKxoS9qX7LmwGRLQpFxHlHXHsf-B4MxAS-Zm2TuXd20SvDdqOVNJjPuNnQvJRkRXmpa9wM/s220/pryan.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23299681.post-114132014870565562</id><published>2006-03-02T09:21:00.000-08:00</published><updated>2006-03-02T09:26:53.600-08:00</updated><title type='text'>Welcome</title><content type='html'>Welcome to my blog space Claire.  More to come later...</content><link rel='replies' type='application/atom+xml' href='http://theyoungsoul.blogspot.com/feeds/114132014870565562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/23299681/114132014870565562' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23299681/posts/default/114132014870565562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23299681/posts/default/114132014870565562'/><link rel='alternate' type='text/html' href='http://theyoungsoul.blogspot.com/2006/03/welcome.html' title='Welcome'/><author><name>Patrick Ryan</name><uri>http://www.blogger.com/profile/00370055637063982666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVkYhXOXoxHnO02pyjG4LmvZS8irINz-Ll5m95wWDkAscUZz4bun_Y7arD3EKxoS9qX7LmwGRLQpFxHlHXHsf-B4MxAS-Zm2TuXd20SvDdqOVNJjPuNnQvJRkRXmpa9wM/s220/pryan.png'/></author><thr:total>1</thr:total></entry></feed>