chemistry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From n...@apache.org
Subject svn commit: r1071656 [3/5] - in /incubator/chemistry/site/trunk: content/ content/images/ content/resources/ lib/ templates/
Date Thu, 17 Feb 2011 15:49:39 GMT
Added: incubator/chemistry/site/trunk/content/images/chemistry.svg
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/images/chemistry.svg?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/images/chemistry.svg (added)
+++ incubator/chemistry/site/trunk/content/images/chemistry.svg Thu Feb 17 15:49:37 2011
@@ -0,0 +1,296 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="800px" height="600px" viewBox="0 0 800 600" enable-background="new 0 0 800 600" xml:space="preserve">
+<rect fill="#FFFFFF" width="541.083" height="253.593"/>
+<rect y="253.593" width="541.083" height="253.593"/>
+<g>
+	<defs>
+		<filter id="Adobe_OpacityMaskFilter" filterUnits="userSpaceOnUse" x="34.036" y="189.104" width="101.678" height="14.93">
+			<feColorMatrix  type="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0"/>
+		</filter>
+	</defs>
+	<mask maskUnits="userSpaceOnUse" x="34.036" y="189.104" width="101.678" height="14.93" id="SVGID_1_">
+		<g filter="url(#Adobe_OpacityMaskFilter)">
+			
+				<radialGradient id="SVGID_2_" cx="-293.3999" cy="416.8125" r="97.3494" gradientTransform="matrix(0.5337 0 0 -0.0823 241.2666 230.4701)" gradientUnits="userSpaceOnUse">
+				<stop  offset="0" style="stop-color:#FFFFFF"/>
+				<stop  offset="0.0371" style="stop-color:#F1F1F1"/>
+				<stop  offset="0.2799" style="stop-color:#9D9D9D"/>
+				<stop  offset="0.4945" style="stop-color:#5A5A5A"/>
+				<stop  offset="0.6728" style="stop-color:#292929"/>
+				<stop  offset="0.8081" style="stop-color:#0B0B0B"/>
+				<stop  offset="0.8846" style="stop-color:#000000"/>
+			</radialGradient>
+			<ellipse fill="url(#SVGID_2_)" cx="84.679" cy="196.166" rx="51.958" ry="8.011"/>
+		</g>
+	</mask>
+	
+		<radialGradient id="SVGID_3_" cx="-293.0337" cy="392.4805" r="95.2363" gradientTransform="matrix(0.5337 0 0 -0.0784 241.2666 227.3388)" gradientUnits="userSpaceOnUse">
+		<stop  offset="0.1099" style="stop-color:#58585A"/>
+		<stop  offset="0.2486" style="stop-color:#5B5B5D"/>
+		<stop  offset="0.3687" style="stop-color:#666668"/>
+		<stop  offset="0.482" style="stop-color:#787879"/>
+		<stop  offset="0.5912" style="stop-color:#919192"/>
+		<stop  offset="0.6973" style="stop-color:#B1B1B2"/>
+		<stop  offset="0.7997" style="stop-color:#D8D8D9"/>
+		<stop  offset="0.8846" style="stop-color:#FFFFFF"/>
+	</radialGradient>
+	<ellipse opacity="0.1" mask="url(#SVGID_1_)" fill="url(#SVGID_3_)" cx="84.875" cy="196.568" rx="50.839" ry="7.465"/>
+	<defs>
+		<filter id="Adobe_OpacityMaskFilter_1_" filterUnits="userSpaceOnUse" x="53.217" y="192.814" width="63.316" height="7.507">
+			<feColorMatrix  type="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0"/>
+		</filter>
+	</defs>
+	<mask maskUnits="userSpaceOnUse" x="53.217" y="192.814" width="63.316" height="7.507" id="SVGID_4_">
+		<g filter="url(#Adobe_OpacityMaskFilter_1_)">
+			
+				<radialGradient id="SVGID_5_" cx="-486.7949" cy="1.7578" r="80.1294" gradientTransform="matrix(0.4179 0 0 -0.0541 287.6948 196.717)" gradientUnits="userSpaceOnUse">
+				<stop  offset="0.1648" style="stop-color:#FFFFFF"/>
+				<stop  offset="0.1716" style="stop-color:#FAFAFA"/>
+				<stop  offset="0.2538" style="stop-color:#C0C0C0"/>
+				<stop  offset="0.3381" style="stop-color:#8D8D8D"/>
+				<stop  offset="0.4227" style="stop-color:#626262"/>
+				<stop  offset="0.5077" style="stop-color:#3E3E3E"/>
+				<stop  offset="0.5932" style="stop-color:#232323"/>
+				<stop  offset="0.6794" style="stop-color:#0F0F0F"/>
+				<stop  offset="0.7667" style="stop-color:#040404"/>
+				<stop  offset="0.8571" style="stop-color:#000000"/>
+			</radialGradient>
+			<ellipse fill="url(#SVGID_5_)" cx="84.263" cy="196.622" rx="33.484" ry="4.335"/>
+		</g>
+	</mask>
+	
+		<radialGradient id="SVGID_6_" cx="-485.3291" cy="-114.9375" r="75.7915" gradientTransform="matrix(0.4179 0 0 -0.0495 287.6948 190.8789)" gradientUnits="userSpaceOnUse">
+		<stop  offset="0.1099" style="stop-color:#BFC0C1"/>
+		<stop  offset="0.3219" style="stop-color:#C2C3C4"/>
+		<stop  offset="0.5056" style="stop-color:#CDCECF"/>
+		<stop  offset="0.6787" style="stop-color:#DFDFE0"/>
+		<stop  offset="0.8444" style="stop-color:#F8F8F8"/>
+		<stop  offset="0.8846" style="stop-color:#FFFFFF"/>
+	</radialGradient>
+	<ellipse opacity="0.94" mask="url(#SVGID_4_)" fill="url(#SVGID_6_)" cx="84.875" cy="196.568" rx="31.658" ry="3.754"/>
+</g>
+<g>
+	<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="84.8745" y1="99.9561" x2="84.8745" y2="188.0469">
+		<stop  offset="0" style="stop-color:#0D0D0D"/>
+		<stop  offset="1" style="stop-color:#404040"/>
+	</linearGradient>
+	<path fill="url(#SVGID_7_)" d="M76.448,99.956v74.858c0,0.014-0.001,0.027-0.001,0.04c0,7.286,1.141,13.192,8.428,13.192
+		c7.285,0,8.428-5.906,8.428-13.192V99.956H76.448z"/>
+	<path d="M84.875,193.564c-7.689,0-13.944-6.256-13.944-13.945l0.002-78.913h-4.597c-0.414,0-0.75-0.336-0.75-0.75v-3.944
+		c0-0.414,0.336-0.75,0.75-0.75h37.079c0.414,0,0.75,0.336,0.75,0.75v3.944c0,0.414-0.336,0.75-0.75,0.75h-4.597v78.913
+		C98.818,187.309,92.563,193.564,84.875,193.564L84.875,193.564z M67.085,99.206h4.597c0.414,0,0.75,0.336,0.75,0.75v79.626
+		c-0.002,6.899,5.581,12.482,12.442,12.482c6.861,0,12.443-5.583,12.443-12.445V99.956c0-0.414,0.336-0.75,0.75-0.75h4.597v-2.444
+		H67.085V99.206L67.085,99.206z"/>
+	<path fill="#FECD1A" d="M95.446,32.188c0-13.567-21.04-13.567-21.04,0c0,2.804-0.294,5.771,0.112,8.555l0,0
+		c2.914,21.822,4.286,44.162,8.34,65.78c1.922-15.376,2.406-31.058,6.94-45.981C92.178,50.86,95.446,42.174,95.446,32.188"/>
+	<path fill="#622181" d="M120.181,42.909c-4.722-3.385-11.296-2.298-14.678,2.427c-12.813,17.89-18.847,41.476-17.435,63.445
+		C90.991,99.8,94.188,90.75,99.376,82.79c4.789-7.348,11.58-12.066,17.834-17.992c0.003-0.002,0.003-0.002,0.004-0.005
+		c2.132-2.023,3.694-4.831,5.395-7.204C125.993,52.864,124.905,46.293,120.181,42.909"/>
+	<path fill="#622181" d="M59.774,56.161c2.376-1.702,5.682-1.155,7.381,1.22c6.624,8.758,9.465,21.053,8.768,31.904
+		c-3.18-9.777-7.568-15.03-14.654-22.117c0,0-0.001,0-0.001-0.003c-1.062-1.004-1.911-2.417-2.713-3.623
+		C56.854,61.167,57.399,57.86,59.774,56.161"/>
+</g>
+<g>
+	<path d="M146.906,104.756l-5.462,15.266h-7.021l17.866-48.532h8.192l17.944,48.532h-7.256l-5.617-15.266H146.906z M164.148,99.859
+		l-5.149-13.969c-1.171-3.168-1.95-6.049-2.73-8.856h-0.156c-0.78,2.88-1.639,5.832-2.652,8.784l-5.149,14.041H164.148z"/>
+	<path d="M183.732,96.548c0-4.465-0.156-8.065-0.312-11.377h6.164l0.312,5.977h0.156c2.809-4.249,7.256-6.77,13.419-6.77
+		c9.129,0,15.994,7.129,15.994,17.714c0,12.529-8.27,18.722-17.164,18.722c-4.993,0-9.362-2.016-11.625-5.473h-0.155v18.938h-6.788
+		V96.548z M190.52,105.836c0,0.937,0.155,1.801,0.312,2.593c1.248,4.393,5.384,7.416,10.299,7.416
+		c7.255,0,11.469-5.472,11.469-13.465c0-6.984-3.979-12.961-11.235-12.961c-4.681,0-9.05,3.096-10.376,7.849
+		c-0.234,0.792-0.468,1.729-0.468,2.592V105.836z"/>
+	<path d="M252.699,111.669c0,3.024,0.156,5.977,0.624,8.353h-6.241l-0.547-4.393h-0.233c-2.106,2.736-6.164,5.185-11.547,5.185
+		c-7.646,0-11.547-4.969-11.547-10.009c0-8.425,8.114-13.033,22.703-12.961v-0.721c0-2.88-0.857-8.064-8.582-8.064
+		c-3.511,0-7.178,1.008-9.83,2.593l-1.561-4.177c3.121-1.872,7.646-3.097,12.405-3.097c11.547,0,14.355,7.273,14.355,14.258V111.669
+		z M246.067,102.236c-7.489-0.145-15.993,1.08-15.993,7.849c0,4.104,2.964,6.048,6.475,6.048c4.916,0,8.036-2.88,9.129-5.832
+		c0.233-0.648,0.39-1.368,0.39-2.017V102.236z"/>
+	<path d="M288.743,118.726c-1.794,0.864-5.773,2.088-10.845,2.088c-11.391,0-18.802-7.2-18.802-17.857
+		c0-10.729,7.958-18.506,20.284-18.506c4.058,0,7.646,0.937,9.519,1.801l-1.561,4.896c-1.638-0.864-4.213-1.656-7.958-1.656
+		c-8.659,0-13.341,5.904-13.341,13.177c0,8.064,5.617,13.033,13.107,13.033c3.9,0,6.476-0.937,8.426-1.729L288.743,118.726z"/>
+	<path d="M294.829,68.897h6.865v21.745h0.156c1.093-1.8,2.809-3.384,4.915-4.464c2.028-1.08,4.447-1.801,7.021-1.801
+		c5.071,0,13.186,2.881,13.186,14.905v20.738h-6.865v-20.018c0-5.616-2.263-10.369-8.738-10.369c-4.447,0-7.958,2.88-9.206,6.337
+		c-0.391,0.864-0.469,1.8-0.469,3.024v21.025h-6.865V68.897z"/>
+	<path d="M340.001,103.748c0.155,8.568,6.085,12.097,12.95,12.097c4.916,0,7.88-0.792,10.455-1.8l1.17,4.536
+		c-2.418,1.009-6.554,2.232-12.561,2.232c-11.625,0-18.568-7.129-18.568-17.642s6.709-18.794,17.71-18.794
+		c12.327,0,15.604,10.01,15.604,16.418c0,1.296-0.156,2.304-0.234,2.952H340.001z M360.129,99.212
+		c0.078-4.032-1.794-10.297-9.518-10.297c-6.943,0-9.986,5.904-10.532,10.297H360.129z"/>
+	<path d="M176.241,190.653c-2.185,1.008-7.1,2.16-13.497,2.16c-18.179,0-27.541-10.513-27.541-24.338
+		c0-16.562,12.795-25.778,28.711-25.778c6.163,0,10.845,1.152,12.951,2.16l-2.419,8.713c-2.418-0.937-5.773-1.801-9.986-1.801
+		c-9.44,0-16.773,5.257-16.773,16.058c0,9.721,6.241,15.842,16.852,15.842c3.589,0,7.567-0.721,9.908-1.584L176.241,190.653z"/>
+	<path d="M181.467,140.897h11.859v20.089h0.155c1.249-1.512,2.81-2.735,4.682-3.6c1.794-0.864,3.979-1.368,6.163-1.368
+		c7.568,0,13.342,4.824,13.342,15.409v20.594h-11.859v-19.37c0-4.608-1.716-7.776-6.163-7.776c-3.121,0-5.071,1.872-5.93,3.816
+		c-0.312,0.72-0.39,1.656-0.39,2.448v20.882h-11.859V140.897z"/>
+	<path d="M234.364,177.908c0.39,4.536,5.227,6.696,10.766,6.696c4.058,0,7.334-0.504,10.533-1.439l1.56,7.416
+		c-3.9,1.44-8.659,2.232-13.809,2.232c-12.951,0-20.363-6.984-20.363-18.002c0-8.929,6.008-18.793,19.271-18.793
+		c12.327,0,17.009,8.856,17.009,17.569c0,1.872-0.234,3.528-0.391,4.32H234.364z M248.329,170.42c0-2.664-1.248-7.129-6.71-7.129
+		c-4.993,0-7.021,4.177-7.333,7.129H248.329z"/>
+	<path d="M264.479,168.043c0-4.392-0.155-8.137-0.312-11.232h9.986l0.546,4.752h0.234c1.638-2.231,4.993-5.544,11.546-5.544
+		c4.916,0,8.816,2.304,10.455,5.977h0.156c1.404-1.872,3.12-3.24,4.915-4.249c2.106-1.151,4.446-1.728,7.256-1.728
+		c7.333,0,12.873,4.752,12.873,15.265v20.738h-11.547v-19.153c0-5.112-1.795-8.065-5.617-8.065c-2.731,0-4.682,1.729-5.462,3.816
+		c-0.312,0.792-0.468,1.944-0.468,2.809v20.594h-11.547v-19.729c0-4.465-1.717-7.489-5.461-7.489c-3.043,0-4.838,2.16-5.54,3.961
+		c-0.39,0.864-0.468,1.872-0.468,2.736v20.521h-11.547V168.043z"/>
+	<path d="M341.874,147.018c0,3.024-2.496,5.473-6.397,5.473c-3.745,0-6.241-2.448-6.163-5.473c-0.078-3.168,2.418-5.545,6.241-5.545
+		S341.795,143.85,341.874,147.018z M329.625,192.021v-35.211h11.859v35.211H329.625z"/>
+	<path d="M348.972,182.444c2.185,1.225,6.71,2.665,10.221,2.665c3.589,0,5.071-1.152,5.071-2.953c0-1.8-1.17-2.664-5.617-4.032
+		c-7.88-2.448-10.923-6.408-10.845-10.513c0-6.625,6.086-11.593,15.525-11.593c4.447,0,8.427,0.936,10.767,2.016l-2.106,7.561
+		c-1.716-0.863-4.993-2.016-8.27-2.016c-2.887,0-4.525,1.08-4.525,2.88c0,1.656,1.482,2.521,6.163,4.032
+		c7.256,2.305,10.299,5.688,10.377,10.873c0,6.553-5.617,11.449-16.54,11.449c-4.993,0-9.44-1.08-12.327-2.521L348.972,182.444z"/>
+	<path d="M394.222,147.233v9.577h8.504v8.064h-8.504v12.745c0,4.248,1.092,6.192,4.681,6.192c1.639,0,2.341-0.071,3.511-0.288
+		l0.078,8.281c-1.561,0.576-4.37,1.008-7.724,1.008c-3.823,0-7.021-1.296-8.895-3.097c-2.184-2.088-3.276-5.472-3.276-10.44v-14.401
+		h-5.071v-8.064h5.071v-6.625L394.222,147.233z"/>
+	<path d="M407.641,168.403c0-5.185-0.156-8.568-0.312-11.593h10.221l0.391,6.48h0.311c1.951-5.112,6.633-7.272,10.299-7.272
+		c1.092,0,1.639,0,2.498,0.144v10.369c-0.859-0.216-1.873-0.36-3.199-0.36c-4.369,0-7.334,2.16-8.115,5.545
+		c-0.154,0.72-0.232,1.584-0.232,2.448v17.857h-11.859V168.403z"/>
+	<path d="M445.635,156.811l5.695,17.281c0.623,2.088,1.404,4.681,1.871,6.553h0.234c0.547-1.872,1.17-4.536,1.717-6.553
+		l4.682-17.281h12.717l-8.895,23.186c-5.461,13.97-9.129,19.586-13.42,23.114c-4.135,3.312-8.504,4.465-11.469,4.824l-2.496-9.288
+		c1.482-0.217,3.355-0.864,5.15-1.873c1.793-0.863,3.744-2.592,4.914-4.392c0.391-0.504,0.625-1.08,0.625-1.584
+		c0-0.36-0.078-0.937-0.547-1.801l-13.965-32.187H445.635z"/>
+</g>
+<g>
+	<defs>
+		<filter id="Adobe_OpacityMaskFilter_2_" filterUnits="userSpaceOnUse" x="34.036" y="458.104" width="101.678" height="14.93">
+			<feColorMatrix  type="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0"/>
+		</filter>
+	</defs>
+	<mask maskUnits="userSpaceOnUse" x="34.036" y="458.104" width="101.678" height="14.93" id="SVGID_8_">
+		<g filter="url(#Adobe_OpacityMaskFilter_2_)">
+			
+				<radialGradient id="SVGID_9_" cx="-293.3999" cy="-2851.7188" r="97.3494" gradientTransform="matrix(0.5337 0 0 -0.0823 241.2666 230.4701)" gradientUnits="userSpaceOnUse">
+				<stop  offset="0" style="stop-color:#FFFFFF"/>
+				<stop  offset="0.0371" style="stop-color:#F1F1F1"/>
+				<stop  offset="0.2799" style="stop-color:#9D9D9D"/>
+				<stop  offset="0.4945" style="stop-color:#5A5A5A"/>
+				<stop  offset="0.6728" style="stop-color:#292929"/>
+				<stop  offset="0.8081" style="stop-color:#0B0B0B"/>
+				<stop  offset="0.8846" style="stop-color:#000000"/>
+			</radialGradient>
+			<ellipse fill="url(#SVGID_9_)" cx="84.679" cy="465.166" rx="51.958" ry="8.011"/>
+		</g>
+	</mask>
+	
+		<radialGradient id="SVGID_10_" cx="-293.0337" cy="-3038.6445" r="95.2363" gradientTransform="matrix(0.5337 0 0 -0.0784 241.2666 227.3388)" gradientUnits="userSpaceOnUse">
+		<stop  offset="0.1099" style="stop-color:#58585A"/>
+		<stop  offset="0.2486" style="stop-color:#5B5B5D"/>
+		<stop  offset="0.3687" style="stop-color:#666668"/>
+		<stop  offset="0.482" style="stop-color:#787879"/>
+		<stop  offset="0.5912" style="stop-color:#919192"/>
+		<stop  offset="0.6973" style="stop-color:#B1B1B2"/>
+		<stop  offset="0.7997" style="stop-color:#D8D8D9"/>
+		<stop  offset="0.8846" style="stop-color:#FFFFFF"/>
+	</radialGradient>
+	<ellipse opacity="0.1" mask="url(#SVGID_8_)" fill="url(#SVGID_10_)" cx="84.875" cy="465.568" rx="50.839" ry="7.465"/>
+	<defs>
+		<filter id="Adobe_OpacityMaskFilter_3_" filterUnits="userSpaceOnUse" x="53.217" y="461.814" width="63.316" height="7.507">
+			<feColorMatrix  type="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 1 0"/>
+		</filter>
+	</defs>
+	<mask maskUnits="userSpaceOnUse" x="53.217" y="461.814" width="63.316" height="7.507" id="SVGID_11_">
+		<g filter="url(#Adobe_OpacityMaskFilter_3_)">
+			
+				<radialGradient id="SVGID_12_" cx="-486.7949" cy="-4970.5156" r="80.1255" gradientTransform="matrix(0.4179 0 0 -0.0541 287.6948 196.717)" gradientUnits="userSpaceOnUse">
+				<stop  offset="0.1648" style="stop-color:#FFFFFF"/>
+				<stop  offset="0.1716" style="stop-color:#FAFAFA"/>
+				<stop  offset="0.2538" style="stop-color:#C0C0C0"/>
+				<stop  offset="0.3381" style="stop-color:#8D8D8D"/>
+				<stop  offset="0.4227" style="stop-color:#626262"/>
+				<stop  offset="0.5077" style="stop-color:#3E3E3E"/>
+				<stop  offset="0.5932" style="stop-color:#232323"/>
+				<stop  offset="0.6794" style="stop-color:#0F0F0F"/>
+				<stop  offset="0.7667" style="stop-color:#040404"/>
+				<stop  offset="0.8571" style="stop-color:#000000"/>
+			</radialGradient>
+			<ellipse fill="url(#SVGID_12_)" cx="84.263" cy="465.622" rx="33.484" ry="4.335"/>
+		</g>
+	</mask>
+	
+		<radialGradient id="SVGID_13_" cx="-485.3291" cy="-5549.2812" r="75.7915" gradientTransform="matrix(0.4179 0 0 -0.0495 287.6948 190.8789)" gradientUnits="userSpaceOnUse">
+		<stop  offset="0.1099" style="stop-color:#BFC0C1"/>
+		<stop  offset="0.3219" style="stop-color:#C2C3C4"/>
+		<stop  offset="0.5056" style="stop-color:#CDCECF"/>
+		<stop  offset="0.6787" style="stop-color:#DFDFE0"/>
+		<stop  offset="0.8444" style="stop-color:#F8F8F8"/>
+		<stop  offset="0.8846" style="stop-color:#FFFFFF"/>
+	</radialGradient>
+	<ellipse opacity="0.94" mask="url(#SVGID_11_)" fill="url(#SVGID_13_)" cx="84.875" cy="465.568" rx="31.658" ry="3.754"/>
+</g>
+<g>
+	<linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="84.8745" y1="368.9561" x2="84.8745" y2="457.0469">
+		<stop  offset="0" style="stop-color:#0D0D0D"/>
+		<stop  offset="1" style="stop-color:#404040"/>
+	</linearGradient>
+	<path fill="url(#SVGID_14_)" d="M76.448,368.956v74.858c0,0.014-0.001,0.027-0.001,0.04c0,7.286,1.141,13.192,8.428,13.192
+		c7.285,0,8.428-5.906,8.428-13.192v-74.898H76.448z"/>
+	<path fill="#FFFFFF" d="M84.875,462.564c-7.689,0-13.944-6.256-13.944-13.945l0.002-78.913h-4.597c-0.414,0-0.75-0.336-0.75-0.75
+		v-3.944c0-0.414,0.336-0.75,0.75-0.75h37.079c0.414,0,0.75,0.336,0.75,0.75v3.944c0,0.414-0.336,0.75-0.75,0.75h-4.597v78.913
+		C98.818,456.309,92.563,462.564,84.875,462.564L84.875,462.564z M67.085,368.206h4.597c0.414,0,0.75,0.336,0.75,0.75v79.626
+		c-0.002,6.899,5.581,12.482,12.442,12.482c6.861,0,12.443-5.583,12.443-12.445v-79.663c0-0.414,0.336-0.75,0.75-0.75h4.597v-2.444
+		H67.085V368.206L67.085,368.206z"/>
+	<path fill="#FECD1A" d="M95.446,301.188c0-13.567-21.04-13.567-21.04,0c0,2.804-0.294,5.771,0.112,8.555l0,0
+		c2.914,21.822,4.286,44.162,8.34,65.78c1.922-15.376,2.406-31.058,6.94-45.981C92.178,319.86,95.446,311.174,95.446,301.188"/>
+	<path fill="#622181" d="M120.181,311.909c-4.722-3.385-11.296-2.298-14.678,2.427c-12.813,17.89-18.847,41.476-17.435,63.445
+		c2.922-8.981,6.119-18.031,11.308-25.991c4.789-7.348,11.58-12.066,17.834-17.992c0.003-0.002,0.003-0.002,0.004-0.005
+		c2.132-2.023,3.694-4.831,5.395-7.204C125.993,321.864,124.905,315.293,120.181,311.909"/>
+	<path fill="#622181" d="M59.774,325.161c2.376-1.702,5.682-1.155,7.381,1.22c6.624,8.758,9.465,21.053,8.768,31.904
+		c-3.18-9.777-7.568-15.03-14.654-22.117c0,0-0.001,0-0.001-0.003c-1.062-1.004-1.911-2.417-2.713-3.623
+		C56.854,330.167,57.399,326.86,59.774,325.161"/>
+</g>
+<g>
+	<path fill="#FFFFFF" d="M146.906,373.756l-5.462,15.266h-7.021l17.866-48.532h8.192l17.944,48.532h-7.256l-5.617-15.266H146.906z
+		 M164.148,368.859l-5.149-13.969c-1.171-3.168-1.95-6.049-2.73-8.856h-0.156c-0.78,2.88-1.639,5.832-2.652,8.784l-5.149,14.041
+		H164.148z"/>
+	<path fill="#FFFFFF" d="M183.732,365.548c0-4.465-0.156-8.065-0.312-11.377h6.164l0.312,5.977h0.156
+		c2.809-4.249,7.256-6.77,13.419-6.77c9.129,0,15.994,7.129,15.994,17.714c0,12.529-8.27,18.722-17.164,18.722
+		c-4.993,0-9.362-2.016-11.625-5.473h-0.155v18.938h-6.788V365.548z M190.52,374.836c0,0.937,0.155,1.801,0.312,2.593
+		c1.248,4.393,5.384,7.416,10.299,7.416c7.255,0,11.469-5.472,11.469-13.465c0-6.984-3.979-12.961-11.235-12.961
+		c-4.681,0-9.05,3.096-10.376,7.849c-0.234,0.792-0.468,1.729-0.468,2.592V374.836z"/>
+	<path fill="#FFFFFF" d="M252.699,380.669c0,3.024,0.156,5.977,0.624,8.353h-6.241l-0.547-4.393h-0.233
+		c-2.106,2.736-6.164,5.185-11.547,5.185c-7.646,0-11.547-4.969-11.547-10.009c0-8.425,8.114-13.033,22.703-12.961v-0.721
+		c0-2.88-0.857-8.064-8.582-8.064c-3.511,0-7.178,1.008-9.83,2.593l-1.561-4.177c3.121-1.872,7.646-3.097,12.405-3.097
+		c11.547,0,14.355,7.273,14.355,14.258V380.669z M246.067,371.236c-7.489-0.145-15.993,1.08-15.993,7.849
+		c0,4.104,2.964,6.048,6.475,6.048c4.916,0,8.036-2.88,9.129-5.832c0.233-0.648,0.39-1.368,0.39-2.017V371.236z"/>
+	<path fill="#FFFFFF" d="M288.743,387.726c-1.794,0.864-5.773,2.088-10.845,2.088c-11.391,0-18.802-7.2-18.802-17.857
+		c0-10.729,7.958-18.506,20.284-18.506c4.058,0,7.646,0.937,9.519,1.801l-1.561,4.896c-1.638-0.864-4.213-1.656-7.958-1.656
+		c-8.659,0-13.341,5.904-13.341,13.177c0,8.064,5.617,13.033,13.107,13.033c3.9,0,6.476-0.937,8.426-1.729L288.743,387.726z"/>
+	<path fill="#FFFFFF" d="M294.829,337.897h6.865v21.745h0.156c1.093-1.8,2.809-3.384,4.915-4.464
+		c2.028-1.08,4.447-1.801,7.021-1.801c5.071,0,13.186,2.881,13.186,14.905v20.738h-6.865v-20.018c0-5.616-2.263-10.369-8.738-10.369
+		c-4.447,0-7.958,2.88-9.206,6.337c-0.391,0.864-0.469,1.8-0.469,3.024v21.025h-6.865V337.897z"/>
+	<path fill="#FFFFFF" d="M340.001,372.748c0.155,8.568,6.085,12.097,12.95,12.097c4.916,0,7.88-0.792,10.455-1.8l1.17,4.536
+		c-2.418,1.009-6.554,2.232-12.561,2.232c-11.625,0-18.568-7.129-18.568-17.642s6.709-18.794,17.71-18.794
+		c12.327,0,15.604,10.01,15.604,16.418c0,1.296-0.156,2.304-0.234,2.952H340.001z M360.129,368.212
+		c0.078-4.032-1.794-10.297-9.518-10.297c-6.943,0-9.986,5.904-10.532,10.297H360.129z"/>
+	<path fill="#FFFFFF" d="M176.241,459.653c-2.185,1.008-7.1,2.16-13.497,2.16c-18.179,0-27.541-10.513-27.541-24.338
+		c0-16.562,12.795-25.778,28.711-25.778c6.163,0,10.845,1.152,12.951,2.16l-2.419,8.713c-2.418-0.937-5.773-1.801-9.986-1.801
+		c-9.44,0-16.773,5.257-16.773,16.058c0,9.721,6.241,15.842,16.852,15.842c3.589,0,7.567-0.721,9.908-1.584L176.241,459.653z"/>
+	<path fill="#FFFFFF" d="M181.467,409.897h11.859v20.089h0.155c1.249-1.512,2.81-2.735,4.682-3.6
+		c1.794-0.864,3.979-1.368,6.163-1.368c7.568,0,13.342,4.824,13.342,15.409v20.594h-11.859v-19.37c0-4.608-1.716-7.776-6.163-7.776
+		c-3.121,0-5.071,1.872-5.93,3.816c-0.312,0.72-0.39,1.656-0.39,2.448v20.882h-11.859V409.897z"/>
+	<path fill="#FFFFFF" d="M234.364,446.908c0.39,4.536,5.227,6.696,10.766,6.696c4.058,0,7.334-0.504,10.533-1.439l1.56,7.416
+		c-3.9,1.44-8.659,2.232-13.809,2.232c-12.951,0-20.363-6.984-20.363-18.002c0-8.929,6.008-18.793,19.271-18.793
+		c12.327,0,17.009,8.856,17.009,17.569c0,1.872-0.234,3.528-0.391,4.32H234.364z M248.329,439.42c0-2.664-1.248-7.129-6.71-7.129
+		c-4.993,0-7.021,4.177-7.333,7.129H248.329z"/>
+	<path fill="#FFFFFF" d="M264.479,437.043c0-4.392-0.155-8.137-0.312-11.232h9.986l0.546,4.752h0.234
+		c1.638-2.231,4.993-5.544,11.546-5.544c4.916,0,8.816,2.304,10.455,5.977h0.156c1.404-1.872,3.12-3.24,4.915-4.249
+		c2.106-1.151,4.446-1.728,7.256-1.728c7.333,0,12.873,4.752,12.873,15.265v20.738h-11.547v-19.153c0-5.112-1.795-8.065-5.617-8.065
+		c-2.731,0-4.682,1.729-5.462,3.816c-0.312,0.792-0.468,1.944-0.468,2.809v20.594h-11.547v-19.729c0-4.465-1.717-7.489-5.461-7.489
+		c-3.043,0-4.838,2.16-5.54,3.961c-0.39,0.864-0.468,1.872-0.468,2.736v20.521h-11.547V437.043z"/>
+	<path fill="#FFFFFF" d="M341.874,416.018c0,3.024-2.496,5.473-6.397,5.473c-3.745,0-6.241-2.448-6.163-5.473
+		c-0.078-3.168,2.418-5.545,6.241-5.545S341.795,412.85,341.874,416.018z M329.625,461.021v-35.211h11.859v35.211H329.625z"/>
+	<path fill="#FFFFFF" d="M348.972,451.444c2.185,1.225,6.71,2.665,10.221,2.665c3.589,0,5.071-1.152,5.071-2.953
+		c0-1.8-1.17-2.664-5.617-4.032c-7.88-2.448-10.923-6.408-10.845-10.513c0-6.625,6.086-11.593,15.525-11.593
+		c4.447,0,8.427,0.936,10.767,2.016l-2.106,7.561c-1.716-0.863-4.993-2.016-8.27-2.016c-2.887,0-4.525,1.08-4.525,2.88
+		c0,1.656,1.482,2.521,6.163,4.032c7.256,2.305,10.299,5.688,10.377,10.873c0,6.553-5.617,11.449-16.54,11.449
+		c-4.993,0-9.44-1.08-12.327-2.521L348.972,451.444z"/>
+	<path fill="#FFFFFF" d="M394.222,416.233v9.577h8.504v8.064h-8.504v12.745c0,4.248,1.092,6.192,4.681,6.192
+		c1.639,0,2.341-0.071,3.511-0.288l0.078,8.281c-1.561,0.576-4.37,1.008-7.724,1.008c-3.823,0-7.021-1.296-8.895-3.097
+		c-2.184-2.088-3.276-5.472-3.276-10.44v-14.401h-5.071v-8.064h5.071v-6.625L394.222,416.233z"/>
+	<path fill="#FFFFFF" d="M407.641,437.403c0-5.185-0.156-8.568-0.312-11.593h10.221l0.391,6.48h0.311
+		c1.951-5.112,6.633-7.272,10.299-7.272c1.092,0,1.639,0,2.498,0.144v10.369c-0.859-0.216-1.873-0.36-3.199-0.36
+		c-4.369,0-7.334,2.16-8.115,5.545c-0.154,0.72-0.232,1.584-0.232,2.448v17.857h-11.859V437.403z"/>
+	<path fill="#FFFFFF" d="M445.635,425.811l5.695,17.281c0.623,2.088,1.404,4.681,1.871,6.553h0.234
+		c0.547-1.872,1.17-4.536,1.717-6.553l4.682-17.281h12.717l-8.895,23.186c-5.461,13.97-9.129,19.586-13.42,23.114
+		c-4.135,3.312-8.504,4.465-11.469,4.824l-2.496-9.288c1.482-0.217,3.355-0.864,5.15-1.873c1.793-0.863,3.744-2.592,4.914-4.392
+		c0.391-0.504,0.625-1.08,0.625-1.584c0-0.36-0.078-0.937-0.547-1.801l-13.965-32.187H445.635z"/>
+</g>
+</svg>

