<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:www.nabble.com,2006:forum-14897</id>
	<title>Nabble - Jackrabbit - Users</title>
	<updated>2008-07-24T04:26:52Z</updated>
	<link rel="self" type="application/atom+xml" href="http://www.nabble.com/Jackrabbit---Users-f14897.xml" />
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Jackrabbit---Users-f14897.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:www.nabble.com,2006:post-18629996</id>
	<title>RE: JackRabbit Caching: BundleCache vs ItemManager vs CacheManager</title>
	<published>2008-07-24T04:26:52Z</published>
	<updated>2008-07-24T04:26:52Z</updated>
	<author>
		<name>sbarriba</name>
	</author>
	<content type="html">Hi Stefan et al,
&lt;br&gt;&lt;br&gt;&amp;quot;DefaultISMLocking is used by SISM, i.e. at the bottom layer. SISM maintains
&lt;br&gt;a workspace-global cache of ItemState instances read from the persistence
&lt;br&gt;layer. this cache is not affected by session lifetime since it's shared
&lt;br&gt;among all sessions.&amp;quot;
&lt;br&gt;&lt;br&gt;OK that makes sense. 
&lt;br&gt;To summarise what we're seeing, potential bottlenecks we think we're seeing
&lt;br&gt;and how we worked around them. Please note I'm not 100% familiar with the
&lt;br&gt;JackRabbit design so some conclusions may be wrong:
&lt;br&gt;&lt;br&gt;&amp;nbsp;1) application uses Session to read a Node Property
&lt;br&gt;&amp;nbsp;2) SessionImpl delegates to ItemManager
&lt;br&gt;&amp;nbsp;3) ItemManager synch on a itemCache (Contention Point 1: Session Wide)
&lt;br&gt;&amp;nbsp;4) On cache miss, ItemManager ultimately delegates to an SISM
&lt;br&gt;&amp;nbsp;5) SISM synchs on ISMLocking (Contention Point 2: Global or per item
&lt;br&gt;depending on DefaultISM or FineGrainedISM implementation)
&lt;br&gt;&amp;nbsp;6) On cache miss, SISM delegates to persistence manager 
&lt;br&gt;&amp;nbsp;7) AbstractBundlePersistenceManager synchs on itself (Contention Point 3:
&lt;br&gt;On persistence Manager)
&lt;br&gt;&lt;br&gt;In some cases our web application will read 2,000 or 3,000 Node properties
&lt;br&gt;to deliver a single page request. 
&lt;br&gt;&lt;br&gt;Initially we saw 7) as a bottleneck:
&lt;br&gt;&amp;nbsp;- can JackRabbit leverage multiple database connections if its synched on a
&lt;br&gt;single persistence manager?
&lt;br&gt;&amp;nbsp;- we resolved this by configuring a large BundleCache
&lt;br&gt;&lt;br&gt;We then saw 5) as a bottleneck:
&lt;br&gt;&amp;nbsp;- it seems as each node property is an item every property read contends on
&lt;br&gt;ISMLocking. Is that correct? Is there scope for reading properties/lazy
&lt;br&gt;loading in bulk for item?
&lt;br&gt;&amp;nbsp;- we partly resolved this by moving from an &amp;quot;pooled session per view&amp;quot;
&lt;br&gt;pattern to a &amp;quot;shared session per view&amp;quot; pattern
&lt;br&gt;&lt;br&gt;We now see contention occasionally on 3).
&lt;br&gt;&lt;br&gt;It feels like there is scope for improving the concurrency in a few places -
&lt;br&gt;plus consolidate the caching configuration which is currently different for
&lt;br&gt;BundleCache vs SISM etc.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Shaun
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;br&gt;From: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18629996&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;stefan.guggisberg@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18629996&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;stefan.guggisberg@...&lt;/a&gt;] On
&lt;br&gt;Behalf Of Stefan Guggisberg
&lt;br&gt;Sent: 21 July 2008 11:04
&lt;br&gt;To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18629996&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;
&lt;br&gt;Subject: Re: JackRabbit Caching: BundleCache vs ItemManager vs CacheManager
&lt;br&gt;&lt;br&gt;hi shaun
&lt;br&gt;&lt;br&gt;On Sun, Jul 20, 2008 at 2:13 PM, sbarriba &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18629996&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sbarriba@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; Hi Stefan,
&lt;br&gt;&amp;gt; So the intention is that once the session is no longer used then the
&lt;br&gt;&amp;gt; ItemImpl instances are cleared up?
&lt;br&gt;&lt;br&gt;yes, unless ItemImpl instances are still being externally refertenced
&lt;br&gt;by client code.
&lt;br&gt;&lt;br&gt;&amp;gt; That makes sense except that when
&lt;br&gt;&amp;gt; investigating the lock contention issues we found that the creation of
&lt;br&gt;&amp;gt; ItemImpl can become expensive as they queue up on DefaultISMLocking.
&lt;br&gt;&lt;br&gt;i don't think so. i guess there's a misunderstanding and you're confusing
&lt;br&gt;ItemImpl and ItemState instances.
&lt;br&gt;&lt;br&gt;let me try to clear things up.
&lt;br&gt;&lt;br&gt;ItemImpl (i.e. NodeImpl and PropertyImpl) instances implement the JCR
&lt;br&gt;interfaces javax.jcr.Node and javax.jcr.Property. they're dealt with at
&lt;br&gt;the top-most layer in jackrabbit and they're managed by
&lt;br&gt;o.a.j.core.ItemManager. there's one ItemManager per session.
&lt;br&gt;ItemImpl instance creation per se should never be expensive since they
&lt;br&gt;only encapsulate/wrap an Itemstate instance.
&lt;br&gt;&lt;br&gt;ItemState instances OTOH represent the core 'data' of a node/property.
&lt;br&gt;they're managed on 3 separate layers:
&lt;br&gt;&amp;nbsp;- transient (session local, SessionItemStateManager SISM)
&lt;br&gt;&amp;nbsp;- local (tx local, LocalItemStateManager LISM)
&lt;br&gt;&amp;nbsp;- shared (global, SharedItemStateManager SISM)
&lt;br&gt;&lt;br&gt;DefaultISMLocking is used by SISM, i.e. at the bottom layer.
&lt;br&gt;SISM maintains a workspace-global cache of ItemState instances
&lt;br&gt;read from the persistence layer. this cache is not affected
&lt;br&gt;by session lifetime since it's shared among all sessions.
&lt;br&gt;&lt;br&gt;cheers
&lt;br&gt;stefan
&lt;br&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; When relying on sessions to cache some item data (with a shared session
&lt;br&gt;per
&lt;br&gt;&amp;gt; request model) via the ItemManager we found that this significantly
&lt;br&gt;reduced
&lt;br&gt;&amp;gt; contention as clients using sessions with some ItemImpls didn't hit
&lt;br&gt;&amp;gt; DefaultISMLocking. By choosing a suitable X request per 1 session ratio we
&lt;br&gt;&amp;gt; could spread the locking to increase throughput.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; With a pooled session per view model (where each request exclusively has
&lt;br&gt;&amp;gt; access to one session) we found no benefit from the ItemManger cache due
&lt;br&gt;to
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; the Weak Referenced data being cleared up after each request.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Are the LocalItemStateManager and SharedItemStateManager intended to help
&lt;br&gt;&amp;gt; reduce the load on DefaultISMLocking?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Regards,
&lt;br&gt;&amp;gt; Shaun
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18629996&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;stefan.guggisberg@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18629996&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;stefan.guggisberg@...&lt;/a&gt;] On
&lt;br&gt;&amp;gt; Behalf Of Stefan Guggisberg
&lt;br&gt;&amp;gt; Sent: 16 July 2008 13:25
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18629996&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Subject: Re: JackRabbit Caching: BundleCache vs ItemManager vs
&lt;/div&gt;CacheManager
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; hi sean
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Tue, Jul 1, 2008 at 7:11 PM, sbarriba &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18629996&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sbarriba@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; Hi Marcel et al,
&lt;br&gt;&amp;gt;&amp;gt; 3 suggestions come to mind from this (perhaps for the develop list):
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 1) the ItemManager should be using Soft References rather than Weak
&lt;br&gt;&amp;gt;&amp;gt; References otherwise a PooledSessionInView pattern is not really
&lt;br&gt;effective
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; as, pooled (but unused) sessions have their caches cleared immediately by
&lt;br&gt;&amp;gt;&amp;gt; the GC (using weak references).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ItemManager cashes ItemImpl instances. the 'cache' guarantees that there's
&lt;br&gt;&amp;gt; no more than 1 ItemImpl instance per item id and session. weak references
&lt;br&gt;&amp;gt; are ideal for this task. ItemManager is not meant to be a 'cache'
&lt;br&gt;&amp;gt; since ItemImpl
&lt;br&gt;&amp;gt; instance creation is IMO not performance critical. i remember that i once
&lt;br&gt;&amp;gt; experimented with soft references but they tended to fill the heap pretty
&lt;br&gt;&amp;gt; fast
&lt;br&gt;&amp;gt; since soft references are typically cleared only when you're near an
&lt;br&gt;&amp;gt; OOM error...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ItemState caches are a different matter. LocalItemStateManager and
&lt;br&gt;&amp;gt; SharedItemStateManager do cache ItemState instances for performance
&lt;br&gt;&amp;gt; reasons. please take a look at the javadoc which should explain
&lt;br&gt;&amp;gt; why they're using weak references internally instead of soft references:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;a href=&quot;http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/core/state/ItemSt&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://jackrabbit.apache.org/api/1.4/org/apache/jackrabbit/core/state/ItemSt&lt;/a&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; ateReferenceCache.html
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; cheers
&lt;br&gt;&amp;gt; stefan
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 2) the CacheManager config needs to be externalised so it can be changed
&lt;br&gt;&amp;gt;&amp;gt; within the XML config, not programmatically.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 3) its worth considering using a caching library (e.g. ehcahe) for the
&lt;br&gt;&amp;gt;&amp;gt; BundleCache at least? As a case study we've got multi-GB of binaries in
&lt;br&gt;&amp;gt;&amp;gt; BLOBs in the database and the BundleCache (at 100MB+) &amp;nbsp;spends 2 hours
&lt;br&gt;&amp;gt; after
&lt;br&gt;&amp;gt;&amp;gt; each restart filling /tmp. It would be great to use a caching library
&lt;br&gt;&amp;gt; which
&lt;br&gt;&amp;gt;&amp;gt; supported a persistent cache etc. Obviously externalBlobs helps here.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Regards,
&lt;br&gt;&amp;gt;&amp;gt; Shaun
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt;&amp;gt; From: Marcel Reutegger [mailto:&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18629996&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;marcel.reutegger@...&lt;/a&gt;]
&lt;br&gt;&amp;gt;&amp;gt; Sent: 01 July 2008 09:47
&lt;br&gt;&amp;gt;&amp;gt; To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18629996&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; Subject: Re: JackRabbit Caching: BundleCache vs ItemManager vs
&lt;br&gt;&amp;gt; CacheManager
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; sbarriba wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; .. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PersistenceManager Cache:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; o &amp;nbsp; The &amp;quot;bundleCacheSize&amp;quot; determines how many nodes the
&lt;br&gt;&amp;gt; PersistenceManager
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; will cache. As this determines the lifetime of the references to the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; temporary BLOB cache if its not large enough BLOBs will be continually
&lt;br&gt;&amp;gt;&amp;gt; read
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; from the database (if using externalBlobs=false).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; o &amp;nbsp; Configurable in &amp;lt;PersistenceManager&amp;gt; XML block
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; o &amp;nbsp; Default size 8MB
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; o &amp;nbsp; This cache is shared by all sessions.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; o &amp;nbsp; Synchronised access using the ISMLocking stategy e.g. Default or
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; FineGrained
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; correct, but there's additional synchronization in the persistence
&lt;/div&gt;manager
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; using
&lt;br&gt;&amp;gt;&amp;gt; conventional synchronized methods. e.g. see
&lt;br&gt;&amp;gt;&amp;gt; AbstractBundlePersistenceManager.load(NodeId)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; .. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Session ItemManager Cache:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; o &amp;nbsp; Items are cached from the underlying persistence manager on a per
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; session basis.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; o &amp;nbsp; Limit cannot be set.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; not sure, but I think this cache is also managed (at least partially) by
&lt;br&gt;&amp;gt; the
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; CacheManager.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; o &amp;nbsp; Uses a ReferenceMap which can be emptied by the JVM GC as required
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; that's the 'other part' that manages the cache ;)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; items that are still referenced in the application will force the
&lt;br&gt;&amp;gt; reference
&lt;br&gt;&amp;gt;&amp;gt; map
&lt;br&gt;&amp;gt;&amp;gt; to keep the respective ItemState instances (using weak references).
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; o &amp;nbsp; Synchronised access using the itemCache object
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; .. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CacheManager Cache:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; o &amp;nbsp; Limit can only be set programmatically via the Workspace
&lt;/div&gt;cacheManager
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; o &amp;nbsp; &lt;a href=&quot;http://wiki.apache.org/jackrabbit/CacheManager&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://wiki.apache.org/jackrabbit/CacheManager&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; o &amp;nbsp; Defaults to 16MB
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; o &amp;nbsp; Its not clear as yet how the CacheManager relates, if at all, to the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; ItemManager cache
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; this only happens indirectly. see above.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 2 questions:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; .. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;What is the purpose of the CacheManager and which caches does
&lt;br&gt;&amp;gt; it
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; actually control?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; It controls *all* the caches that contain ItemState instances.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; .. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;For example, for a workspace with 100,000 nodes what is an
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; appropriate setting for the Cache Manager?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I guess that depends on your JVM heap settings and the usage pattern. if
&lt;br&gt;&amp;gt; you
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; have a lot of random reads over nearly all 100k nodes and performance is
&lt;br&gt;&amp;gt;&amp;gt; critical you may consider caching all of them. have a look a
&lt;br&gt;&amp;gt;&amp;gt; ItemState.calculateMemoryFootprint() for a formula on how the memory
&lt;br&gt;&amp;gt;&amp;gt; consumption
&lt;br&gt;&amp;gt;&amp;gt; is calculated.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; regards
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;marcel
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/JackRabbit-Caching%3A-BundleCache-vs-ItemManager-vs-CacheManager-tp18190879p18629996.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18628222</id>
	<title>Re: what does NodeTypeRegistry.reregisterNodeType() do?</title>
	<published>2008-07-24T02:21:30Z</published>
	<updated>2008-07-24T02:21:30Z</updated>
	<author>
		<name>Stefan Guggisberg-2</name>
	</author>
	<content type="html">hi betty
