<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
				<meta name="keywords" content="SMILA/Documentation/ObjectStore/Bundle org.eclipse.smila.objectstore.filesystem,SMILA/Documentation/ObjectStore/Bundle org.eclipse.smila.objectstore" />
		<link rel="shortcut icon" href="http://wiki.eclipse.org/SMILA/Documentation/ObjectStore/favicon.ico" />
		<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.eclipse.org/opensearch_desc.php" title="Eclipsepedia (English)" />
<link rel="alternate" type="application/rss+xml" title="Eclipsepedia RSS Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=rss" />
<link rel="alternate" type="application/atom+xml" title="Eclipsepedia Atom Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=atom" />
	
		
		<title>SMILA/Documentation/ObjectStore/Bundle org.eclipse.smila.objectstore.filesystem - Eclipsepedia</title>

		<style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "/skins/eclipsenova/novaWide.css?116"; /*]]>*/</style>
		<link rel="stylesheet" type="text/css" media="print" href="http://wiki.eclipse.org/skins/eclipsenova/eclipsenovaPrint.css?116" />
		<link rel="stylesheet" type="text/css" media="handheld" href="http://wiki.eclipse.org/skins/eclipsenova/handheld.css?116" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/header.css" media="screen" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/tabs.css" media="screen" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/visual.css" media="screen" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/layout.css" media="screen" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/footer.css" media="screen" />
	        <!--[if IE]><link rel="stylesheet" type="text/css" href="/skins/eclipsenova/IEpngfix.css" media="screen" /><![endif]-->
		<!--[if lt IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE50Fixes.css?116";</style> <![endif]-->
		<!--[if IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE55Fixes.css?116";</style><![endif]-->
		<!--[if IE 6]><style type="text/css">@import "/skins/eclipsenova/IE60Fixes.css?116";</style><![endif]-->
		<!--[if IE 7]><style type="text/css">@import "/skins/eclipsenova/IE70Fixes.css?116";</style><![endif]-->
		<!--[if lt IE 7]><script type="text/javascript" src="/skins/common/IEFixes.js?116"></script>
		<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
		<script type= "text/javascript">/*<![CDATA[*/
var skin = "eclipsenova";
var stylepath = "/skins";
var wgArticlePath = "/$1";
var wgScriptPath = "";
var wgScript = "/index.php";
var wgServer = "http://wiki.eclipse.org";
var wgCanonicalNamespace = "";
var wgCanonicalSpecialPageName = false;
var wgNamespaceNumber = 0;
var wgPageName = "SMILA/Documentation/ObjectStore/Bundle_org.eclipse.smila.objectstore.filesystem";
var wgTitle = "SMILA/Documentation/ObjectStore/Bundle org.eclipse.smila.objectstore.filesystem";
var wgAction = "view";
var wgRestrictionEdit = [];
var wgRestrictionMove = [];
var wgArticleId = "32138";
var wgIsArticle = true;
var wgUserName = null;
var wgUserGroups = null;
var wgUserLanguage = "en";
var wgContentLanguage = "en";
var wgBreakFrames = false;
var wgCurRevisionId = "285829";
var wgVersion = "1.12.0";
var wgEnableAPI = true;
var wgEnableWriteAPI = false;
/*]]>*/</script>
                
		<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/wikibits.js?116"><!-- wikibits js --></script>

<!-- Performance mods similar to those for bug 166401 -->
		<script type="text/javascript" src="http://wiki.eclipse.org/index.php?title=-&amp;action=raw&amp;gen=js&amp;useskin=eclipsenova"><!-- site js --></script>

		<!-- Head Scripts -->
				<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/ajax.js?116"></script>
<link rel="stylesheet" type="text/css" href="Bundle_org.eclipse.smila.objectstore.filesystem.html" />	</head>
<body  class="mediawiki ns-0 ltr page-SMILA_Documentation_ObjectStore_Bundle_org_eclipse_smila_objectstore_filesystem">
	<div id="globalWrapper">


		<div id="column-one">
<!-- Eclipse Additions for the Top Nav start here M. Ward-->

		      <div id="header">
               <div id="header-graphic">
                 <img src="http://wiki.eclipse.org/skins/eclipsenova/eclipse.png" alt="Eclipse Wiki">
               </div>
<!-- Pulled 101409 Mward	   -->
            
            <div class="portlet" id="p-personal">
              <div class="pBody">
              <ul>
                <li id="pt-login"><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Documentation/ObjectStore/Bundle_org.eclipse.smila.objectstore.filesystem">Log in</a></li>
                      </ul>
              </div>
            </div>

            <div id="header-icons">
	      <div id="sites">
              <ul id="sitesUL">
                <li><a href="http://www.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/eclipseIcon.png" width="28" height="28" alt="Eclipse Foundation" title="Eclipse Foundation" /><div>Eclipse Foundation</div></a></li>
                <li><a href="http://marketplace.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/marketplace.png" width="28" height="28" alt="Eclipse Marketplace" title="Eclipse Marketplace" /><div>Eclipse Marketplace</div></a></li>
                <li><a href="https://bugs.eclipse.org/bugs"><img src="http://dev.eclipse.org/custom_icons/system-search-bw.png" width="28" height="28" alt="Bugzilla" title="Bugzilla" /><div>Bugzilla</div></a></li>
                <li><a href="http://live.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/audio-input-microphone-bw.png" width="28" height="28" alt="Live" title="Live" /><div>Eclipse Live</div></a></li>
                <li><a href="http://planeteclipse.org"><img src="http://dev.eclipse.org/large_icons/devices/audio-card.png" width="28" height="28" alt="PlanetEclipse" title="Planet" /><div>Planet Eclipse</div></a></li>
                <li><a href="http://portal.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/preferences-system-network-proxy-bw.png" width="28" height="28" alt="Portal" title="Portal" /><div>My Foundation Portal</div></a></li>
              </ul>
              </div>
            </div>
        </div> 
<!-- NEW HEADER STUFF HERE -->
       <div id="header-menu">
         <div id="header-nav">
               <ul> 		 <li><a class="first_one" href="http://wiki.eclipse.org/" target="_self">Home</a></li>                  <li><a  href="http://www.eclipse.org/downloads/" target="_self">Downloads</a></li> 
                 <li><a  href="http://www.eclipse.org/users/" target="_self">Users</a></li> 
                 <li><a  href="http://www.eclipse.org/membership/" target="_self">Members</a></li> 
                 <li><a  href="http://wiki.eclipse.org/index.php/Development_Resources" target="_self">Committers</a></li> 
                 <li><a  href="http://www.eclipse.org/resources/" target="_self">Resources</a></li> 
                 <li><a  href="http://www.eclipse.org/projects/" target="_self">Projects</a></li> 
                 <li><a  href="http://www.eclipse.org/org/" target="_self">About Us</a></li> 
                </ul>
         </div>
         <div id="header-utils">
<!-- moved the search window here -->
                           <form action="http://wiki.eclipse.org/Special:Search" >
                  <input class="input" name="search" type="text" accesskey="f" value="" />
                    <input type='submit' onclick="this.submit();" name="go" id="searchGoButton" class="button" title="Go to a page with this exact name if one exists" value="Go" />&nbsp;
                    <input type='submit' onclick="this.submit();" name="fulltext" class="button" id="mw-searchButton" title="Search Eclipsepedia for this text"  value="Search" />
                </form>
		 </div>
      </div>


<!-- Eclipse Additions for the Header stop here -->
<!-- Additions and mods for leftside nav Start here -->

<!--Started nav  rip here-->
<!-- these are the nav controls main page, changes etc -->
    <div id="novaContent" class="faux">
            <div id="leftcol">
          <ul id="leftnav">
<!-- these are the page controls, edit history etc -->
            	  <li class="separator"><a class="separator">Navigation &#160;&#160;</li>
                                <li id="n-mainpage"><a href="http://wiki.eclipse.org/Main_Page">Main Page</a></li>
	                                <li id="n-portal"><a href="http://wiki.eclipse.org/Eclipsepedia:Community_Portal">Community portal</a></li>
	                                <li id="n-currentevents"><a href="http://wiki.eclipse.org/Eclipsepedia:Current_events">Current events</a></li>
	                                <li id="n-recentchanges"><a href="http://wiki.eclipse.org/Special:Recentchanges">Recent changes</a></li>
	                                <li id="n-randompage"><a href="http://wiki.eclipse.org/Special:Random">Random page</a></li>
	                                <li id="n-help"><a href="http://wiki.eclipse.org/Help:Contents">Help</a></li>
		  <li class="separator"><a class="separator">Toolbox &#160;&#160;</a></li>

				<li id="t-whatlinkshere"><a href="http://wiki.eclipse.org/Special:Whatlinkshere/SMILA/Documentation/ObjectStore/Bundle_org.eclipse.smila.objectstore.filesystem">What links here</a></li>
				<li id="t-recentchangeslinked"><a href="http://wiki.eclipse.org/Special:Recentchangeslinked/SMILA/Documentation/ObjectStore/Bundle_org.eclipse.smila.objectstore.filesystem">Related changes</a></li>
                <!-- This is the toolbox section -->
<li id="t-upload"><a href="http://wiki.eclipse.org/Special:Upload">Upload file</a></li>
<li id="t-specialpages"><a href="http://wiki.eclipse.org/Special:Specialpages">Special pages</a></li>
				<li id="t-print"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/ObjectStore/Bundle_org.eclipse.smila.objectstore.filesystem&amp;printable=yes">Printable version</a></li>				<li id="t-permalink"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/ObjectStore/Bundle_org.eclipse.smila.objectstore.filesystem&amp;oldid=285829">Permanent link</a></li>	  </ul>
        </div>


<!-- Additions and mods for leftside nav End here -->


  <div id="column-content">
    <div id="content">
      <a name="top" id="top"></a>

              <div id="tabs">
         <ul class="primary">
                                         <li class="active"><a href="Bundle_org.eclipse.smila.objectstore.filesystem.html"><span class="tab">Page</span></a></li>
                                                         <li><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Documentation/ObjectStore/Bundle_org.eclipse.smila.objectstore.filesystem&amp;action=edit"><span class="tab">Discussion</span></a></li>
                                         <li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/ObjectStore/Bundle_org.eclipse.smila.objectstore.filesystem&amp;action=edit"><span class="tab">View source</span></a></li>
                                         <li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/ObjectStore/Bundle_org.eclipse.smila.objectstore.filesystem&amp;action=history"><span class="tab">History</span></a></li>
                                         <li><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Documentation/ObjectStore/Bundle%20org.eclipse.smila.objectstore.filesystem"><span class="tab">Edit</span></a></li>
                  </ul>
        </div>


          <script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
            <h1 class="firstHeading">SMILA/Documentation/ObjectStore/Bundle org.eclipse.smila.objectstore.filesystem</h1>
      <div id="bodyContent">
        <h3 id="siteSub">From Eclipsepedia</h3>
        <div id="contentSub"><span class="subpages">&lt; <a href="../../../SMILA.html" title="SMILA">SMILA</a> | <a href="../../Documentation.1.html" title="SMILA/Documentation">Documentation</a></span></div>
                              <div id="jump-to-nav">Jump to: <a href="Bundle_org.eclipse.smila.objectstore.filesystem.html#column-one">navigation</a>, <a href="Bundle_org.eclipse.smila.objectstore.filesystem.html#searchInput">search</a></div>          <!-- start content -->
          <table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="Bundle_org.eclipse.smila.objectstore.filesystem.html#org.eclipse.smila.objectstore.filesystem"><span class="tocnumber">1</span> <span class="toctext">org.eclipse.smila.objectstore.filesystem</span></a>
<ul>
<li class="toclevel-2"><a href="Bundle_org.eclipse.smila.objectstore.filesystem.html#Description"><span class="tocnumber">1.1</span> <span class="toctext">Description</span></a></li>
<li class="toclevel-2"><a href="Bundle_org.eclipse.smila.objectstore.filesystem.html#JavaDoc"><span class="tocnumber">1.2</span> <span class="toctext">JavaDoc</span></a></li>
<li class="toclevel-2"><a href="Bundle_org.eclipse.smila.objectstore.filesystem.html#SimpleObjectStoreService"><span class="tocnumber">1.3</span> <span class="toctext">SimpleObjectStoreService</span></a>
<ul>
<li class="toclevel-3"><a href="Bundle_org.eclipse.smila.objectstore.filesystem.html#API"><span class="tocnumber">1.3.1</span> <span class="toctext">API</span></a></li>
<li class="toclevel-3"><a href="Bundle_org.eclipse.smila.objectstore.filesystem.html#Configuration"><span class="tocnumber">1.3.2</span> <span class="toctext">Configuration</span></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
<a name="org.eclipse.smila.objectstore.filesystem"></a><h1> <span class="mw-headline"> org.eclipse.smila.objectstore.filesystem </span></h1>
<a name="Description"></a><h2> <span class="mw-headline"> Description </span></h2>
<p>This package provides a file system based implementation of the <tt>ObjectStoreService</tt> (<tt>org.eclipse.smila.objectstore</tt> package).
</p><p>The objects are temporarily written to a shadow store, so they will not be visible until they have been committed (an exception to this is the append operation, that will append to the <i>live</i> object).
</p><p>The storage is divided into two parts: <tt>Stores</tt> and <tt>Objects</tt>.
</p><p>The following rules apply to this file system based implementation:
</p>
<ul><li>Store
<ul><li>A store is represented by a plain directory in the base store path. 
</li><li>A store can include plain files or a hierarchy of files that can be listed with <tt>getStoreObjectInfos(String, String)</tt>.
</li><li>A valid store name contains up to 256 characters and contains no other characters than a-z, A-Z, 0-9, and '-' (hyphen). Expressed as a regular expression this is equal to: "[a-zA-Z0-9-]{0,256}"). 
</li></ul>
</li><li>Object 
<ul><li>An object represents a file in a store. 
</li><li>An object will be invisible until the corresponding <tt>SimpleStoreOutputStream</tt> is closed or an invocation of <tt>writeObject(String, String)</tt> method succeeded
<ul><li>Exception: A invocation of the <tt>appendToObject(String, String, byte[])</tt> method will append directly to the visible object.
</li></ul>
</li></ul>
</li></ul>
<p>Hierarchies within the store can be created by using object ids that contain a path, e.g. creating an object <tt>path/to/the/object</tt> in a store with the name <tt>storename</tt> will result in the following file system hierarchy (starting with the store-base file system):
<tt>storename/path/to/the/object</tt>
</p>
<a name="JavaDoc"></a><h2> <span class="mw-headline"> JavaDoc </span></h2>
<p>JavaDoc can be found at <a href="http://build.eclipse.org/rt/smila/javadoc/current/index.html?org/eclipse/smila/objectstore/filesystem/package-summary.html" class="external text" title="http://build.eclipse.org/rt/smila/javadoc/current/index.html?org/eclipse/smila/objectstore/filesystem/package-summary.html" rel="nofollow">org.eclipse.smila.objectstore.filesystem</a>.
</p><p>For the interfaces implemented and the exceptions used, see <a href="http://build.eclipse.org/rt/smila/javadoc/current/index.html?org/eclipse/smila/objectstore/package-summary.html" class="external text" title="http://build.eclipse.org/rt/smila/javadoc/current/index.html?org/eclipse/smila/objectstore/package-summary.html" rel="nofollow">org.eclipse.smila.objectstore</a>.
</p>
<a name="SimpleObjectStoreService"></a><h2> <span class="mw-headline"> SimpleObjectStoreService </span></h2>
<a name="API"></a><h3> <span class="mw-headline"> API </span></h3>
<p><tt>SimpleObjectStoreService</tt> implements the <a href="http://build.eclipse.org/rt/smila/javadoc/current/org/eclipse/smila/objectstore/ObjectStoreService.html" class="external text" title="http://build.eclipse.org/rt/smila/javadoc/current/org/eclipse/smila/objectstore/ObjectStoreService.html" rel="nofollow">org.eclipse.smila.objectstore.ObjectStoreService API</a> of the <tt>ObjectStoreService</tt>.
</p><p>This implementation does not support the method <tt>void finishObject(final String storeName, final String objectId)</tt>, that is meant to prevent further append calls for the object. Any call to this method is ignored.
</p><p>You can find information of the <tt>ObjectStoreService</tt> in <a href="Bundle_org.eclipse.smila.objectstore.html" title="SMILA/Documentation/ObjectStore/Bundle org.eclipse.smila.objectstore">bundle org.eclipse.smila.objectstore</a>.
</p>
<a name="Configuration"></a><h3> <span class="mw-headline"> Configuration </span></h3>
<p>The only configuration that can be provided (but is not necessary) is a configuration property file located at <tt>configuration/org.eclipse.smila.objectstore.filesystem/objectstoreservice.properties</tt>.
</p><p>In this file you can specify the following settings:
</p>
<ul><li><tt>root.path</tt>
<ul><li>Defines the path to the root directory of the object store. In this directory, the store root folder <tt>objectstore</tt> and shadow directory <tt>.objectstore</tt> will be created to hold the stores and the visible (resp. temporary) objects of the stores.
</li><li>Default: If the property is not set, a default directory for the bundle is created in the SMILA workspace.
</li></ul>
</li><li><tt>file.locking</tt>
<ul><li>This option is experimental!
</li><li>If set to <tt>true</tt>, access to the file will be accompanied by a files system lock to prohibit parallel access by other programs. Whether or not the operating system or the file system used will honor this lock cannot be guaranteed, so it is not recommended.
</li><li>Default: <tt>false</tt>.
</li></ul>
</li></ul>

<!-- 
NewPP limit report
Preprocessor node count: 29/1000000
Post-expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
#ifexist count: 0/100
-->

<!-- Saved in parser cache with key wikidb:pcache:idhash:32138-0!1!0!!en!2!edit=0 and timestamp 20120203101233 -->
<div class="printfooter">
Retrieved from "<a href="Bundle_org.eclipse.smila.objectstore.filesystem.html">http://wiki.eclipse.org/SMILA/Documentation/ObjectStore/Bundle_org.eclipse.smila.objectstore.filesystem</a>"</div>
                    <!-- end content -->
          <div class="visualClear"></div>
        </div>
      </div>


    </div>


	<!-- Yoink of toolbox for phoenix moved up -->


  </div>
  </div>
              <div id="clearFooter"/>
            <div id="footer" >  
	      <ul id="footernav">
                <li class="first"><a href="http://www.eclipse.org/">Home</a></li>
               	<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
	        <li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
		<li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
                <li><a href="http://www.eclipse.org/org/foundation/contact.php">Contact</a></li>
               	<li><a href="http://wiki.eclipse.org/Eclipsepedia:About" title="Eclipsepedia:About">About Eclipsepedia</a></li>
	      </ul>
              <span id="copyright">Copyright &copy; 2012 The Eclipse Foundation. All Rights Reserved</span>
	      <p id="footercredit">This page was last modified 15:41, 23 January 2012 by <a href="http://wiki.eclipse.org/User:Andreas.schank.attensity.com" title="User:Andreas.schank.attensity.com">A. Schank</a>. Based on work by <a href="http://wiki.eclipse.org/index.php?title=User:Nadine.auslaender.attensity.com&amp;action=edit" class="new" title="User:Nadine.auslaender.attensity.com"> </a>.</p>
	      <p id="footerviews">This page has been accessed 953 times.</p>
	    </div>

            <script type="text/javascript">
              var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
              document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
            </script>
            <script type="text/javascript">
              var pageTracker = _gat._getTracker("UA-910670-4");
              pageTracker._trackPageview();
            </script>
 
 	



		

<!-- 			<div class="visualClear"></div> -->
	
		<script type="text/javascript">if (window.runOnloadHook) runOnloadHook();</script>
</div>

<!-- Served in 0.096 secs. --></body></html>