Added: incubator/chemistry/site/trunk/content/images/chemistry_black.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/images/chemistry_black.png?rev=1071656&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/chemistry/site/trunk/content/images/chemistry_black.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/chemistry/site/trunk/content/images/chemistry_black_trans.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/images/chemistry_black_trans.png?rev=1071656&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/chemistry/site/trunk/content/images/chemistry_black_trans.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/chemistry/site/trunk/content/images/chemistry_logo.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/images/chemistry_logo.png?rev=1071656&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/chemistry/site/trunk/content/images/chemistry_logo.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/chemistry/site/trunk/content/images/chemistry_logo_small.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/images/chemistry_logo_small.png?rev=1071656&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/chemistry/site/trunk/content/images/chemistry_logo_small.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/chemistry/site/trunk/content/images/chemistry_white.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/images/chemistry_white.png?rev=1071656&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/chemistry/site/trunk/content/images/chemistry_white.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/chemistry/site/trunk/content/images/chemistry_white_trans.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/images/chemistry_white_trans.png?rev=1071656&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/chemistry/site/trunk/content/images/chemistry_white_trans.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/chemistry/site/trunk/content/images/left-box-bottom.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/images/left-box-bottom.png?rev=1071656&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/chemistry/site/trunk/content/images/left-box-bottom.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/chemistry/site/trunk/content/images/left-box-right.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/images/left-box-right.png?rev=1071656&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/chemistry/site/trunk/content/images/left-box-right.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/chemistry/site/trunk/content/images/left-box-top.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/images/left-box-top.png?rev=1071656&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/chemistry/site/trunk/content/images/left-box-top.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/chemistry/site/trunk/content/index.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/index.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/index.mdtext (added)
+++ incubator/chemistry/site/trunk/content/index.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,38 @@
+Title: Index
+<a name="Index-WelcometoApacheChemistry"></a>
+# Welcome to Apache Chemistry
+
+Apache Chemistry provides open source implementations of the [Content Management Interoperability Services (CMIS)](http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis-spec-v1.0.html)
+ specification.
+
+The project currently consists of the following sub-projects:
+
+* [OpenCMIS](opencmis.html)
+ - CMIS client and server libraries for Java 
+* [cmislib](cmislib.html)
+ - CMIS client library for Python
+* [phpclient](phpclient.html)
+ - CMIS client library for PHP
+* [jsclient](jsclient.html)
+ - CMIS client library for JavaScript
+* [DotCMIS](dotcmis.html)
+ - CMIS client library for .NET
+
+Chemistry mailing list for questions and contributions:
+chemistry-dev@incubator.apache.org
+
+Important time-saving note for chemists: the Apache Chemistry project has
+nothing to do with chemistry or chemicals! The name comes from the
+inclusion of the C.M.I.S. letters, "CheMIStry".
+
+<a name="Index-Incubationdisclaimer"></a>
+## Incubation disclaimer
+
+Apache Chemistry is an effort undergoing [incubation](http://incubator.apache.org/)
+ at the [Apache Software Foundation  (ASF)|http://www.apache.org/]
+. Incubation is required of all newly accepted projects until a further
+review indicates that the infrastructure, communications, and decision
+making process have stabilized in a manner consistent with other successful
+ASF projects. While incubation status is not necessarily a reflection of
+the completeness or stability of the code, it does indicate that the
+project has yet to be fully endorsed by the ASF.

Added: incubator/chemistry/site/trunk/content/internal.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/internal.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/internal.mdtext (added)
+++ incubator/chemistry/site/trunk/content/internal.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,17 @@
+Title: Internal
+<a name="Internal-Internal"></a>
+### Internal
+
+This page lists some internal stuff:
+
+Chemistry started as a Java implementation. Later on, jsclient added a
+Javascript client and cmislib a Python libary. With OpenCMIS, another Java
+implementation joined the Chemistry project.
+With that, Chemistry (as an Incubator project) was resorted and became the
+umbrella for the different CMIS implementations, while OpenCMIS (becoming
+Chemistry's Java implementation) was merged with the former Chemistry Java
+implementation.
+
+The documents describe that (old) state and how the merging happened.
+
+{children}

Added: incubator/chemistry/site/trunk/content/navigation.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/navigation.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/navigation.mdtext (added)
+++ incubator/chemistry/site/trunk/content/navigation.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,60 @@
+Title: Navigation
+<a name="Navigation-Overview"></a>
+### Overview
+
+- [License](http://www.apache.org/licenses/LICENSE-2.0.html)
+- [Site Map](sitemap.html)
+- [Mailing List](http://mail-archives.apache.org/mod_mbox/incubator-chemistry-dev/)
+- [Issue Tracking](https://issues.apache.org/jira/browse/CMIS)
+
+<a name="Navigation-Search"></a>
+### Search
+{html}
+<DIV style="padding: 0px 0px 0px 20px;">
+<FORM action="http://www.google.com/search" method="get" style="font-size:
+10px;">
+<INPUT name="ie" type="hidden" value="UTF-8"></INPUT>
+<INPUT name="oe" type="hidden" value="UTF-8"></INPUT>
+  <INPUT maxlength="255" name="q" size="12" type="text" value></INPUT>
+  <INPUT name="btnG" type="submit" value="Search"></INPUT>
+  <INPUT name="domains" type="hidden"
+value="incubator.apache.org/chemistry"></INPUT>
+  <INPUT name="sitesearch" type="hidden"
+value="incubator.apache.org/chemistry"></INPUT>
+</FORM>
+</DIV>
+{html}
+
+<a name="Navigation-CMISforJava"></a>
+### CMIS for Java
+
+- [OpenCMIS](opencmis.html)
+- [Overview](opencmis-modules.html)
+- [Client API](opencmis-client-api.html)
+- [Source Code](https://svn.apache.org/repos/asf/incubator/chemistry/opencmis/trunk)
+- [JavaDoc](http://incubator.apache.org/chemistry/javadoc/index.html)
+
+<a name="Navigation-CMISforPython"></a>
+### CMIS for Python
+
+- [cmislib](cmislib.html)
+- [cmislib Documentation](http://incubator.apache.org/chemistry/cmislib-doc/)
+- [Source Code](https://svn.apache.org/repos/asf/incubator/chemistry/cmislib/trunk)
+
+<a name="Navigation-CMISforPHP"></a>
+### CMIS for PHP
+
+- [CMIS PHP Client](phpclient.html)
+- [Source Code](https://svn.apache.org/repos/asf/incubator/chemistry/phpclient/trunk)
+
+<a name="Navigation-CMISfor.NET"></a>
+### CMIS for .NET
+
+- [DotCMIS](dotcmis.html)
+- [Source Code](https://svn.apache.org/repos/asf/incubator/chemistry/dotcmis/trunk)
+
+<a name="Navigation-Sponsorship"></a>
+### Sponsorship
+
+- [Thanks](http://www.apache.org/foundation/thanks.html)
+- [Sponsoring Apache](http://www.apache.org/foundation/sponsorship.html)

Added: incubator/chemistry/site/trunk/content/opencmis-api-examples.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-api-examples.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-api-examples.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-api-examples.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,173 @@
+Title: OpenCMIS API Examples
+<a name="OpenCMISAPIExamples-OpenCMISAPIExamples"></a>
+# OpenCMIS API Examples
+
+Here are two code snippets performing the same operations. The first
+snippet uses the client API; the second snippet uses the provider API. As
+you can see the provider API is clunkier and more difficult to use but it
+gives you access to all CMIS extension points and provides more
+fine-grained control.
+
+<a name="OpenCMISAPIExamples-ClientAPI"></a>
+##### Client API
+
+[Client API JavaDoc](http://hudson.zones.apache.org/hudson/job/Chemistry%20-%20OpenCMIS%20-%20site/javadoc/org/apache/opencmis/client/api/package-summary.html)
+. See also [OpenCMIS Client API|OpenCMIS Client API]
+.
+
+    Map<String, String> parameters = new HashMap<String, String>();
+    parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
+    parameters.put(SessionParameter.ATOMPUB_URL,
+        "http://localhost:8080/opencmis/atom");
+    parameters.put(SessionParameter.REPOSITORY_ID, "A1");
+    parameters.put(SessionParameter.USER, "test");
+    parameters.put(SessionParameter.PASSWORD, "test");
+
+    // create the session
+    Session session =
+        SessionFactoryImpl.newInstance().createSession(parameters);
+
+    // get repository info
+    RepositoryInfo repInfo = session.getRepositoryInfo();
+    System.out.println("Repository name: " + repInfo.getName());
+
+    // get root folder and its path
+    Folder rootFolder = session.getRootFolder();
+    String path = rootFolder.getPath();
+    System.out.println("Root folder path: " + path);
+
+    // list root folder children
+    ItemIterable<CmisObject> children = rootFolder.getChildren();
+    for (CmisObject object : children) {
+      System.out.println("---------------------------------");
+      System.out.println("	Id:		  " + object.getId());
+      System.out.println("	Name:		  " + object.getName());
+      System.out.println("	Base Type:	  " + object.getBaseTypeId());
+      System.out.println("	Property 'bla':   " +
+    object.getPropertyValue("bla"));
+    
+      ObjectType type = object.getType();
+      System.out.println("	Type Id:	  " + type.getId());
+      System.out.println("	Type Name:	  " + type.getDisplayName());
+      System.out.println("	Type Query Name:  " + type.getQueryName());
+    
+      AllowableActions actions = object.getAllowableActions();
+      System.out.println("	canGetProperties: " +
+        actions.getAllowableActions().contains(Action.CAN_GET_PROPERTIES));
+      System.out.println("	canDeleteObject:  " +
+        actions.getAllowableActions().contains(Action.CAN_DELETE_OBJECT));
+    }
+    
+    // get an object
+    ObjectId objectId = session.createObjectId("100");
+    CmisObject object = session.getObject(objectId);
+    
+    if (object instanceof Folder) {
+      Folder folder = (Folder) object;
+      System.out.println("Is root folder: " + folder.isRootFolder());
+    }
+    
+    if (object instanceof Document) {
+      Document document = (Document) object;
+      ContentStream content = document.getContentStream();
+      System.out.println("Document MIME type: " + content.getMimeType());
+    }
+
+<a name="OpenCMISAPIExamples-ClientBindingAPI"></a>
+##### Client Binding API
+
+[Client Binding API JavaDoc](http://hudson.zones.apache.org/hudson/job/Chemistry%20-%20OpenCMIS%20-%20site/javadoc/org/apache/opencmis/commons/provider/package-summary.html)
+. See also [OpenCMIS Client Binding API|OpenCMIS Client Bindings]
+.
+
+        Map<String, String> parameters = new HashMap<String, String>();
+        parameters.put(SessionParameter.ATOMPUB_URL,
+        "http://localhost:8080/opencmis/atom");
+        parameters.put(SessionParameter.USER, "test");
+        parameters.put(SessionParameter.PASSWORD, "test");
+
+        // create provider
+        CmisBinding binding =
+        CmisBindingFactory.newInstance().createCmisAtomPubBinding(parameters);
+
+        String repositoryId = "A1";
+
+        // get repository info
+        RepositoryInfo repInfo =
+        binding.getRepositoryService().getRepositoryInfo(repositoryId, null);
+        System.out.println("Repository name: " + repInfo.getName());
+
+        // get root folder and its path
+        ObjectData rootFolder = binding.getObjectService().getObject(repositoryId,
+        repInfo.getRootFolderId(), "*",
+              true, IncludeRelationships.NONE, null, false, false, null);
+
+        PropertyString pathProperty = (PropertyString)
+        rootFolder.getProperties().getProperties().get(PropertyIds.PATH);
+        String path = pathProperty.getFirstValue();
+        System.out.println("Root folder path: " + path);
+
+        // list root folder children
+        ObjectInFolderList childrenList =
+        binding.getNavigationService().getChildren(repositoryId,
+              repInfo.getRootFolderId(), "*", null, true,
+        IncludeRelationships.NONE, null, false,
+              BigInteger.valueOf(10000), BigInteger.ZERO, null);
+
+        for (ObjectInFolderData object : childrenList.getObjects()) {
+           System.out.println("---------------------------------");
+
+           PropertyString nameProperty = (PropertyString)
+        object.getObject().getProperties().getProperties().get(
+                 PropertyIds.NAME);
+           PropertyString blaProperty = (PropertyString)
+        object.getObject().getProperties().getProperties().get("bla");
+           PropertyId typeProperty = (PropertyId)
+        object.getObject().getProperties().getProperties().get(
+                 PropertyIds.OBJECT_TYPE_ID);
+
+           System.out.println("  Id:		" +
+        object.getObject().getId());
+           System.out.println("  Name:		" +
+        nameProperty.getFirstValue());
+           System.out.println("  Base Type:	" +
+        object.getObject().getBaseTypeId());
+           System.out.println("  Property 'bla':	" + (blaProperty == null ?
+        null : blaProperty.getFirstValue()));
+
+           TypeDefinition type =
+        binding.getRepositoryService().getTypeDefinition(repositoryId,
+                 typeProperty.getFirstValue(), null);
+           System.out.println("  Type Id:		" + type.getId());
+           System.out.println("  Type Name:	" + type.getDisplayName());
+           System.out.println("  Type Query Name:	" + type.getQueryName());
+
+           AllowableActions actions =
+        object.getObject().getAllowableActions();
+           System.out.println("  canGetProperties: "
+                 +
+        actions.getAllowableActions().contains(Action.CAN_GET_PROPERTIES));
+           System.out.println("  canDeleteObject:	"
+                 +
+        actions.getAllowableActions().contains(Action.CAN_DELETE_OBJECT));
+        }
+
+        // get an object
+        String objectId = "100";
+
+        ObjectData object = binding.getObjectService().getObject(repositoryId,
+        objectId, "*", false,
+              IncludeRelationships.NONE, null, false, false, null);
+
+        if (object.getBaseTypeId() == BaseTypeId.CMIS_FOLDER) {
+           System.out.println("Is root folder: " +
+        (repInfo.getRootFolderId().equals(object.getId())));
+        }
+
+        if (object.getBaseTypeId() == BaseTypeId.CMIS_DOCUMENT) {
+           ContentStream content =
+        binding.getObjectService().getContentStream(repositoryId, objectId, null,
+        null,
+                 null, null);
+           System.out.println("Document MIME type: " + content.getMimeType());
+        }

Added: incubator/chemistry/site/trunk/content/opencmis-browser.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-browser.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-browser.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-browser.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,25 @@
+Title: OpenCMIS Browser
+<a name="OpenCMISBrowser-OpenCMISBrowser"></a>
+# OpenCMIS Browser
+
+The CMIS Browser is a simple web based tool to browse CMIS enabled
+repositories that support the AtomPub binding. It sits between the web
+browser of the end-user and the CMIS repository. It applies stylesheets to
+the Atom entries and feeds that repository returns and creates HTML pages
+that enable the end-user to navigate through the repository.
+
+The CMIS Browser consists of a small WAR file that doesn't require any
+configuration. Deploy it to a servlet engine and type
+*http://<host>/<context>/browse* in your web browser. Enter the URL of
+the AtomPub service document into the input box and start browsing.
+
+
+<a name="OpenCMISBrowser-BuildandDeploytheCMISBrowser"></a>
+## Build and Deploy the CMIS Browser
+
+1. [Build OpenCMIS](opencmis-how-to-build.html)
+.
+1. A ready-to-use WAR file should now exist in
+*/chemistry-opencmis-test/chemistry-opencmis-test-browser-app/target*.
+1. Deploy the WAR file to your favorite servlet engine.
+

Added: incubator/chemistry/site/trunk/content/opencmis-client-api.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-client-api.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-client-api.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-client-api.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,191 @@
+Title: OpenCMIS Client API
+<a name="OpenCMISClientAPI-OpenCMISClientAPI"></a>
+# OpenCMIS Client API
+
+{info:title=Table of Content}
+* [Sessions](#OpenCMISClientAPI-Sessions)
+* [Example Code](#OpenCMISClientAPI-ExampleCode)
+   * [Session Creation - AtomPub Binding](#OpenCMISClientAPI-SessionCreation-AtomPubBinding)
+   * [Session Creation - Web Services Binding](#OpenCMISClientAPI-SessionCreation-WebServicesBinding)
+   * [Reading Objects - Root Collection](#OpenCMISClientAPI-ReadingObjects-RootCollection)
+   * [Reading Properties - Single Property](#OpenCMISClientAPI-ReadingProperties-SingleProperty)
+   * [Reading Properties - All Properties](#OpenCMISClientAPI-ReadingProperties-AllProperties)
+{info}
+
+The OpenCMIS client layer provides an object oriented interface for easy
+consumption of the underlying CMIS related layers. In addition to the CMIS
+specification the OpenCMIS client layer introduces a session concept which
+easily enables applications to get control on the client side cache
+behavior.
+
+The client layer consists of a client interface, common interfaces and a
+runtime implementation. The runtime maps the client interface to the
+bindings layer and implements the session cache. All parts are exposed by
+following packages:
+
+<table>
+<tr><th> Package </th><th> Artifact </th><th> Description </th></tr>
+<tr><td> org.apache.chemistry.opencmis.client.api </td><td> chemistry-opencmis-client-api
+</td><td> Main interfaces of the client API </td></tr>
+<tr><td> org.apache.chemistry.opencmis.commons.api </td><td>
+chemistry-opencmis-commons-api </td><td> Interfaces and classes shared by client
+and client bindings API </td></tr>
+<tr><td> org.apache.chemistry.opencmis.client.runtime </td><td>
+chemistry-opencmis-client-impl </td><td> Implementation classes of client API
+including a default implementation of the SessionFactory </td></tr>
+</table>
+
+The following UML diagram illustrates the main classes of the client API:
+
+!OpenCMIS Client API Class Diagram.png!
+
+* *SessionFactory* This interface provides the entry point into the client
+API and is responsible to create a session object. Additionally it gives
+access to all repository info exposed by a CMIS client binding. The runtime
+provides a default implementation for the SessionFactory interface.
+* *Session* This is the main interface an application has to work with. A
+session object is related to a CMIS service client binding and is attached
+to exact one repository. All data that is received through the session
+interface can be cached in the session object in dependency of the concrete
+implementation which is behind.
+* *Repository* Wrapper interface for the CMIS RepositoryInfo service.
+* *CmisObject* The CmisObject interface represents the CMIS domain object.
+* *ObjectType* This interface is base for all CMIS domain types like
+FolderType, DocumentType, PolicyType and RelationshipType. The derived
+interfaces are not shown in the diagram.
+* *Folder* This interface represents the CMIS folder object.
+* *Document* This interface represents the CMIS document object.
+* *ContentStream* this interface wraps the content stream of a CMIS
+document.
+* *Policy* This interface represents the CMIS policy object.
+* *Relationship* This interface represents the CMIS relationship object.
+
+<a name="OpenCMISClientAPI-Sessions"></a>
+# Sessions
+
+OpenCMIS' central entry point to a CMIS repository is a session. A session
+controls settings and caches that used across multiple calls and provides
+access to all CMIS operations and objects.
+In order to create a session, the SessionFactory needs a set parameters
+(see [OpenCMIS Session Parameters](opencmis-session-parameters.html)
+).
+
+<a name="OpenCMISClientAPI-ExampleCode"></a>
+# Example Code
+
+<a name="OpenCMISClientAPI-SessionCreation-AtomPubBinding"></a>
+## Session Creation - AtomPub Binding
+
+<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Opening a Atom Pub Connection</B></DIV><DIV class="codeContent panelContent">
+    // default factory implementation of client runtime
+    SessionFactory f = SessionFactoryImpl.newInstance();
+    Map<String, String> parameter = new HashMap<String, String>();
+    
+    // user credentials
+    parameter.put(SessionParameter.USER, "Otto");
+    parameter.put(SessionParameter.PASSWORD, "****");
+    
+    // connection settings
+    parameter.put(SessionParameter.ATOMPUB_URL,
+"http://<host>:<port>/cmis/atom");
+    parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
+    parameter.put(SessionParameter.REPOSITORY_ID, "myRepository");
+    
+    // session locale
+    parameter.put(SessionParameter.LOCALE_ISO3166_COUNTRY, "");
+    parameter.put(SessionParameter.LOCALE_ISO639_LANGUAGE, "de");
+    
+    // create session
+    Session s = f.createSession(parameter);
+
+
+<a name="OpenCMISClientAPI-SessionCreation-WebServicesBinding"></a>
+## Session Creation - Web Services Binding
+
+<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Opening a Web Services Connection</B></DIV><DIV class="codeContent panelContent">
+    // default factory implementation of client runtime
+    SessionFactory f = SessionFactoryImpl.newInstance();
+    Map<String, String> parameter = new HashMap<String, String>();
+    
+    // user credentials
+    parameter.put(SessionParameter.USER, "Otto");
+    parameter.put(SessionParameter.PASSWORD, "****");
+    
+    // connection settings
+    parameter.put(SessionParameter.BINDING_TYPE,
+BindingType.WEBSERVICES.value());
+    parameter.put(SessionParameter.REPOSITORY_ID, "myRepository");
+    parameter.put(SessionParameter.WEBSERVICES_ACL_SERVICE,
+"http://<host>:<port>/cmis/services/ACLService?wsdl");
+    parameter.put(SessionParameter.WEBSERVICES_DISCOVERY_SERVICE,
+"http://<host>:<port>/cmis/services/DiscoveryService?wsdl");
+    parameter.put(SessionParameter.WEBSERVICES_MULTIFILING_SERVICE,
+"http://<host>:<port>/cmis/services/MultiFilingService?wsdl");
+    parameter.put(SessionParameter.WEBSERVICES_NAVIGATION_SERVICE,
+"http://<host>:<port>/cmis/services/NavigationService?wsdl");
+    parameter.put(SessionParameter.WEBSERVICES_OBJECT_SERVICE,
+"http://<host>:<port>/cmis/services/ObjectService?wsdl");
+    parameter.put(SessionParameter.WEBSERVICES_POLICY_SERVICE,
+"http://<host>:<port>/cmis/services/PolicyService?wsdl");
+    parameter.put(SessionParameter.WEBSERVICES_RELATIONSHIP_SERVICE,
+"http://<host>:<port>/cmis/services/RelationshipService?wsdl");
+    parameter.put(SessionParameter.WEBSERVICES_REPOSITORY_SERVICE,
+"http://<host>:<port>/cmis/services/RepositoryService?wsdl");
+    parameter.put(SessionParameter.WEBSERVICES_VERSIONING_SERVICE,
+"http://<host>:<port>/cmis/services/VersioningService?wsdl");
+    
+    // session locale
+    parameter.put(SessionParameter.LOCALE_ISO3166_COUNTRY, "");
+    parameter.put(SessionParameter.LOCALE_ISO639_LANGUAGE, "de");
+    parameter.put(SessionParameter.LOCALE_VARIANT, "");
+    
+    // create session
+    Session s = f.createSession(parameter);
+
+
+<a name="OpenCMISClientAPI-ReadingObjects-RootCollection"></a>
+## Reading Objects - Root Collection
+
+<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Reading the Root Collection</B></DIV><DIV class="codeContent panelContent">
+    Folder root = this.session.getRootFolder();
+    
+    ItemIterable<CmisObject> pl = root.getChildren();
+    
+    for (CmisObject o : pl) {
+      System.out.println(o.getName());
+    }
+
+
+<a name="OpenCMISClientAPI-ReadingProperties-SingleProperty"></a>
+## Reading Properties - Single Property
+
+<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Reading a Single Property</B></DIV><DIV class="codeContent panelContent">
+    ObjectId id = this.session.createObjectId("4711");
+    Document document = (Document) this.session.getObject(id);
+    Property<String> p = document.getProperty(PropertyIds.OBJECT_ID);
+    
+    String s = p.getValue();
+
+
+<a name="OpenCMISClientAPI-ReadingProperties-AllProperties"></a>
+## Reading Properties - All Properties
+
+<DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Reading all Properties</B></DIV><DIV class="codeContent panelContent">
+    ObjectId id = this.session.createObjectId("4711");
+    Document document = (Document) this.session.getObject(id);
+    List<Property<?>> l = document.getProperties();
+    Iterator<Property<?>> i = l.iterator();
+    while (i.hasNext()) {
+      Property<?> p = i.next();
+      Object value = p.getValue();
+      PropertyType t = p.getType();
+    
+      switch (t) {
+        case INTEGER:
+          Integer n = (Integer) value;
+          System.out.println(p.getName() + " = " + n);
+          break;
+        case STRING:
+     [...]
+    }
+

Added: incubator/chemistry/site/trunk/content/opencmis-client-bindings.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-client-bindings.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-client-bindings.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-client-bindings.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,165 @@
+Title: OpenCMIS Client Bindings
+<a name="OpenCMISClientBindings-OpenCMISClientBindings"></a>
+# OpenCMIS Client Bindings
+
+The OpenCMIS client bindings layer hides the CMIS AtomPub and Web Services
+bindings and provides an interface that is very similar to the [CMIS domain model](http://docs.oasis-open.org/cmis/CMIS/v1.0/cs01/cmis-spec-v1.0.html#_Toc243905381)
+. The services, operations, parameters, and structures are named after the
+CMIS domain model and behave as described in the CMIS specification.
+
+The primary objective of the client bindings layer is to be complete,
+covering all CMIS operations and extension points. The result is a somewhat
+clunky interface. The [OpenCMIS Client API](opencmis-client-api.html)
+ sits on top of the provider layer and exposes a nicer and simpler to use
+interface. It is the better choice for most applications.
+
+A connection to a CMIS repository is represented by a [*CmisBinding*](http://incubator.apache.org/chemistry/javadoc/org/apache/chemistry/opencmis/commons/spi/CmisBinding.html)
+ object. Such an object can be created by the [*CmisBindingFactory*|http://incubator.apache.org/chemistry/javadoc/org/apache/chemistry/opencmis/client/bindings/CmisBindingFactory.html]
+. The factory provides three main methods, one for each binding and third
+one for a local connection (same JVM), that require binding specific
+connection information. The created *CmisBinding* object exposes a
+binding agnostic interface.
+
+*CmisBinding* is the entry point to the CMIS services and a few utility
+operations. It contains a transparent cache for repository infos and type
+definitions. The object is serializable, although dehydrating can be
+expensive. *CmisBinding* is thread-safe.
+
+The *get*Service()* methods provide access to the CMIS services. Some
+service operations take provider layer specific objects. These objects
+should be created with the [*BindingsObjectFactory*](http://incubator.apache.org/chemistry/javadoc/org/apache/chemistry/opencmis/commons/spi/BindingsObjectFactory.html)
+. This factory can be obtained through the *getObjectFactory()* method of
+the *CmisBinding* object.
+
+Please refer to the OpenCMIS Commons [JavaDoc](http://incubator.apache.org/chemistry/javadoc/)
+ and OpenCMIS Client Binding [JavaDoc|http://incubator.apache.org/chemistry/javadoc/]
+ for more details on the interfaces.
+
+<a name="OpenCMISClientBindings-SampleCode"></a>
+## Sample Code
+
+<a name="OpenCMISClientBindings-CreatinganAtomPubbindinginstance"></a>
+### Creating an AtomPub binding instance
+
+The AtomPub binding requires the URL of the CMIS service document. HTTP
+basic authentication is enabled by default and a username and a password
+have to be provided.
+
+{code:java}
+Map<String, String> parameters = new HashMap<String, String>();
+
+parameters.put(SessionParameter.USER, user);
+parameters.put(SessionParameter.PASSWORD, password);
+
+parameters.put(SessionParameter.ATOMPUB_URL, url); // service document URL
+
+CmisBindingFactory factory = CmisBindingFactory.newInstance();
+CmisBinding binding = factory.createCmisAtomPubBinding(parameters);
+
+    
+    
+    h3. Creating a Web Services binding instance
+    
+    The Web Services binding requires a WSDL URL for each CMIS service. This
+might the same the URL for all services. WS-Security (UsernameToken) is
+enabled by default and a username and a password have to be provided.
+    
+    {code:java}
+    Map<String, String> parameters = new HashMap<String, String>();
+    
+    parameters.put(SessionParameter.USER, username);
+    parameters.put(SessionParameter.PASSWORD, password);
+    
+    parameters.put(SessionParameter.WEBSERVICES_REPOSITORY_SERVICE,
+repositoryServiceWsdlUrl);
+    parameters.put(SessionParameter.WEBSERVICES_NAVIGATION_SERVICE,
+navigationServiceWsdlUrl);
+    parameters.put(SessionParameter.WEBSERVICES_OBJECT_SERVICE,
+objectServiceWsdlUrl);
+    parameters.put(SessionParameter.WEBSERVICES_VERSIONING_SERVICE,
+versioningServiceWsdlUrl);
+    parameters.put(SessionParameter.WEBSERVICES_DISCOVERY_SERVICE,
+discoveryServiceWsdlUrl);
+    parameters.put(SessionParameter.WEBSERVICES_RELATIONSHIP_SERVICE,
+relationshipServiceWsdlUrl);
+    parameters.put(SessionParameter.WEBSERVICES_MULTIFILING_SERVICE,
+multiFilingServiceWsdlUrl);
+    parameters.put(SessionParameter.WEBSERVICES_POLICY_SERVICE,
+policyServiceWsdlUrl);
+    parameters.put(SessionParameter.WEBSERVICES_ACL_SERVICE,
+aclServiceWsdlUrl);
+    
+    CmisBindingFactory factory = CmisBindingFactory.newInstance();
+    CmisBinding binding = factory.createCmisWebServicesBinding(parameters);
+
+
+
+<a name="OpenCMISClientBindings-CreatingaLocalbindinginstance"></a>
+### Creating a Local binding instance
+
+The Local binding connects to an OpenCMIS server in the same JVM. The
+server factory class name has to be supplied.
+
+{code:java}
+Map<String, String> parameters = new HashMap<String, String>();
+
+parameters.put(SessionParameter.USER, user);
+parameters.put(SessionParameter.PASSWORD, password);
+
+parameters.put(SessionParameter.LOCAL_FACTORY, factoryClassName);
+
+CmisBindingFactory factory = CmisBindingFactory.newInstance();
+CmisBinding binding = factory.createCmisLocalBinding(parameters);
+
+    
+    
+    h3. Getting an Object
+    
+    The following snippet gets the name of the object "myObject" in repository
+"myRepository". The parameters of getObject() can be found in the CMIS
+specification.
+    
+    {code:java}
+    CmisBinding binding = ...
+    
+    ObjectData myObject = binding.getObjectService().getObject("myRepository",
+"myObject",
+       "*", true, IncludeRelationships.BOTH, "cmis:none", true, true, null);
+    
+    PropertiesData properties = myObject.getProperties();
+    PropertyData<String> nameProperty =
+properties.getProperties().get(PropertyIds.NAME);
+    String name = nameProperty.getFirstValue();
+
+
+<a name="OpenCMISClientBindings-CustomAuthenticationProvider"></a>
+## Custom Authentication Provider
+
+OpenCMIS supports HTTP basic authentication for the AtomPub binding and
+WS-Security (UsernameToken) for the Web Services binding out of the box.
+Other authentication methods can be added by implementing a custom
+authentication provider.
+
+Such a provider must extend
+*org.apache.chemistry.opencmis.client.provider.spi.AbstractAuthenticationProvider*
+and overwrite the methods *getHTTPHeaders* and *getSOAPHeaders*. See
+JavaDoc for details.
+
+The session parameter *SessionParameter.AUTHENTICATION_PROVIDER_CLASS*
+must be set to the fully qualified class name in order to active the
+authentication provider before the session is created.
+
+{code:java}
+Map<String, String> parameters = new HashMap<String, String>();
+
+parameters.put(SessionParameter.AUTHENTICATION_PROVIDER_CLASS,
+"org.example.opencmis.MyAuthenticationProvider");
+parameters.put("org.example.opencmis.user", "cmisuser"); //
+MyAuthenticationProvider can get and evaluate this
+parameters.put("org.example.opencmis.secret", "b3BlbmNtaXMgdXNlcg==");
+
+parameters.put(SessionParameter.ATOMPUB_URL, url); // service document URL
+
+CmisBindingFactory factory = CmisBindingFactory.newInstance();
+CmisBinding provider = factory.createCmisAtomPubBinding(parameters);
+

Added: incubator/chemistry/site/trunk/content/opencmis-cookbook.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-cookbook.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-cookbook.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-cookbook.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,655 @@
+Title: OpenCMIS Cookbook
+<a name="OpenCMISCookbook-OpenCMISCookbook"></a>
+# OpenCMIS Cookbook
+
+*Find and share OpenCMIS best practices here.*
+
+   * [CMIS Client](#OpenCMISCookbook-CMISClient)
+      * [Connecting to a CMIS repository](#OpenCMISCookbook-ConnectingtoaCMISrepository)
+         * [Connecting to a CMIS repository by AtomPub](#OpenCMISCookbook-ConnectingtoaCMISrepositorybyAtomPub)
+         * [Connecting to SharePoint 2010](#OpenCMISCookbook-ConnectingtoSharePoint2010)
+            * [AtomPub](#OpenCMISCookbook-AtomPub)
+            * [Web Services](#OpenCMISCookbook-WebServices)
+         * [Using Cookies](#OpenCMISCookbook-UsingCookies)
+      * [Understanding the client side cache](#OpenCMISCookbook-Understandingtheclientsidecache)
+      * [Getting the id of an object from its path](#OpenCMISCookbook-Gettingtheidofanobjectfromitspath)
+      * [Reading a file](#OpenCMISCookbook-Readingafile)
+      * [Showing a folder's items, with results paging](#OpenCMISCookbook-Showingafolder'sitems,withresultspaging)
+      * [Retrieving Document objects from query results](#OpenCMISCookbook-RetrievingDocumentobjectsfromqueryresults)
+      * [Getting CMIS extensions](#OpenCMISCookbook-GettingCMISextensions)
+      * [Connecting from a .Net client via the Web Services binding](#OpenCMISCookbook-Connectingfroma.NetclientviatheWebServicesbinding)
+      * [Reading metadata and content from a CMIS repository](#OpenCMISCookbook-ReadingmetadataandcontentfromaCMISrepository)
+      * [Creating and updating CMIS objects](#OpenCMISCookbook-CreatingandupdatingCMISobjects)
+      * [Using the query parser](#OpenCMISCookbook-Usingthequeryparser)
+   * [CMIS Server](#OpenCMISCookbook-CMISServer)
+      * [Adding CMIS extensions](#OpenCMISCookbook-AddingCMISextensions)
+      * [Using the server framework with Spring](#OpenCMISCookbook-UsingtheserverframeworkwithSpring)
+
+
+<a name="OpenCMISCookbook-CMISClient"></a>
+## CMIS Client
+
+<a name="OpenCMISCookbook-ConnectingtoaCMISrepository"></a>
+### Connecting to a CMIS repository
+
+<a name="OpenCMISCookbook-ConnectingtoaCMISrepositorybyAtomPub"></a>
+#### Connecting to a CMIS repository by AtomPub
+
+    // Default factory implementation of client runtime.
+    SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
+    Map<String, String> parameter = new HashMap<String, String>();
+
+    // User credentials.
+    parameter.put(SessionParameter.USER, "user");
+    parameter.put(SessionParameter.PASSWORD, "password");
+    
+    // Connection settings.
+    parameter.put(SessionParameter.ATOMPUB_URL,
+        "http://localhost:8080/alfresco/service/cmis"); // URL to your CMIS server.
+    // parameter.put(SessionParameter.REPOSITORY_ID, "myRepository"); // Only necessary if there is more than one repository.
+    parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
+
+    // Session locale.
+    parameter.put(SessionParameter.LOCALE_ISO3166_COUNTRY, "");
+    parameter.put(SessionParameter.LOCALE_ISO639_LANGUAGE, "en");
+    parameter.put(SessionParameter.LOCALE_VARIANT, "US");
+    
+    // Create session.
+    Session session = null;
+    try {
+	    // This supposes only one repository is available at the URL.
+	    Repository soleRepository =
+            sessionFactory.getRepositories(parameter).get(0);
+	    session = soleRepository.createSession();
+    }
+    catch(CmisConnectionException e) { 
+	    // The server is unreachable
+    }
+    catch(CmisRuntimeException e) {
+	    // The user/password have probably been rejected by the server.
+    }
+
+    
+    
+    h4. Connecting to SharePoint 2010
+    
+    While connecting via AtomPub is straight forward, connecting via Web
+Services is a bit tricky.
+    
+    h5. AtomPub
+    
+    The service document URL is
+http://<host>/_vti_bin/cmis/rest/<SPList>?getrepositoryinfo .
+    Since this sends the password as plain text,  HTTPS is strongly
+recommended.
+    
+    h5. Web Services
+    
+    # Download the WSDL with a web browser and store it on your local disk. The
+WSDL URL is http://<host>/_vti_bin/cmissoapwsdl.aspx?wsdl .
+    # Provide file://... URLs to the downloaded WSDL for all OpenCMIS WSDL
+session parameters.
+    # Activate the OpenCMIS NTLM authentication provider.
+
+    parameters.put(SessionParameter.AUTHENTICATION_PROVIDER_CLASS, CmisBindingFactory.NTLM_AUTHENTICATION_PROVIDER);
+
+    (The NTLM
+authentication provider uses [java.net.Authenticator|http://download-llnw.oracle.com/javase/6/docs/api/java/net/Authenticator.html]
+ under the hood. If this interferes with your environment, you are on your
+own.)
+    
+    h4. Using Cookies
+    
+    Some repositories are sending HTTP cookies to maintain state (although CMIS
+is stateless) or accelerate authentication for subsequent calls. OpenCMIS
+ignores these cookies by default. The following code snippet activates
+cookies for your application and OpenCMIS. See [this page|http://java.sun.com/docs/books/tutorial/networking/cookies/cookiemanager.html]
+ for details.
+    
+    {code:java}
+    CookieManager cm = new CookieManager(null, CookiePolicy.ACCEPT_ALL);
+    CookieHandler.setDefault(cm);
+
+
+<a name="OpenCMISCookbook-Understandingtheclientsidecache"></a>
+### Understanding the client side cache
+
+Client side caching is turned on by default. That is, getObject() will
+first look into the session cache if the object already exists there. If
+this is the case, it returns the object without talking to the repository.
+So it might return stale objects.  
+
+There are multiple ways to deal with that:
+* Refresh the object data that is returned from getObject().
+{code:java}
+CmisObject object = session.getObject(id);
+	
+object.refresh(); // contacts the repository and refreshes the object
+	         
+object.refreshIfOld(60 * 1000); // ... or refreshes the object only if the
+data is older than a minute	     
+
+    
+    * Turn off the session cache completely.
+    {code:java}
+    session.getDefaultContext().setCacheEnabled(false);
+
+
+* Turn off caching for this getObject() call.
+{code:java}
+OperationContext oc = session.createOperationContext();
+oc.setCacheEnabled(false);
+        
+CmisObject object = session.getObject(id, oc);
+
+    
+    * Clear the session cache (not recommended).
+    {code:java}
+    session.clear();
+
+
+<a name="OpenCMISCookbook-Gettingtheidofanobjectfromitspath"></a>
+### Getting the id of an object from its path
+
+{code:java}
+String path = "/User Homes/customer1/document.odt"
+CmisObject object = getSession().getObjectByPath(path);
+String id = object.getId();
+
+    
+    h3. Reading a file
+    
+    {code:java}
+    CmisObject object = getSession().getObject(session.createObjectId(fileId));
+    Document document = (Document)object;
+    String filename = document.getName();
+    InputStream stream = document.getContentStream().getStream();
+
+
+<a name="OpenCMISCookbook-Showingafolder'sitems,withresultspaging"></a>
+### Showing a folder's items, with results paging
+
+{code:java}
+int maxItemsPerPage = 5;
+int skipCount = 10;
+
+CmisObject object = session.getObject(session.createObjectId(folderId));
+Folder folder = (Folder)object;
+OperationContext operationContext = session.createOperationContext();
+operationContext.setMaxItemsPerPage(maxItemsPerPage);
+
+ItemIterable<CmisObject> children = folder.getChildren(operationContext);
+ItemIterable<CmisObject> page = children.skipTo(skipCount).getPage();
+
+Iterator<CmisObject> pageItems = page.iterator();
+while(pageItems.hasNext()) {
+       CmisObject item = pageItems.next();
+       // Do something with the item.
+}
+
+    
+    h3. Retrieving Document objects from query results
+    
+    {code:java}
+    String myType = "my:documentType";
+    String queryString = "SELECT * FROM " + myType;
+    
+    // get the query name of cmis:objectId
+    ObjectType type = session.getTypeDefinition(myType);
+    PropertyDefinition<?> objectIdPropDef =
+type.getPropertyDefinitions().get(PropertyIds.OBJECT_ID);
+    String objectIdQueryName = objectIdPropDef.getQueryName();
+    
+    // execute query
+    ItemIterable<QueryResult> results = session.query(queryString, false);
+    
+    for (QueryResult qResult : results) {
+       String objectId =
+qResult.getPropertyValueByQueryName(objectIdQueryName);
+     
+       Document doc = (Document)
+session.getObject(session.createObjectId(objectId));
+    }
+
+
+
+<a name="OpenCMISCookbook-GettingCMISextensions"></a>
+### Getting CMIS extensions
+
+_(since OpenCMIS 0.2.0)_
+The CMIS specification allows to add extensions at several points in CMIS
+data structures (object, properties, allowable actions, ACLs, policies,
+etc.).
+These extensions are XML fragments for the AtomPub and the Web Services
+binding. (It will be something simpler for the upcoming JSON binding.)
+Think of it as a tree structure with named node and leafs. Only the leafs
+can have a value.
+
+{code:java}
+// get an object from somewhere
+CmisObject object = ...
+
+// extensions can be attached to different levels
+// in this example we get the extensions on the properties level
+List<CmisExtensionElement> extensions =
+object.getExtensions(ExtensionLevel.PROPERTIES);
+
+if(extensions == null) {
+   // this object has no extensions on this level
+   return;
+}
+
+// iterate through the extensions until we find the one we are looking for
+for(CmisExtensionElement ext: extensions) {
+
+   if("myExtension".equals(ext.getName()) {
+
+     // found it, now print the values of the children	   
+     for(CmisExtensionElement child: ext.getChildren()) {
+	System.out.println(child.getName() + ": " + child.getValue());
+     }
+
+   }
+
+}
+
+    
+    h3. Connecting from a .Net client via the Web Services binding
+    
+    This is a very simple C# example that demonstrates how to connect to an
+OpenCMIS server via the Web Services binding. Please note that .Net only
+allows UsernameTokens over HTTPS.
+    
+    
+
+using System;
+using System.ServiceModel;
+using OpenCMISClient.OpenCMISServer;
+using System.Net;
+
+namespace OpenCMISClient
+{
+    class CMISClientDemo
+    {
+	public void DoStuff()
+	{
+	    try
+	    {
+		// uncomment the next line if you are using a self signed
+SSL certificate 
+		// ServicePointManager.ServerCertificateValidationCallback
+= delegate { return true; };
+
+		// get hold of the services
+		RepositoryServicePortClient repService =
+GetRepositoryService("https://localhost:8443/opencmis/services/RepositoryService?wsdl",
+"test", "test");
+		NavigationServicePortClient navService =
+GetNavigationService("https://localhost:8443/opencmis/services/NavigationService?wsdl",
+"test", "test");
+		ObjectServicePortClient objService =
+GetObjectService("https://localhost:8443/opencmis/services/ObjectService?wsdl",
+"test", "test");
+
+		// get the list of repositories
+                cmisRepositoryEntryType[](.html)
+ repositoryEntries = repService.getRepositories(null);
+		foreach (cmisRepositoryEntryType repositoryEntry in
+repositoryEntries)
+		{
+		    Console.WriteLine("Repository: " +
+repositoryEntry.repositoryName + " (" + repositoryEntry.repositoryId +
+")");
+
+		    // get repository info
+		    cmisRepositoryInfoType repositoryInfo =
+repService.getRepositoryInfo(repositoryEntry.repositoryId, null);
+		    Console.WriteLine("  Info:");
+		    Console.WriteLine("    Description: " +
+repositoryInfo.repositoryDescription);
+		    Console.WriteLine("    Product:	" +
+repositoryInfo.vendorName + " / " + repositoryInfo.productName + " " +
+repositoryInfo.productVersion);
+
+		    // get all base types of the repository
+		    cmisTypeDefinitionListType typeList =
+repService.getTypeChildren(repositoryInfo.repositoryId, null, true, null,
+null, null);
+		    Console.WriteLine("  Types:");
+		    foreach (cmisTypeDefinitionType type in typeList.types)
+		    {
+			Console.WriteLine("    " + type.displayName + " ("
++ type.id + ")");
+		    }
+
+		    // get all root folder children
+		    cmisObjectInFolderListType children =
+navService.getChildren(repositoryInfo.repositoryId,
+repositoryInfo.rootFolderId, null, null, true, null, null, false, null,
+null, null);
+		    Console.WriteLine("  Root folder:");
+		    foreach (cmisObjectInFolderType objInFolder in
+children.objects)
+		    {
+			cmisObjectType obj = objInFolder.@object;
+			String objId = GetIdPropertyValue(obj.properties,
+"cmis:objectId");
+			Console.WriteLine("    Name: " +
+GetStringPropertyValue(obj.properties, "cmis:name") + " (" + objId + ")");
+			Console.WriteLine("	 Type:		" +
+GetIdPropertyValue(obj.properties, "cmis:baseTypeId"));
+			Console.WriteLine("	 Created by:	" +
+GetStringPropertyValue(obj.properties, "cmis:createdBy"));
+			Console.WriteLine("	 Creation date: " +
+GetDateTimePropertyValue(obj.properties, "cmis:creationDate"));
+
+			// if it is a document, get the size and the
+content
+			String baseType =
+GetIdPropertyValue(obj.properties, "cmis:baseTypeId");
+			if ("cmis:document".Equals(baseType))
+			{
+			    // get the size
+			    Int64? size =
+GetIntegerPropertyValue(obj.properties, "cmis:contentStreamLength");
+			    Console.WriteLine("      Size:	    " +
+size);
+
+			    // get the content
+			    cmisContentStreamType content =
+objService.getContentStream(repositoryInfo.repositoryId, objId, null, null,
+null, null);
+			    Console.WriteLine("      MIME type:     " +
+content.mimeType);
+
+			    // get the "stream"
+                            byte[](.html)
+ bytes = content.stream; // really streaming requires some more work
+			    Console.WriteLine("      Stream:	    " +
+(bytes.Length == size ? "ok" : "mismatch"));
+			}
+		    }
+
+		}
+	    }
+	    catch (FaultException<cmisFaultType> fe)
+	    {
+		Console.WriteLine("CMIS Exception: " + fe.Detail.message);
+		Console.WriteLine("Type: " + fe.Detail.type);
+		Console.WriteLine("Code: " + fe.Detail.code);
+	    }
+	    catch (Exception e)
+	    {
+		Console.WriteLine("Exception: " + e.Message);
+		Console.WriteLine(e.StackTrace);
+	    }
+
+	    Console.ReadKey();
+	}
+
+	public RepositoryServicePortClient GetRepositoryService(String
+wsdlUrl, String user, String password)
+	{
+	    BasicHttpBinding binding = new BasicHttpBinding();
+	    binding.MessageEncoding = WSMessageEncoding.Mtom;
+	    binding.Security.Mode =
+BasicHttpSecurityMode.TransportWithMessageCredential;
+
+	    RepositoryServicePortClient service = new
+RepositoryServicePortClient(binding, new EndpointAddress(wsdlUrl));
+
+	    service.ClientCredentials.UserName.UserName = user;
+	    service.ClientCredentials.UserName.Password = password;
+
+	    return service;
+	}
+
+	public NavigationServicePortClient GetNavigationService(String
+wsdlUrl, String user, String password)
+	{
+	    BasicHttpBinding binding = new BasicHttpBinding();
+	    binding.MessageEncoding = WSMessageEncoding.Mtom;
+	    binding.Security.Mode =
+BasicHttpSecurityMode.TransportWithMessageCredential;
+
+	    NavigationServicePortClient service = new
+NavigationServicePortClient(binding, new EndpointAddress(wsdlUrl));
+
+	    service.ClientCredentials.UserName.UserName = user;
+	    service.ClientCredentials.UserName.Password = password;
+
+	    return service;
+	}
+
+
+	public ObjectServicePortClient GetObjectService(String wsdlUrl,
+String user, String password)
+	{
+	    BasicHttpBinding binding = new BasicHttpBinding();
+	    binding.MessageEncoding = WSMessageEncoding.Mtom;
+	    binding.Security.Mode =
+BasicHttpSecurityMode.TransportWithMessageCredential;
+	    binding.TransferMode = TransferMode.Streamed;
+
+	    ObjectServicePortClient service = new
+ObjectServicePortClient(binding, new EndpointAddress(wsdlUrl));
+
+	    service.ClientCredentials.UserName.UserName = user;
+	    service.ClientCredentials.UserName.Password = password;
+
+	    return service;
+	}
+
+	public String GetStringPropertyValue(cmisPropertiesType properties,
+String id)
+	{
+	    String result = null;
+
+	    foreach (cmisProperty property in properties.Items)
+	    {
+		if (property.propertyDefinitionId.Equals(id))
+		{
+		    if (property is cmisPropertyString)
+		    {
+                        result = ((cmisPropertyString)property).value[0](0.html)
+;
+		    }
+		    break;
+		}
+	    }
+
+	    return result;
+	}
+
+	public String GetIdPropertyValue(cmisPropertiesType properties,
+String id)
+	{
+	    String result = null;
+
+	    foreach (cmisProperty property in properties.Items)
+	    {
+		if (property.propertyDefinitionId.Equals(id))
+		{
+		    if (property is cmisPropertyId)
+		    {
+                        result = ((cmisPropertyId)property).value[0](0.html)
+;
+		    }
+		    break;
+		}
+	    }
+
+	    return result;
+	}
+
+	public Int64? GetIntegerPropertyValue(cmisPropertiesType
+properties, String id)
+	{
+	    Int64? result = null;
+
+	    foreach (cmisProperty property in properties.Items)
+	    {
+		if (property.propertyDefinitionId.Equals(id))
+		{
+		    if (property is cmisPropertyInteger)
+		    {
+                        result = Int64.Parse(((cmisPropertyInteger)property).value[0](0.html)
+);
+		    }
+		    break;
+		}
+	    }
+
+	    return result;
+	}
+
+	public DateTime? GetDateTimePropertyValue(cmisPropertiesType
+properties, String id)
+	{
+	    DateTime? result = null;
+
+	    foreach (cmisProperty property in properties.Items)
+	    {
+		if (property.propertyDefinitionId.Equals(id))
+		{
+		    if (property is cmisPropertyDateTime)
+		    {
+                        result = ((cmisPropertyDateTime)property).value[0](0.html)
+;
+		    }
+		    break;
+		}
+	    }
+
+	    return result;
+	}
+    }
+}
+
+    
+    h3. Reading metadata and content from a CMIS repository
+    
+    TODO
+    
+    h3. Creating and updating CMIS objects
+    
+    TODO
+    
+    h3. Using the query parser
+    
+    TODO
+    
+    h2. CMIS Server
+    
+    h3. Adding CMIS extensions
+    
+    _(since OpenCMIS 0.2.0)_
+    {code:java}
+    // we want to attach an extension to an object
+    ObjectData object = ...
+    
+    // some dummy data
+    String typeId = "MyType";
+    String objectId = "1111-2222-3333";
+    String name = "MyDocument";
+    
+    // find a namespace for the extensions that is different from the CMIS
+namespaces
+    String ns = "http://apache.org/opencmis/example";
+    
+    // create a list for the first level of our extension
+    List<CmisExtensionElement> extElements = new
+ArrayList<CmisExtensionElement>();
+            
+    // set up an attribute (Avoid attributes! They will not work with the JSON
+binding!)
+    Map<String, String> attr = new HashMap<String, String>();
+    attr.put("type", typeId);
+            
+    // add two leafs to the extension
+    extElements.add(new CmisExtensionElementImpl(ns, "objectId", attr,
+objectId));
+    extElements.add(new CmisExtensionElementImpl(ns, "name", null, name));
+    
+    // set the extension list
+    List<CmisExtensionElement> extensions = new
+ArrayList<CmisExtensionElement>();
+    extensions.add(new CmisExtensionElementImpl(ns, "exampleExtension", null,
+extElements));
+    object.setExtensions(extensions);
+
+
+This should create something like that:
+
+
+    <exampleExtension:exampleExtension
+xmlns="http://apache.org/opencmis/example"
+xmlns:exampleExtension="http://apache.org/opencmis/example">
+        <objectId type="MyType">1111-2222-3333</objectId>
+        <name>MyDocument</name>
+    </exampleExtension:exampleExtension>
+
+
+<a name="OpenCMISCookbook-UsingtheserverframeworkwithSpring"></a>
+### Using the server framework with Spring
+
+By default, the OpenCMIS services factory is set up by a context listner
+configured in the web.xml. If you want or need Spring to set up the
+services factory, remove the context listner from the web.xml and use a
+bean like this instead:
+
+{code:java}
+public class CmisLifecycleBean implements ServletContextAware,
+InitializingBean, DisposableBean
+{
+    private ServletContext servletContext;
+    private CmisServiceFactory factory;
+
+    @Override
+    public void setServletContext(ServletContext servletContext)
+    {
+	this.servletContext = servletContext;
+    }
+
+    public void setCmisServiceFactory(CmisServiceFactory factory)
+    {
+	this.factory = factory;
+    }
+
+    @Override
+    public void afterPropertiesSet() throws Exception
+    {
+	if (factory != null)
+	{
+	    factory.init(new HashMap<String, String>());
+	   
+servletContext.setAttribute(CmisRepositoryContextListener.SERVICES_FACTORY,
+factory);
+	}
+    }
+
+    @Override
+    public void destroy() throws Exception
+    {
+	if (factory != null)
+	{
+	    factory.destroy();
+	}
+    }
+}
+
+    
+    
+    The Spring configuration could look like this:
+    
+    {code:xml}
+    <bean id="CmisLifecycleBean"
+class="org.example.mycmisservice.CmisLifecycleBean">
+        <property name="cmisServiceFactory" ref="CmisServiceFactory" />
+    </bean>
+     
+    <bean id="CmisServiceFactory"
+class="org.example.mycmisservice.MyCmisServiceFactory">
+    </bean>
+
+

Added: incubator/chemistry/site/trunk/content/opencmis-fileshare-repository.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-fileshare-repository.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-fileshare-repository.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-fileshare-repository.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,63 @@
+Title: OpenCMIS FileShare Repository
+<a name="OpenCMISFileShareRepository-OpenCMISFileShareRepository"></a>
+# OpenCMIS FileShare Repository
+
+*This repository is not intended for production use!*
+
+The FileShare repository uses the file system as its back-end store and
+provides read/write access to content and metadata. In other words, it puts
+a CMIS interface on top of your file system.
+
+The repository is restricted by the capabilities of the file system and
+therefore does not support relationships, policies, document versions,
+multi-filing, un-filing and query.
+
+By default it provides a repository "test" that uses your home directory as
+the repository root. It requires authentication. A user "test" with the
+password "test" is pre-configured.
+
+
+<a name="OpenCMISFileShareRepository-BuildandDeploytheTestRepository"></a>
+## Build and Deploy the Test Repository
+
+1. [Build OpenCMIS](opencmis-how-to-build.html)
+.
+1. A ready-to-use WAR file should now exist in
+*/chemistry-opencmis-server/chemistry-opencmis-server-fileshare/target*.
+1. Deploy the WAR file to your favorite servlet engine.
+1. AtomPub endpoint: *http://<host>:<port>/<context>/atom*
+  Web Services endpoint:
+*http://<host>:<port>/<context>/services/RepositoryService*
+
+
+<a name="OpenCMISFileShareRepository-ConfiguretheRepository"></a>
+## Configure the Repository
+
+The configuration file in the WAR file is
+*/WEB-INF/classes/repository.properties*.
+
+
+    # Don't touch this line
+    class=org.apache.chemistry.opencmis.fileshare.FileShareServiceFactory
+    
+    # Login configuration
+    #  login.<no> = <user>:<password>
+    login.1 = test:test
+    login.2 = cmisuser:password
+    login.3 = reader:reader
+    
+    # Type defintions (see example-type.xml)
+    #  type.<no> = <absolute path to type definition XML file>
+    type.1 = /home/cmistest/type1.xml
+    type.2 = /home/cmistest/type2.xml
+    
+    # Repository configuration
+    #  repository.<repositoryId> = <absolute path to repository root folder>
+    #  repository.<repositoryId>.readwrite = <comma separated list of login
+names>
+    #  repository.<repositoryId>.readonly = <comma separated list of login
+names>
+    repository.test = /home/cmistest/myreproot 
+    repository.test.readwrite = test, cmisuser
+    repository.test.readonly = reader
+

Added: incubator/chemistry/site/trunk/content/opencmis-how-to-build.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-how-to-build.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-how-to-build.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-how-to-build.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,47 @@
+Title: OpenCMIS how-to-build
+<a name="OpenCMIShow-to-build-HowtobuildOpenCMIS"></a>
+# How to build OpenCMIS
+
+OpenCMIS releases are available [here](opencmis.html)
+. If you want to build the latest and greatest instead, follow these simple
+steps:
+
+    * Make sure you have JDK 1.5 or higher, Maven 2.2 and a Subversion
+client installed. (The CMIS Workbench requires JDK 1.6!)
+    * Fetch the source code via Subversion from here: [https://svn.apache.org/repos/asf/incubator/chemistry/opencmis/trunk](https://svn.apache.org/repos/asf/incubator/chemistry/opencmis/trunk)
+    * And finally run:
+
+
+    mvn clean install -Dmaven.test.skip=true
+
+
+
+<a name="OpenCMIShow-to-build-TheClientLibraries"></a>
+## The Client Libraries
+
+After the build the OpenCMIS client libraries (with all dependencies)
+reside in the
+*/chemistry-opencmis-client/chemistry-opencmis-client-impl/target*
+directory. The zip file contains all libraries necessary to build a CMIS
+client.
+
+
+<a name="OpenCMIShow-to-build-TheServerFramework"></a>
+## The Server Framework
+
+Please refer to the [Server Framework](opencmis-server-framework.html)
+ page for more information where to find it and how to use it.
+
+
+<a name="OpenCMIShow-to-build-BuildJavaDoc"></a>
+## Build JavaDoc
+
+There is not much OpenCMIS documentation available, yet. This Wiki and the
+JavaDoc are the major sources for information. The JavaDoc can be build by
+running:
+
+
+    mvn javadoc:aggregate
+
+
+The JavaDoc will be created in */target/site/apidocs*.



Mime
View raw message