&lt;br&gt;&lt;br&gt;On Thu, Jul 24, 2008 at 1:22 AM, Betty Chang &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18628222&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bchang@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi -
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I've been able to add custom node types within the jackrabbit server app.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; However, is it possible to add new properties to a node type that is already registered?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I first call isRegistered() to see if a nodeTypeName is registered, and if it is, I call
&lt;br&gt;&amp;gt; reregisterNodeType() in the hopes that it would re-register the node type with the new properties I have
&lt;br&gt;&amp;gt; added.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; However, new properties do not seem to get registered.
&lt;/div&gt;&lt;br&gt;you can only register 'trivial' node type changes, i.e. changes that
&lt;br&gt;do not affect existing content.
&lt;br&gt;&lt;br&gt;a trivial change would e.g. be adding a non-mandatory property.
&lt;br&gt;&lt;br&gt;a non-trivial (and thus non-supported change) would e.g. be adding a
&lt;br&gt;mandatory property
&lt;br&gt;or adding a value constraint to an existing property definition.
&lt;br&gt;&lt;br&gt;what exactly are you trying to change?
&lt;br&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; What does reregisterNodeType() actually do?
&lt;br&gt;&lt;br&gt;reregisterNodeType() allows to modify the definition of
&lt;br&gt;an existing, already registered node type. only trivial
&lt;br&gt;changes are currently supported.
&lt;br&gt;&lt;br&gt;for more details see:
&lt;br&gt;&lt;a href=&quot;http://jackrabbit.apache.org/api-1/org/apache/jackrabbit/core/nodetype/NodeTypeDefDiff.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://jackrabbit.apache.org/api-1/org/apache/jackrabbit/core/nodetype/NodeTypeDefDiff.html&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://issues.apache.org/jira/browse/JCR-322&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://issues.apache.org/jira/browse/JCR-322&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;cheers
&lt;br&gt;stefan
&lt;br&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Betty
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/what-does-NodeTypeRegistry.reregisterNodeType%28%29-do--tp18622684p18628222.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18628161</id>
	<title>Re: Need  hint  to run jsp from repository on tomcat</title>
	<published>2008-07-24T02:15:35Z</published>
	<updated>2008-07-24T02:15:35Z</updated>
	<author>
		<name>Torgeir Veimo</name>
	</author>
	<content type="html">&lt;br&gt;On 24 Jul 2008, at 19:09, Aleksei Lukin wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; Could please anyone point me to docs or code or tell some hints how &amp;nbsp;
&lt;br&gt;&amp;gt; to do that?
&lt;br&gt;&lt;br&gt;&lt;br&gt;This is quite hard. I'd recommend using a framework that allows this, &amp;nbsp;
&lt;br&gt;eg sling. These frameworks work by calling the jsp compiler directly, &amp;nbsp;
&lt;br&gt;not by using the servlet containers built in mechanisms.
&lt;br&gt;&lt;br&gt;Alternatively, if you can use something like freemarker or velocity &amp;nbsp;
&lt;br&gt;instead of JSPs this would be quite easy to do.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Torgeir Veimo
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18628161&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;torgeir@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Need--hint--to-run-jsp-from-repository-on-tomcat-tp18628066p18628161.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18628066</id>
	<title>Need  hint  to run jsp from repository on tomcat</title>
	<published>2008-07-24T02:09:49Z</published>
	<updated>2008-07-24T02:09:49Z</updated>
	<author>
		<name>Bugzilla from lukin@stu.cn.ua</name>
	</author>
	<content type="html">Hi, All!
&lt;br&gt;&lt;br&gt;I need to save jsp pages in JackRabbit repository and then feed it to tomcat 6 to process.
&lt;br&gt;I use model 2 deploymet, my tomcat loads repository available for all applications deployed.
&lt;br&gt;&amp;nbsp;
&lt;br&gt;Could please anyone point me to docs or code or tell some hints how to do that?
&lt;br&gt;&lt;br&gt;Tnks.
&lt;br&gt;-- 
&lt;br&gt;SY, Alex Lukin
&lt;br&gt;RIPE NIC HDL: LEXA1-RIPE
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Need--hint--to-run-jsp-from-repository-on-tomcat-tp18628066p18628066.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18627555</id>
	<title>Re: JackRabbit Caching: BundleCache vs ItemManager vs CacheManager</title>
	<published>2008-07-24T01:32:56Z</published>
	<updated>2008-07-24T01:32:56Z</updated>
	<author>
		<name>Stefan Guggisberg-2</name>
	</author>
	<content type="html">On Wed, Jul 23, 2008 at 11:21 PM, Thomas Müller &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18627555&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;thomas.mueller@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; So the intention is that once the session is no longer used then the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; ItemImpl instances are cleared up?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Unfortunately sessions are kept in a list currently, so you need to
&lt;br&gt;&amp;gt; close them manually. See also
&lt;br&gt;&lt;br&gt;what list are you refering to?
&lt;br&gt;&lt;br&gt;the only place i know where active sessions are kept is in
&lt;br&gt;RepositoryImpl:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; /**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;* active sessions (weak references)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp; private final ReferenceMap activeSessions =
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new ReferenceMap(ReferenceMap.WEAK, ReferenceMap.WEAK);
&lt;br&gt;&lt;br&gt;cheers
&lt;br&gt;stefan
&lt;br&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;https://issues.apache.org/jira/browse/JCR-1216&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/jira/browse/JCR-1216&lt;/a&gt;&amp;nbsp;&amp;quot;Unreferenced sessions
&lt;br&gt;&amp;gt; should get garbage collected&amp;quot;.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Regards,
&lt;br&gt;&amp;gt; Thomas
&lt;br&gt;&amp;gt;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/JackRabbit-Caching%3A-BundleCache-vs-ItemManager-vs-CacheManager-tp18190879p18627555.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18624396</id>
	<title>RE: search speed</title>
	<published>2008-07-23T19:31:05Z</published>
	<updated>2008-07-23T19:31:05Z</updated>
	<author>
		<name>gongtao</name>
	</author>
	<content type="html">Hi Ard Schrijvers-3,
&lt;br&gt;&lt;br&gt;I tried your way ,query speed &amp;nbsp;the four seconds faster than before.
&lt;br&gt;However, full-text search, retrieve version information
&lt;br&gt;the full-text search &amp;nbsp;Statements:
&lt;br&gt;&amp;nbsp;//*[@jcr:uuid='a2e5266f-9f2f-4683-993f-b73f34ba94a7' or @jcr:uuid='5fbc094f-e6c6-48b3-908349fe18a27c4a']//element(*,nt:base)[jcr:contains(.,'superman OR *superman*') and &amp;nbsp;@stateCode=1 and @directory=false()] order by @lastModified ascending
&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Ard Schrijvers-3 wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;Hello gongtao,
&lt;br&gt;&lt;br&gt;I do not get this sentence 'Why the increase as the result set, for
&lt;br&gt;speed will slow ? ' though you might want to take a look at [1]
&lt;br&gt;&lt;br&gt;A little strange perhapes, but if you replace 
&lt;br&gt;&lt;br&gt;'//nko:workspace/*' with //* (you are testing for a uuid anyway) you
&lt;br&gt;might gain a lot of speed. Hierarchy information in a query is costly,
&lt;br&gt;certainly for the first hit. So also, your performance numbers do nto
&lt;br&gt;tell me very much, because there is a huge difference between first run
&lt;br&gt;queries and consecutive queries where caches, and then mainly the
&lt;br&gt;hierchical caches, are warmed up.
&lt;br&gt;&lt;br&gt;Anyway, if you read [1] you should be able to understand a lot more
&lt;br&gt;about the queries you are doing,
&lt;br&gt;&lt;br&gt;-Ard
&lt;br&gt;&lt;br&gt;[1]
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/Explanation-and-solutions-of-some-Jackrabbit-queri&quot; target=&quot;_top&quot;&gt;http://www.nabble.com/Explanation-and-solutions-of-some-Jackrabbit-queri&lt;/a&gt;&lt;br&gt;es-regarding-performance-td15028655.html
&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; there are 300,000 records in the repository. 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Why the increase as the result set, for speed will slow ? I 
&lt;br&gt;&amp;gt; set up to offset
&lt;br&gt;&amp;gt; 15 &amp;nbsp; limit 100
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Statements:
&lt;br&gt;&amp;gt; //nko:workspace/*[@jcr:uuid='a2e5266f-9f2f-4683-993f-b73f34ba9
&lt;br&gt;4a7' or @jcr:uuid='5fbc094f-&amp;gt;
&lt;br&gt;e6c6-48b3-9083-49fe18a27c4a']//element(*,nt:unstructured)[@tem
&lt;br&gt;&amp;gt; plateName='4137345d-3acd-4fc6-befe-6367a3c8f842'
&lt;br&gt;&amp;gt; and @stateCode=1 &amp;nbsp;and &amp;nbsp;@directory=false()] order by @name ascending
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; results:30,000 &amp;nbsp;time:5703ms
&lt;br&gt;&amp;gt; results:300,000 &amp;nbsp;time:30406ms
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Full Text Search more slowly
&lt;br&gt;&amp;gt; Statements:
&lt;br&gt;&amp;gt; /jcr:root/nko:root/nko:workspace/*[@jcr:uuid='a2e5266f-9f2f-46
&lt;br&gt;83-993f-b73f34ba94a7'
&lt;br&gt;&amp;gt; or
&lt;br&gt;&amp;gt; @jcr:uuid='5fbc094f-e6c6-48b3-9083-49fe18a27c4a']//element(*,n
&lt;br&gt;t:base)[jcr:contains(.,'superman
&lt;br&gt;&amp;gt; OR *superman*') and &amp;nbsp;@stateCode=1 and @directory=false()] 
&lt;br&gt;&amp;gt; order by @lastModified ascending
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; results:30,000 time:14360ms
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; View this message in context: 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/search-speed-tp18583171p18583171.html&quot; target=&quot;_top&quot;&gt;http://www.nabble.com/search-speed-tp18583171p18583171.html&lt;/a&gt;&lt;br&gt;&amp;gt; Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/search-speed-tp18583171p18624396.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18622684</id>
	<title>what does NodeTypeRegistry.reregisterNodeType() do?</title>
	<published>2008-07-23T16:22:33Z</published>
	<updated>2008-07-23T16:22:33Z</updated>
	<author>
		<name>Betty Chang-3</name>
	</author>
	<content type="html">Hi -
&lt;br&gt;&lt;br&gt;I've been able to add custom node types within the jackrabbit server app.
&lt;br&gt;&lt;br&gt;However, is it possible to add new properties to a node type that is already registered?
&lt;br&gt;&lt;br&gt;I first call isRegistered() to see if a nodeTypeName is registered, and if it is, I call
&lt;br&gt;reregisterNodeType() in the hopes that it would re-register the node type with the new properties I have
&lt;br&gt;added.
&lt;br&gt;&lt;br&gt;However, new properties do not seem to get registered.
&lt;br&gt;&lt;br&gt;What does reregisterNodeType() actually do?
&lt;br&gt;&lt;br&gt;Betty
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/what-does-NodeTypeRegistry.reregisterNodeType%28%29-do--tp18622684p18622684.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18620951</id>
	<title>Re: JackRabbit Caching: BundleCache vs ItemManager vs CacheManager</title>
	<published>2008-07-23T14:21:48Z</published>
	<updated>2008-07-23T14:21:48Z</updated>
	<author>
		<name>Thomas Müller-2</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; So the intention is that once the session is no longer used then the
&lt;br&gt;&amp;gt;&amp;gt; ItemImpl instances are cleared up?
&lt;br&gt;&lt;br&gt;Unfortunately sessions are kept in a list currently, so you need to
&lt;br&gt;close them manually. See also
&lt;br&gt;&lt;a href=&quot;https://issues.apache.org/jira/browse/JCR-1216&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://issues.apache.org/jira/browse/JCR-1216&lt;/a&gt;&amp;nbsp;&amp;quot;Unreferenced sessions
&lt;br&gt;should get garbage collected&amp;quot;.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Thomas
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/JackRabbit-Caching%3A-BundleCache-vs-ItemManager-vs-CacheManager-tp18190879p18620951.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18620211</id>
	<title>JBoss, RAR and Deploy Model 1</title>
	<published>2008-07-23T13:45:45Z</published>
	<updated>2008-07-23T13:45:45Z</updated>
	<author>
		<name>Paco Avila</name>
	</author>
	<content type="html">Do I need the jackrabbit-jca.rar in JBoss if I use the Deploy Model 1 ?
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/JBoss%2C-RAR-and-Deploy-Model-1-tp18620211p18620211.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18618969</id>
	<title>Re: Inheritance does not work</title>
	<published>2008-07-23T12:47:16Z</published>
	<updated>2008-07-23T12:47:16Z</updated>
	<author>
		<name>Alexander Klimetschek</name>
	</author>
	<content type="html">Could you post the code snippets you use to &amp;quot;get the property&amp;quot;?
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Alex
&lt;br&gt;&lt;br&gt;On Wed, Jul 23, 2008 at 6:52 PM, Danilo Rosetto Muñoz
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618969&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;munozdanilo@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi!
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'm having problems using jackrabbit + inheritance.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; For sample, I have the following CND file:
&lt;br&gt;&amp;gt; &amp;lt;nt = '&lt;a href=&quot;http://www.jcp.org/jcr/nt/1.0'&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.jcp.org/jcr/nt/1.0'&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;mix = '&lt;a href=&quot;http://www.jcp.org/jcr/mix/1.0'&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.jcp.org/jcr/mix/1.0'&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;tst = '&lt;a href=&quot;http://mycompany.com/jcr/2008/tst'&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mycompany.com/jcr/2008/tst'&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; [tst:superType] &amp;gt; nt:hierarchyNode, mix:referenceable
&lt;br&gt;&amp;gt; &amp;nbsp;- tst:someFile (binary)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [tst:person] &amp;gt; tst:superType
&lt;br&gt;&amp;gt; &amp;nbsp;- tst:someText (string) mandatory
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; So, when I try to get the property &amp;quot;tst:someFile&amp;quot;, it doesn't work. If I try
&lt;br&gt;&amp;gt; to evaluate the node using debug I can't see this property.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thank you.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Danilo Rosetto Muñoz
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://munozdanilo.googlepages.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://munozdanilo.googlepages.com&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Alexander Klimetschek
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618969&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexander.klimetschek@...&lt;/a&gt;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Inheritance-does-not-work-tp18615505p18618969.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18618772</id>
	<title>Re: paths</title>
	<published>2008-07-23T12:39:30Z</published>
	<updated>2008-07-23T12:39:30Z</updated>
	<author>
		<name>Nick Stuart-3</name>
	</author>
	<content type="html">That should be correct. I wrote mine the way I did so I know which node is
&lt;br&gt;the first node it *doesn't* have, since I don't believe there is a way to
&lt;br&gt;create 'nested' nodes (say dir2 as missing, you couldn't call
&lt;br&gt;root.addNode('dir1/dir2')) &amp;nbsp;at least I dont think you can! :)
&lt;br&gt;&lt;br&gt;On Wed, Jul 23, 2008 at 3:29 PM, Michael Harris &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618772&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; So if I have
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; path = &amp;quot;dir1/dir2&amp;quot;;
&lt;br&gt;&amp;gt; rootNode.hasPath(dir);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; the method returns true if and only if off root there exists a node named
&lt;br&gt;&amp;gt; dir1, and off dir1 there exists a node named dir2.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Wed, Jul 23, 2008 at 3:25 PM, Michael Harris &amp;lt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618772&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Ah, missed that.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; thanx.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 3:21 PM, Alexander Klimetschek &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618772&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aklimets@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; On Wed, Jul 23, 2008 at 9:14 PM, Michael Harris
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618772&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; Can someone confirm or deny the following: &amp;nbsp;That when a programmer
&lt;br&gt;&amp;gt; users
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; getNode(somePath);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; that path has to exist or an exception is thrown. &amp;nbsp;If I want
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; functionality
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; that gets or creates if the path doesn't exist I have to implement it
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; myself?
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Yes. You can use Session.getRootNode().hasNode(somePath) to check for
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; the existence of a node.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Regards,
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Alex
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Alexander Klimetschek
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618772&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexander.klimetschek@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; --
&lt;br&gt;&amp;gt; &amp;gt; ---------------------
&lt;br&gt;&amp;gt; &amp;gt; Michael Harris
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; ---------------------
&lt;br&gt;&amp;gt; Michael Harris
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/paths-tp18618315p18618772.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18618618</id>
	<title>Re: paths</title>
	<published>2008-07-23T12:30:42Z</published>
	<updated>2008-07-23T12:30:42Z</updated>
	<author>
		<name>shrndegruv</name>
	</author>
	<content type="html">Nick
&lt;br&gt;&lt;br&gt;Im in the process of writing that method now... ;)
&lt;br&gt;&lt;br&gt;On Wed, Jul 23, 2008 at 3:24 PM, Nick Stuart &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618618&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nstuart@...&lt;/a&gt;&amp;gt;
&lt;br&gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi Mike, I believe that is true, and I use the hasNode function to do the
&lt;br&gt;&amp;gt; functionality you want, and its actually a PathNotFoundException that gets
&lt;br&gt;&amp;gt; thrown. I use something like this to check for full paths and create them
&lt;br&gt;&amp;gt; if
&lt;br&gt;&amp;gt; needed:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; private Node createFolders(Node parent, String[] folders, int startIndex)
&lt;br&gt;&amp;gt; throws Exception {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;checkLocked(parent);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (; startIndex &amp;lt; folders.length; startIndex++) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String folderName = folders[startIndex];
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parent = parent.addNode(folderName, FOLDER_TYPE);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return parent;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;private Node getFolderNodeForPath(String folderPath, Node objectNode)
&lt;br&gt;&amp;gt; throws Exception {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] folders = folderPath.split(&amp;quot;/&amp;quot;);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node folderNode = objectNode;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; folders.length; i++) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String folderName = folders[i];
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (StringUtils.isEmpty(folderName)) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (folderNode.hasNode(folderName)) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;folderNode = folderNode.getNode(folderName);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;folderNode = createFolders(folderNode, folders, i);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return folderNode;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Wed, Jul 23, 2008 at 3:14 PM, Michael Harris &amp;lt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618618&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Hello
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Can someone confirm or deny the following: &amp;nbsp;That when a programmer users
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; getNode(somePath);
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; that path has to exist or an exception is thrown. &amp;nbsp;If I want
&lt;br&gt;&amp;gt; functionality
&lt;br&gt;&amp;gt; &amp;gt; that gets or creates if the path doesn't exist I have to implement it
&lt;br&gt;&amp;gt; &amp;gt; myself?
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; thanx
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; --
&lt;br&gt;&amp;gt; &amp;gt; ---------------------
&lt;br&gt;&amp;gt; &amp;gt; Michael Harris
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;---------------------
&lt;br&gt;Michael Harris
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/paths-tp18618315p18618618.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18618720</id>
	<title>Re: paths</title>
	<published>2008-07-23T12:29:48Z</published>
	<updated>2008-07-23T12:29:48Z</updated>
	<author>
		<name>shrndegruv</name>
	</author>
	<content type="html">So if I have
&lt;br&gt;&lt;br&gt;path = &amp;quot;dir1/dir2&amp;quot;;
&lt;br&gt;rootNode.hasPath(dir);
&lt;br&gt;&lt;br&gt;the method returns true if and only if off root there exists a node named
&lt;br&gt;dir1, and off dir1 there exists a node named dir2.
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Wed, Jul 23, 2008 at 3:25 PM, Michael Harris &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618720&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Ah, missed that.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; thanx.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Wed, Jul 23, 2008 at 3:21 PM, Alexander Klimetschek &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618720&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aklimets@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Wed, Jul 23, 2008 at 9:14 PM, Michael Harris
&lt;br&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618720&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Can someone confirm or deny the following: &amp;nbsp;That when a programmer users
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; getNode(somePath);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; that path has to exist or an exception is thrown. &amp;nbsp;If I want
&lt;br&gt;&amp;gt;&amp;gt; functionality
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; that gets or creates if the path doesn't exist I have to implement it
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; myself?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Yes. You can use Session.getRootNode().hasNode(somePath) to check for
&lt;br&gt;&amp;gt;&amp;gt; the existence of a node.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Regards,
&lt;br&gt;&amp;gt;&amp;gt; Alex
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt; Alexander Klimetschek
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618720&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexander.klimetschek@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; ---------------------
&lt;br&gt;&amp;gt; Michael Harris
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;---------------------
&lt;br&gt;Michael Harris
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/paths-tp18618315p18618720.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18618524</id>
	<title>Re: paths</title>
	<published>2008-07-23T12:25:33Z</published>
	<updated>2008-07-23T12:25:33Z</updated>
	<author>
		<name>shrndegruv</name>
	</author>
	<content type="html">Ah, missed that.
&lt;br&gt;&lt;br&gt;thanx.
&lt;br&gt;&lt;br&gt;On Wed, Jul 23, 2008 at 3:21 PM, Alexander Klimetschek &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618524&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aklimets@...&lt;/a&gt;&amp;gt;
&lt;br&gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Wed, Jul 23, 2008 at 9:14 PM, Michael Harris
&lt;br&gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618524&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt; Can someone confirm or deny the following: &amp;nbsp;That when a programmer users
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; getNode(somePath);
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; that path has to exist or an exception is thrown. &amp;nbsp;If I want
&lt;br&gt;&amp;gt; functionality
&lt;br&gt;&amp;gt; &amp;gt; that gets or creates if the path doesn't exist I have to implement it
&lt;br&gt;&amp;gt; &amp;gt; myself?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yes. You can use Session.getRootNode().hasNode(somePath) to check for
&lt;br&gt;&amp;gt; the existence of a node.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Regards,
&lt;br&gt;&amp;gt; Alex
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; Alexander Klimetschek
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618524&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexander.klimetschek@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;---------------------
&lt;br&gt;Michael Harris
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/paths-tp18618315p18618524.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18618509</id>
	<title>Re: paths</title>
	<published>2008-07-23T12:24:48Z</published>
	<updated>2008-07-23T12:24:48Z</updated>
	<author>
		<name>Nick Stuart-3</name>
	</author>
	<content type="html">Hi Mike, I believe that is true, and I use the hasNode function to do the
&lt;br&gt;functionality you want, and its actually a PathNotFoundException that gets
&lt;br&gt;thrown. I use something like this to check for full paths and create them if
&lt;br&gt;needed:
&lt;br&gt;&lt;br&gt;private Node createFolders(Node parent, String[] folders, int startIndex)
&lt;br&gt;throws Exception {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; checkLocked(parent);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (; startIndex &amp;lt; folders.length; startIndex++) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String folderName = folders[startIndex];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; parent = parent.addNode(folderName, FOLDER_TYPE);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return parent;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; private Node getFolderNodeForPath(String folderPath, Node objectNode)
&lt;br&gt;throws Exception {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String[] folders = folderPath.split(&amp;quot;/&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Node folderNode = objectNode;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; folders.length; i++) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String folderName = folders[i];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (StringUtils.isEmpty(folderName)) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;
&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; &amp;nbsp; &amp;nbsp; if (folderNode.hasNode(folderName)) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; folderNode = folderNode.getNode(folderName);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; folderNode = createFolders(folderNode, folders, i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;
&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; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return folderNode;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On Wed, Jul 23, 2008 at 3:14 PM, Michael Harris &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618509&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hello
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Can someone confirm or deny the following: &amp;nbsp;That when a programmer users
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; getNode(somePath);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; that path has to exist or an exception is thrown. &amp;nbsp;If I want functionality
&lt;br&gt;&amp;gt; that gets or creates if the path doesn't exist I have to implement it
&lt;br&gt;&amp;gt; myself?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; thanx
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; ---------------------
&lt;br&gt;&amp;gt; Michael Harris
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/paths-tp18618315p18618509.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18618485</id>
	<title>Re: paths</title>
	<published>2008-07-23T12:21:54Z</published>
	<updated>2008-07-23T12:21:54Z</updated>
	<author>
		<name>Alexander Klimetschek</name>
	</author>
	<content type="html">On Wed, Jul 23, 2008 at 9:14 PM, Michael Harris
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618485&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; Can someone confirm or deny the following: &amp;nbsp;That when a programmer users
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; getNode(somePath);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; that path has to exist or an exception is thrown. &amp;nbsp;If I want functionality
&lt;br&gt;&amp;gt; that gets or creates if the path doesn't exist I have to implement it
&lt;br&gt;&amp;gt; myself?
&lt;br&gt;&lt;br&gt;Yes. You can use Session.getRootNode().hasNode(somePath) to check for
&lt;br&gt;the existence of a node.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Alex
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Alexander Klimetschek
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618485&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alexander.klimetschek@...&lt;/a&gt;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/paths-tp18618315p18618485.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18618315</id>
	<title>paths</title>
	<published>2008-07-23T12:14:04Z</published>
	<updated>2008-07-23T12:14:04Z</updated>
	<author>
		<name>shrndegruv</name>
	</author>
	<content type="html">Hello
&lt;br&gt;&lt;br&gt;Can someone confirm or deny the following: &amp;nbsp;That when a programmer users
&lt;br&gt;&lt;br&gt;getNode(somePath);
&lt;br&gt;&lt;br&gt;that path has to exist or an exception is thrown. &amp;nbsp;If I want functionality
&lt;br&gt;that gets or creates if the path doesn't exist I have to implement it
&lt;br&gt;myself?
&lt;br&gt;&lt;br&gt;thanx
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;---------------------
&lt;br&gt;Michael Harris
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/paths-tp18618315p18618315.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18617338</id>
	<title>Deploy model on JBoss (Wiki)</title>
	<published>2008-07-23T11:24:03Z</published>
	<updated>2008-07-23T11:24:03Z</updated>
	<author>
		<name>Paco Avila</name>
	</author>
	<content type="html">Anyone knows if the steps in
&lt;br&gt;&lt;a href=&quot;http://wiki.apache.org/jackrabbit/JackrabbitOnJBoss&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://wiki.apache.org/jackrabbit/JackrabbitOnJBoss&lt;/a&gt;&amp;nbsp;are related to Deploy
&lt;br&gt;Model 1, 2 or 3?
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Deploy-model-on-JBoss-%28Wiki%29-tp18617338p18617338.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18615505</id>
	<title>Inheritance does not work</title>
	<published>2008-07-23T09:52:59Z</published>
	<updated>2008-07-23T09:52:59Z</updated>
	<author>
		<name>Danilo Rosetto Muñoz</name>
	</author>
	<content type="html">Hi!
&lt;br&gt;&lt;br&gt;I'm having problems using jackrabbit + inheritance.
&lt;br&gt;&lt;br&gt;For sample, I have the following CND file:
&lt;br&gt;&amp;lt;nt = '&lt;a href=&quot;http://www.jcp.org/jcr/nt/1.0'&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.jcp.org/jcr/nt/1.0'&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;lt;mix = '&lt;a href=&quot;http://www.jcp.org/jcr/mix/1.0'&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.jcp.org/jcr/mix/1.0'&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;lt;tst = '&lt;a href=&quot;http://mycompany.com/jcr/2008/tst'&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mycompany.com/jcr/2008/tst'&lt;/a&gt;&amp;gt;
&lt;br&gt;[tst:superType] &amp;gt; nt:hierarchyNode, mix:referenceable
&lt;br&gt;&amp;nbsp; - tst:someFile (binary)
&lt;br&gt;&lt;br&gt;[tst:person] &amp;gt; tst:superType
&lt;br&gt;&amp;nbsp; - tst:someText (string) mandatory
&lt;br&gt;&lt;br&gt;So, when I try to get the property &amp;quot;tst:someFile&amp;quot;, it doesn't work. If I try
&lt;br&gt;to evaluate the node using debug I can't see this property.
&lt;br&gt;&lt;br&gt;Thank you.
&lt;br&gt;&lt;br&gt;Danilo Rosetto Muñoz
&lt;br&gt;&lt;a href=&quot;http://munozdanilo.googlepages.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://munozdanilo.googlepages.com&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Inheritance-does-not-work-tp18615505p18615505.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18613530</id>
	<title>Re: saving files</title>
	<published>2008-07-23T08:31:46Z</published>
	<updated>2008-07-23T08:31:46Z</updated>
	<author>
		<name>Nick Stuart-3</name>
	</author>
	<content type="html">Hmm, wouldn't think the parent node type would have any effect on the
&lt;br&gt;subnodes at all, but I do put all my files in folder nodes so never had this
&lt;br&gt;case. A bit strange, but there might be a valid reason for it. *shrug*
&lt;br&gt;&lt;br&gt;On Wed, Jul 23, 2008 at 11:29 AM, Michael Harris &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613530&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; yep
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Wed, Jul 23, 2008 at 11:27 AM, Michael Harris &amp;lt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613530&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Im using a TransientRepository.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; I wonder if its because Im putting the nt:file in the root node and not
&lt;br&gt;&amp;gt; in
&lt;br&gt;&amp;gt; &amp;gt; a node of type folder.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 11:22 AM, Nick Stuart &amp;lt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613530&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nstuart@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Hm, that is odd. Are you using a file DataStore or is everything being
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; saved
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; in the database?
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; I have a simple DataStore element in my repo config like this:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;lt;DataStore class=&amp;quot;org.apache.jackrabbit.core.data.FileDataStore&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;param name=&amp;quot;path&amp;quot; value=&amp;quot;${rep.home}/repository/datastore&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;param name=&amp;quot;minRecordLength&amp;quot; value=&amp;quot;100&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;lt;/DataStore&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; (syntax might be different for 1.4, cant remember)
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Again, this shouldn't matter as it worked before when saving to
&lt;br&gt;&amp;gt; database.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; The other thing to look at if you do have a file DataStore is the
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; directory
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; itself. It should have some folders and files in there, all with weird
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; names, but you should be able to find what you added to the repo. And
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; changing it to the FileDataStore lets you test this out too, where I'm
&lt;br&gt;&amp;gt; not
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; quite sure where to look if things are in the DB.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; On Wed, Jul 23, 2008 at 11:05 AM, Michael Harris &amp;lt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613530&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; yeah tried that and no dice. &amp;nbsp;wierd eh. &amp;nbsp;I confirmed that the testFile
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; has
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; content in it....
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 11:01 AM, Nick Stuart &amp;lt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613530&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nstuart@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; Well the only thats really different between that and my code is
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; setting
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; mimeType and encoding to empty. I don't touch the encoding at all,
&lt;br&gt;&amp;gt; and
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; always set the mimeType to something even if it is just text/plain.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Other
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; then that it looks about the same. Try hardcoding at least mimeType
&lt;br&gt;&amp;gt; to
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; 'text/plain' and remove the encoding bit and see if you get better
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; results.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; That may be screwing up the retrieval bit, not sure why it would
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; though.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; -Nick
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 10:56 AM, Michael Harris &amp;lt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613530&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; yeah man I tried writing the retrieved stream to a file, it is
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; empty.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;nbsp;The
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; file that I save definitely has content (confirmed by less).
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Perhaps you can take a look see (the code isn't complicated);
&lt;br&gt;&amp;gt; having
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; more
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; experience than me you could identify obvious problems pretty
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; quickly.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; here is the save code
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp;public void saveFile(File file, Session session) throws
&lt;br&gt;&amp;gt; Exception
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; {
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// create the file node - see section 6.7.22.6 of the spec
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node folderNode = session.getRootNode();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node fileNode = folderNode.addNode(file.getName(),
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;quot;nt:file&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// create the mandatory child node - jcr:content
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node resNode = fileNode.addNode(&amp;quot;jcr:content&amp;quot;,
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;quot;nt:resource&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resNode.setProperty(&amp;quot;jcr:mimeType&amp;quot;, &amp;quot;&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resNode.setProperty(&amp;quot;jcr:encoding&amp;quot;, &amp;quot;&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FileInputStream fileInputStream = new
&lt;br&gt;&amp;gt; FileInputStream(file);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resNode.setProperty(&amp;quot;jcr:data&amp;quot;, fileInputStream);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Calendar lastModified = Calendar.getInstance();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;lastModified.setTimeInMillis(file.lastModified());
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resNode.setProperty(&amp;quot;jcr:lastModified&amp;quot;, lastModified);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; session.save();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; and here is the test code
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp;protected void setUp() throws Exception {
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.setUp();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String testFileName = &amp;quot;/tmp/&amp;quot; + getName() + &amp;quot;.txt&amp;quot;;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileWriter fw = new FileWriter(testFileName);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fw.write(&amp;quot;some content&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fw.flush();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testFile = new File(testFileName);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp;public void testSaveFile() throws Exception {
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Session session = getSession();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dao.saveFile(testFile, session);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node root = session.getRootNode();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Node fileNode = root.getNode(testFile.getName());
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node fileDetails = fileNode.getNode(&amp;quot;jcr:content&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Property fileProp = fileDetails.getProperty(&amp;quot;jcr:data&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; InputStream retrievedStream = fileProp.getStream();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileOutputStream fos = new
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; FileOutputStream(&amp;quot;/tmp/retrievedFile.txt&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;byte[] buf = new byte[256];
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int read = 0;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while ((read = retrievedStream.read(buf)) &amp;gt; 0) {
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fos.write(buf, 0, read);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fos.flush();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 10:38 AM, Nick Stuart &amp;lt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613530&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nstuart@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; I know that works as I've used it extensively. I am on a 1.5
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; build,
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; but
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; it
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; was working with the 1.4.x build I started with. Have you looked
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; at
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; the
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; stream going in to make sure something is actually being saved?
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; You
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; obviously have the node and property there or otherwise you
&lt;br&gt;&amp;gt; would
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; be
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; getting
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; a RepositoryException.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; I would check to make sure you are saving everything you think
&lt;br&gt;&amp;gt; you
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; are.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Also, try just using the stream and ignore the debugger (it
&lt;br&gt;&amp;gt; might
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; be
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; lying
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; to you, who knows). But it looks like everything is in order.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 10:35 AM, Michael Harris &amp;lt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613530&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Nick
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; thanx for the reply. &amp;nbsp;when I do that and inspect the returned
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; stream
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; in
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; the
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; eclipse debugger there is nothing in it.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; michael.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 10:22 AM, Nick Stuart &amp;lt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613530&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nstuart@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; All you can really do is retrieve the InputStream for said
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; file.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Which
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; should be enough, and the nodes hold the rest of the info if
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; you
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; need
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; it
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; obviously (file name, type, etc).
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Something like:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Node resNode = fileNode.getNode(&amp;quot;jcr:content&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; resNode.getProperty(&amp;quot;jcr:data&amp;quot;).getStream();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Where fileNode is the jcr:file node type. You wont be able
&lt;br&gt;&amp;gt; to
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; actually
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; get
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; a
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; File object becuase thats part of JCR, that it extracts that
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; stuff
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; away
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; from
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; you, and you just deal with the contents and info.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; -Nick
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 10:16 AM, Michael Harris &amp;lt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613530&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; ladies and gentlemen
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; its still not obvious to me how to retrieve the saved
&lt;br&gt;&amp;gt; file.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;nbsp;Can
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; someone
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; please illuminate the situation?
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; thanx in advance.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; On Tue, Jul 22, 2008 at 3:05 PM, Michael Harris &amp;lt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613530&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; comments inline below. &amp;nbsp;Thank you for the response.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; On Tue, Jul 22, 2008 at 2:20 PM, Julian Reschke &amp;lt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613530&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;julian.reschke@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; Michael Harris wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; hey all,
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; more newb questions here.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; Want to save a file in the repository. &amp;nbsp;found this on
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; the
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; wiki
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; Node folderNode = session.getRootNode();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node fileNode =
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; folderNode.addNode(file.getName(),
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;quot;nt:file&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// create the mandatory child node -
&lt;br&gt;&amp;gt; jcr:content
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node resNode = fileNode.addNode(&amp;quot;jcr:content&amp;quot;,
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;quot;nt:resource&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resNode.setProperty(&amp;quot;jcr:mimeType&amp;quot;, &amp;quot;&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resNode.setProperty(&amp;quot;jcr:encoding&amp;quot;, &amp;quot;&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; &amp;gt; ...
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; That is very bad advice. If you don't know mimeType or
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; encoding,
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; do
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; not
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; set it.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; Where did you find that?
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; I got the code from the wiki. &amp;nbsp;It had the mimetype and
&lt;br&gt;&amp;gt; the
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; encoding
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; type.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; I modified the code and just put empty strings in for
&lt;br&gt;&amp;gt; now.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; resNode.setProperty(&amp;quot;jcr:data&amp;quot;, new
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; FileInputStream(file));
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Calendar lastModified = Calendar.getInstance();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;nbsp;lastModified.setTimeInMillis(file.lastModified());
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resNode.setProperty(&amp;quot;jcr:lastModified&amp;quot;,
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; lastModified);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; Is the file itself being put in the repository
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; (jcr.data)
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; or
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; just
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; the
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; content?
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; The contents.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; &amp;nbsp;Do I even need the resNode? &amp;nbsp;Can I just save the file
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; into
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; the
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; fileNode?
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; Not unless you use a different node type.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; So does it mean anything to say &amp;quot;Can I save the file
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; itself?&amp;quot;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; so the above code I put into a DAO method saveFile(File,
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Session).
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp;In
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; the
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; test for that method, i have
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Node root = session.getRootNode();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // testFile is the file in the Dao
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Node fileNode =
&lt;br&gt;&amp;gt; root.getNode(testFile.getName());
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Node fileDetails =
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; fileNode.getNode(&amp;quot;jcr:content&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Property fileProp =
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; fileDetails.getProperty(&amp;quot;jcr:data&amp;quot;);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; I am trying to get at the file contents, which is just a
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; string
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;quot;some
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; content&amp;quot;.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; on the property retrieved I dont see the file content
&lt;br&gt;&amp;gt; (Im
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; in
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; eclipse's
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; debugger). &amp;nbsp;How do I retrieve the file. &amp;nbsp;What would a
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; loadFile(Session, filename) method look like?
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; &amp;nbsp;Finally, we are going to need to lock the file (which
&lt;br&gt;&amp;gt; is
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; why
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; we
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; are
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; using
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; jcr). &amp;nbsp;Is it possible to attach info (like who owns
&lt;br&gt;&amp;gt; the
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; lock)
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; to
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; the
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; locked
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; file?
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; To some extent, that's part of the JCR locking model
&lt;br&gt;&amp;gt; (it
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; remembers
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; who
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; owns the lock, and exposes the information both in the
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; API
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; and
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; on
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; properties
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; defined in mix:lockable).
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; &amp;nbsp;Thanx. &amp;nbsp;This community has been quite helpful.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; BR, Julian
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; --
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; ---------------------
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Michael Harris
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; --
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; ---------------------
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Michael Harris
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; --
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; ---------------------
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Michael Harris
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; --
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; ---------------------
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Michael Harris
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; --
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; ---------------------
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; Michael Harris
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; --
&lt;br&gt;&amp;gt; &amp;gt; ---------------------
&lt;br&gt;&amp;gt; &amp;gt; Michael Harris
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; ---------------------
&lt;br&gt;&amp;gt; Michael Harris
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/saving-files-tp18594465p18613530.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18613461</id>
	<title>Re: saving files</title>
	<published>2008-07-23T08:29:47Z</published>
	<updated>2008-07-23T08:29:47Z</updated>
	<author>
		<name>shrndegruv</name>
	</author>
	<content type="html">yep
&lt;br&gt;&lt;br&gt;On Wed, Jul 23, 2008 at 11:27 AM, Michael Harris &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613461&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Im using a TransientRepository.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I wonder if its because Im putting the nt:file in the root node and not in
&lt;br&gt;&amp;gt; a node of type folder.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Wed, Jul 23, 2008 at 11:22 AM, Nick Stuart &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613461&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nstuart@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Hm, that is odd. Are you using a file DataStore or is everything being
&lt;br&gt;&amp;gt;&amp;gt; saved
&lt;br&gt;&amp;gt;&amp;gt; in the database?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I have a simple DataStore element in my repo config like this:
&lt;br&gt;&amp;gt;&amp;gt; &amp;lt;DataStore class=&amp;quot;org.apache.jackrabbit.core.data.FileDataStore&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;param name=&amp;quot;path&amp;quot; value=&amp;quot;${rep.home}/repository/datastore&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;param name=&amp;quot;minRecordLength&amp;quot; value=&amp;quot;100&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;lt;/DataStore&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; (syntax might be different for 1.4, cant remember)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Again, this shouldn't matter as it worked before when saving to database.
&lt;br&gt;&amp;gt;&amp;gt; The other thing to look at if you do have a file DataStore is the
&lt;br&gt;&amp;gt;&amp;gt; directory
&lt;br&gt;&amp;gt;&amp;gt; itself. It should have some folders and files in there, all with weird
&lt;br&gt;&amp;gt;&amp;gt; names, but you should be able to find what you added to the repo. And
&lt;br&gt;&amp;gt;&amp;gt; changing it to the FileDataStore lets you test this out too, where I'm not
&lt;br&gt;&amp;gt;&amp;gt; quite sure where to look if things are in the DB.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Wed, Jul 23, 2008 at 11:05 AM, Michael Harris &amp;lt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613461&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; yeah tried that and no dice. &amp;nbsp;wierd eh. &amp;nbsp;I confirmed that the testFile
&lt;br&gt;&amp;gt;&amp;gt; has
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; content in it....
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 11:01 AM, Nick Stuart &amp;lt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613461&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nstuart@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; Well the only thats really different between that and my code is
&lt;br&gt;&amp;gt;&amp;gt; setting
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; mimeType and encoding to empty. I don't touch the encoding at all, and
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; always set the mimeType to something even if it is just text/plain.
&lt;br&gt;&amp;gt;&amp;gt; Other
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; then that it looks about the same. Try hardcoding at least mimeType to
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; 'text/plain' and remove the encoding bit and see if you get better
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; results.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; That may be screwing up the retrieval bit, not sure why it would
&lt;br&gt;&amp;gt;&amp;gt; though.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; -Nick
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 10:56 AM, Michael Harris &amp;lt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613461&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; yeah man I tried writing the retrieved stream to a file, it is
&lt;br&gt;&amp;gt;&amp;gt; empty.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;nbsp;The
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; file that I save definitely has content (confirmed by less).
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Perhaps you can take a look see (the code isn't complicated); having
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; more
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; experience than me you could identify obvious problems pretty
&lt;br&gt;&amp;gt;&amp;gt; quickly.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; here is the save code
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp;public void saveFile(File file, Session session) throws Exception
&lt;br&gt;&amp;gt;&amp;gt; {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// create the file node - see section 6.7.22.6 of the spec
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node folderNode = session.getRootNode();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node fileNode = folderNode.addNode(file.getName(),
&lt;br&gt;&amp;gt;&amp;gt; &amp;quot;nt:file&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// create the mandatory child node - jcr:content
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node resNode = fileNode.addNode(&amp;quot;jcr:content&amp;quot;,
&lt;br&gt;&amp;gt;&amp;gt; &amp;quot;nt:resource&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resNode.setProperty(&amp;quot;jcr:mimeType&amp;quot;, &amp;quot;&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resNode.setProperty(&amp;quot;jcr:encoding&amp;quot;, &amp;quot;&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FileInputStream fileInputStream = new FileInputStream(file);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resNode.setProperty(&amp;quot;jcr:data&amp;quot;, fileInputStream);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Calendar lastModified = Calendar.getInstance();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;lastModified.setTimeInMillis(file.lastModified());
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resNode.setProperty(&amp;quot;jcr:lastModified&amp;quot;, lastModified);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; session.save();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; and here is the test code
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp;protected void setUp() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.setUp();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String testFileName = &amp;quot;/tmp/&amp;quot; + getName() + &amp;quot;.txt&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileWriter fw = new FileWriter(testFileName);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fw.write(&amp;quot;some content&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fw.flush();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testFile = new File(testFileName);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp;public void testSaveFile() throws Exception {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Session session = getSession();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dao.saveFile(testFile, session);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node root = session.getRootNode();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Node fileNode = root.getNode(testFile.getName());
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node fileDetails = fileNode.getNode(&amp;quot;jcr:content&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Property fileProp = fileDetails.getProperty(&amp;quot;jcr:data&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; InputStream retrievedStream = fileProp.getStream();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileOutputStream fos = new
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; FileOutputStream(&amp;quot;/tmp/retrievedFile.txt&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;byte[] buf = new byte[256];
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int read = 0;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while ((read = retrievedStream.read(buf)) &amp;gt; 0) {
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fos.write(buf, 0, read);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fos.flush();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 10:38 AM, Nick Stuart &amp;lt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613461&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nstuart@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; I know that works as I've used it extensively. I am on a 1.5
&lt;br&gt;&amp;gt;&amp;gt; build,
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; but
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; it
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; was working with the 1.4.x build I started with. Have you looked
&lt;br&gt;&amp;gt;&amp;gt; at
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; the
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; stream going in to make sure something is actually being saved?
&lt;br&gt;&amp;gt;&amp;gt; You
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; obviously have the node and property there or otherwise you would
&lt;br&gt;&amp;gt;&amp;gt; be
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; getting
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; a RepositoryException.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; I would check to make sure you are saving everything you think you
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; are.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Also, try just using the stream and ignore the debugger (it might
&lt;br&gt;&amp;gt;&amp;gt; be
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; lying
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; to you, who knows). But it looks like everything is in order.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 10:35 AM, Michael Harris &amp;lt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613461&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Nick
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; thanx for the reply. &amp;nbsp;when I do that and inspect the returned
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; stream
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; in
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; the
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; eclipse debugger there is nothing in it.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; michael.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 10:22 AM, Nick Stuart &amp;lt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613461&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nstuart@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; All you can really do is retrieve the InputStream for said
&lt;br&gt;&amp;gt;&amp;gt; file.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Which
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; should be enough, and the nodes hold the rest of the info if
&lt;br&gt;&amp;gt;&amp;gt; you
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; need
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; it
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; obviously (file name, type, etc).
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Something like:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Node resNode = fileNode.getNode(&amp;quot;jcr:content&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; resNode.getProperty(&amp;quot;jcr:data&amp;quot;).getStream();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; Where fileNode is the jcr:file node type. You wont be able to
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; actually
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; get
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; a
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; File object becuase thats part of JCR, that it extracts that
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; stuff
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; away
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; from
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; you, and you just deal with the contents and info.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; -Nick
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; On Wed, Jul 23, 2008 at 10:16 AM, Michael Harris &amp;lt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613461&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; ladies and gentlemen
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; its still not obvious to me how to retrieve the saved file.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;nbsp;Can
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; someone
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; please illuminate the situation?
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; thanx in advance.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; On Tue, Jul 22, 2008 at 3:05 PM, Michael Harris &amp;lt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613461&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michael.e.harris@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; comments inline below. &amp;nbsp;Thank you for the response.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; On Tue, Jul 22, 2008 at 2:20 PM, Julian Reschke &amp;lt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613461&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;julian.reschke@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; Michael Harris wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; hey all,
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; more newb questions here.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; Want to save a file in the repository. &amp;nbsp;found this on
&lt;br&gt;&amp;gt;&amp;gt; the
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; wiki
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; Node folderNode = session.getRootNode();
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node fileNode =
&lt;br&gt;&amp;gt;&amp;gt; folderNode.addNode(file.getName(),
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;quot;nt:file&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// create the mandatory child node - jcr:content
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Node resNode = fileNode.addNode(&amp;quot;jcr:content&amp;quot;,
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;quot;nt:resource&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resNode.setProperty(&amp;quot;jcr:mimeType&amp;quot;, &amp;quot;&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resNode.setProperty(&amp;quot;jcr:encoding&amp;quot;, &amp;quot;&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; &amp;gt; ...
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; That is very bad advice. If you don't know mimeType or
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; encoding,
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; do
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; not
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; set it.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt; Where did you find that?
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; I got the code from the wiki. &amp;nbsp;It had the mimetype and the
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; encoding
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; type.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; I modified the code and just put empty strings in for now.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt;&amp