incubator-connectors-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kwri...@apache.org
Subject svn commit: r1227119 [4/5] - in /incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs: ./ ja_JP/
Date Wed, 04 Jan 2012 11:10:10 GMT
Added: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/performance-tuning.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/performance-tuning.xml?rev=1227119&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/performance-tuning.xml (added)
+++ incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/performance-tuning.xml Wed Jan  4 11:10:09 2012
@@ -0,0 +1,170 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" 
+          "http://forrest.apache.org/dtd/document-v20.dtd">
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<document> 
+
+  <header> 
+    <title>Performance tuning</title> 
+  </header> 
+
+  <body> 
+    <section>
+      <title>Performance tuning</title>
+      <p></p>
+      <p>
+        In order to get the most out of ManifoldCF, performance-wise, there are a few things you need to know.  First, you need to know how to configure the project so that it performs optimally.  You'll also want to know what hardware would work best.  And, no doubt, you want to have some idea whether you've actually done everything properly, so you need data to compare with.
+        This page will hopefully answer all of those questions.
+      </p>
+      <section>
+        <title>Configuration for performance</title>
+        <p></p>
+        <p>
+          The goal of performance tuning for ManifoldCF is to take maximum advantage of parallelism in the system doing the work, and to make sure there are no bottlenecks anywhere that would slow things down.
+          The most important underpinning of ManifoldCF is the database, since that is the only persistent storage mechanism ManifoldCF uses.  Getting the database right is therefore the first goal.
+        </p>
+        <section>
+          <title>Selecting the database</title>
+          <p>
+            Start by using PostgreSQL rather than Derby, because Derby has known performance problems when it comes to handling deadlocks.
+            Database deadlocks arise naturally in systems like ManifoldCF that are highly threaded, and while the risk of their arising can be reduced, it cannot entirely be eliminated.
+            Derby, on the other hand, has the ability to deadlock with a simple SELECT against a table happening at the same time as a DELETE against the same table, and Derby requires a hang of a minute before it detects the deadlock.
+            Obviously that behavior is incompatible with high performance.  So, use PostgreSQL if you care at all about crawler performance.  See the <a href="how-to-build-and-deploy.html">how-to-deploy</a> page for a description of how to run ManifoldCF under PostgreSQL.
+          </p>
+          <p>
+            Certain PostgreSQL versions are also known to generate bad plans for ManifoldCF queries.  When this happens, crawls of any size may become extremely slow.
+            The ManifoldCF log will start to include many warnings of the sort, "Query took more than a minute", with a corresponding dumped plan that shows a sequential scan of a large table.
+            At this point you should suspect you have a bad version of PostgreSQL.  Known bad versions include 8.3.12.  Known good versions are 8.3.7, 8.3.8, and 8.4.5.
+          </p>
+        </section>
+        <section>
+          <title>Configuring PostgreSQL correctly</title>
+          <p>
+            The key configuration changes you need to make to PostgreSQL from its out-of-the-box settings are intended to:
+          </p>
+          <ul>
+            <li>Set PostgreSQL up with enough database handles so that that will not be a bottleneck;</li>
+            <li>Make sure PostgreSQL has enough shared memory allocated to support the number of handles you selected;</li>
+            <li>Turn off autovacuuming.</li>
+          </ul>
+          <p>
+            The <em>postgresql.conf</em> file is where you set most of these options.  Some recommended settings are described in <a href="how-to-build-and-deploy.html">the deployment page</a>.
+            The postgresql.conf file describes the relationship between parameters, especially between the number of database handles and the amount of shared memory allocated.  This can differ significantly
+            from version to version, so it never hurts to read the text in that file, and understand what you are trying to achieve.
+          </p>
+          <p>
+            The number of database handles you need will depend on your ManifoldCF setup.  If you use the Quick Start, for instance, fewer handles are needed, because only one process is used.  The formula relating handle count to other
+            parameters of ManifoldCF is presented below.
+          </p>
+          <p></p>
+          <p>manifoldcf_db_pool_size * number_of_manifoldcf_processes &lt;= maximum_postgresql_database_handles - 2</p>
+          <p></p>
+          <p>
+            The number of processes you might have depends on how you deployed ManifoldCF.  If you used the Quick Start, you will only have one process.  But if you deployed in a more distributed way,
+            you will have at least a process for the agents daemon, as well as at one process for each web application.  If you anticipate that a command-line utility could be used at the same time,
+            that's one more process.  These multiply quickly, so the number of database handles you need to make available can get quite large, unless you limit the ManifoldCF pool size artificially
+            instead.
+          </p>
+          <p>Setting the parameters that control the size of the database connection pool is covered in the next section.</p>
+        </section>
+        <section>
+          <title>Setting the ManifoldCF database handle pool size</title>
+          <p>
+            The database handle pool size must be set correctly, or ManifoldCF will not perform well, and may even deadlock waiting to get a database handle.
+            The properties.xml parameter that controls this is <em>org.apache.manifoldcf.database.maxhandles</em>.  The formula you should use to properly set the value is below.
+          </p>
+          <p></p>
+          <p>worker_thread_count + delete_thread_count + expiration_thread_count + cleanup_thread_count + 10 &lt; manifoldcf_db_pool_size</p>
+          <p></p>
+        </section>
+        <section>
+          <title>Setting the number of worker, delete, and expiration threads</title>
+          <p>
+            The number of each variety of thread you choose depends on a number of factors that are specific to the kinds of tasks you expect to do.
+            First, note that constraints based on your hardware may have the effect of setting an upper bound on the total number of threads.  If, for example, memory constraints
+            on your system have the effect of limiting the number of available PostgreSQL handles, the total threads will also be limited as a result of applying the formulas already given.
+          </p>
+          <p>
+            If you do not have any such constraints, then you can choose the number of threads based on other hardware factors.  Typically, the number of processors would be what you'd consider
+            in coming up with the total thread count.  A value of between 12 and 35 threads per processor is typical.  The optimal number for you will require some experimentation.
+          </p>
+          <p>The threads then have to be allocated to the worker, deletion, or expiration category.  If your work load does not require much in the way of deleting documents or expiring them,
+            it is usually adequate to retain the default of 10 deletion and 10 expiration threads, and simply adjust the worker thread count.  The worker thread count parameter is <em>org.apache.manifoldcf.crawler.threads</em>.
+            See <a href="how-to-build-and-deploy.html">the deployment page</a> for a list of all of these parameters.
+          </p>
+        </section>
+        <section>
+          <title>Database maintenance</title>
+          <p>
+            Once you have the database and ManifoldCF configurated correctly, you will discover that the performance of the system gradually degrades over time.  This is because PostgreSQL
+            requires periodic maintenance in order to function optimally.  This maintenance is called <em>vacuuming</em>.
+          </p>
+          <p>
+            Our recommendation is to vacuum on a schedule, and to use the "full" variant of the vacuum command (e.g. "VACUUM FULL").  PostgreSQL gives you the option of lesser
+            vacuums, some of which can be done in background, but in our experience these are very expensive performance-wise, and are not very helpful either.  "VACUUM FULL" makes a
+            complete new copy of the database, a table at a time, stored in an optimal way.  It is also reasonably quick, considering what it is doing.
+          </p>
+        </section>
+      </section>
+      <section>
+        <title>Some results</title>
+        <p>
+          We've run performance test on several systems.  Depending on hardware configuration, we've seen as fast as 57 documents per second to 16 documents per second.  We tested with three different systems and ran the test
+          across 306,944 documents.  The table below shows the relevant configurations and results:
+        </p>
+        <table>
+          <tr><th>System</th><th>Processors (2+ Ghz)</th><th>Memory</th><th>Disk drives</th><th>Elapsed time (seconds)</th><th>Documents per second</th></tr>
+          <tr><td>Desktop</td><td>2</td><td>8 GB</td><td>7,200 RPM</td><td>19,492</td><td>16</td></tr>
+          <tr><td>Laptop</td><td>2</td><td>4 GB</td><td>Samsung SSD RBX</td><td>9,230</td><td>33</td></tr>
+          <tr><td>Server</td><td>8</td><td>8 GB</td><td>10,000 RPM</td><td>5,366</td><td>57</td></tr>
+        </table>
+        <p>
+          For these tests, we ran the Quick-Start example configuration from ManifoldCF as is, with the exception of using an external PostgreSQL database instead of the embedded Derby.
+          We altered the ManifoldCF and PostgreSQL configuration from their default settings to maximize system resource usage.  The table below shows the key configuration changes.
+        </p>
+        <table>
+          <tr><th>Workers</th><th>ManifoldCF DB Connections</th><th>PostgreSQL Connections</th><th>Max repository connections</th><th>JVM Memory</th></tr>
+          <tr><td>100</td><td>105</td><td>200</td><td>105</td><td>1024 MB</td></tr>
+        </table>
+        <p>Additionally, we made postgresql.conf changes as shown in the table below:</p>
+        <table>
+          <tr><th>Parameter</th><th>Value</th></tr>
+          <tr><td>shared_buffers</td><td>1024MB</td></tr>
+          <tr><td>checkpoint_segments</td><td>300</td></tr>
+          <tr><td>maintenanceworkmem</td><td>2MB</td></tr>
+          <tr><td>tcpip_socket</td><td>true</td></tr>
+          <tr><td>max_connections</td><td>200</td></tr>
+          <tr><td>checkpoint_timeout</td><td>900</td></tr>
+          <tr><td>datastyle</td><td>ISO,European</td></tr>
+          <tr><td>autovacuum</td><td>off</td></tr>
+        </table>
+        <p>There are some interesting conclusions, for example the use of Solid State Drives for the laptop.  Even though addressable memory was reduced to 4 GB, the system processed twice as much documents than the desktop did with slower disks.  The other interesting fact is that the server had lower performing disks, but 4 times as many processors, and it was twice as fast as the laptop.</p>
+      </section>
+    </section>
+  </body>
+</document>
+
+
+
+
+
+
+        
\ No newline at end of file

Propchange: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/performance-tuning.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/performance-tuning.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Added: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/programmatic-operation.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/programmatic-operation.xml?rev=1227119&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/programmatic-operation.xml (added)
+++ incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/programmatic-operation.xml Wed Jan  4 11:10:09 2012
@@ -0,0 +1,353 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" 
+          "http://forrest.apache.org/dtd/document-v20.dtd">
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<document> 
+
+  <header> 
+    <title>Programmatic Operation</title> 
+  </header> 
+
+  <body> 
+    <section>
+      <title>Programmatic Operation</title>
+      <p></p>
+      <p>A certain subset of ManifoldCF users want to think of ManifoldCF as an engine that they can poke from whatever other system they are developing.  While ManifoldCF is not precisely a document indexing engine per se, it can certainly be controlled programmatically.  Right now, there are three principle ways of achieving this control.</p>
+      <p></p>
+      <section>
+        <title>Control by Servlet API</title>
+        <p></p>
+        <p>ManifoldCF provides a servlet-based JSON API that gives you the complete ability to define connections and jobs, and control job execution.  You can read about JSON <a href="http://www.json.org">here</a>.  The API is designed to be RESTful in character.  Thus, it makes full use of the HTTP verbs GET, PUT, POST, and DELETE, and represents objects as URLs.  The basic format of the JSON servlet resource URLs is as follows:</p>
+        <p></p>
+        <p>http[s]://<em>&lt;server_and_port&gt;</em>/mcf-api-service/json/<em>&lt;resource&gt;</em></p>
+        <p></p>
+        <p>The servlet ignores request data, except when the PUT or POST verb is used.  In that case, the request data is presumed to be a JSON object.  The servlet responds either with an error response code (either 400 or 500) with an appropriate explanatory message, or with a 200 (OK), 201 (CREATED), or 404 (NOT FOUND) response code along with a response JSON object.</p>
+        <p></p>
+        <p>The actual available resources and commands are as follows:</p>
+        <p></p>
+        <p></p>
+        <p></p>
+        <table>
+          <tr><th>Resource</th><th>Verb</th><th>What it does</th><th>Input format</th><th>Output format</th></tr>
+          <tr><td>outputconnectors</td><td>GET</td><td>List all registered output connectors</td><td>N/A</td><td>{"outputconnector":[<em>&lt;list_of_output_connector_objects&gt;</em>]} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>authorityconnectors</td><td>GET</td><td>List all registered authority connectors</td><td>N/A</td><td>{"authorityconnector":[<em>&lt;list_of_authority_connector_objects&gt;</em>]} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>repositoryconnectors</td><td>GET</td><td>List all registered repository connectors</td><td>N/A</td><td>{"repositoryconnector":[<em>&lt;list_of_repository_connector_objects&gt;</em>]} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>outputconnections</td><td>GET</td><td>List all output connections</td><td>N/A</td><td>{"outputconnection":[<em>&lt;list_of_output_connection_objects&gt;</em>]} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>outputconnections/<em>&lt;encoded_connection_name&gt;</em></td><td>GET</td><td>Get a specific output connection</td><td>N/A</td><td>{"outputconnection":<em>&lt;output_connection_object&gt;</em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>outputconnections/<em>&lt;encoded_connection_name&gt;</em></td><td>PUT</td><td>Save or create an output connection</td><td>{"outputconnection":<em>&lt;output_connection_object&gt;</em>}</td><td>{"connection_name":<em>&lt;connection_name&gt;</em>} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>outputconnections/<em>&lt;encoded_connection_name&gt;</em></td><td>DELETE</td><td>Delete an output connection</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>status/outputconnections/<em>&lt;encoded_connection_name&gt;</em></td><td>GET</td><td>Check the status of an output connection</td><td>N/A</td><td>{"check_result":<em>&lt;message&gt;</em>} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>info/outputconnections/<em>&lt;encoded_connection_name&gt;</em>/<em>&lt;connector_specific_resource&gt;</em></td><td>GET</td><td>Retrieve arbitrary connector-specific resource</td><td>N/A</td><td><em>&lt;response_data&gt;</em> <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>} <strong>OR</strong> {"service_interruption":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>reset/outputconnections/<em>&lt;encoded_connection_name&gt;</em></td><td>PUT</td><td>Forget previous indexing state</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>authorityconnections</td><td>GET</td><td>List all authority connections</td><td>N/A</td><td>{"authorityconnection":[<em>&lt;list_of_authority_connection_objects&gt;</em>]} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>authorityconnections/<em>&lt;encoded_connection_name&gt;</em></td><td>GET</td><td>Get a specific authority connection</td><td>N/A</td><td>{"authorityconnection":<em>&lt;authority_connection_object&gt;</em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>authorityconnections/<em>&lt;encoded_connection_name&gt;</em></td><td>PUT</td><td>Save or create an authority connection</td><td>{"authorityconnection":<em>&lt;authority_connection_object&gt;</em>}</td><td>{"connection_name":<em>&lt;connection_name&gt;</em>} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>authorityconnections/<em>&lt;encoded_connection_name&gt;</em></td><td>DELETE</td><td>Delete an authority connection</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>status/authorityconnections/<em>&lt;encoded_connection_name&gt;</em></td><td>GET</td><td>Check the status of an authority connection</td><td>N/A</td><td>{"check_result":<em>&lt;message&gt;</em>} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>repositoryconnections</td><td>GET</td><td>List all repository connections</td><td>N/A</td><td>{"repositoryconnection":[<em>&lt;list_of_repository_connection_objects&gt;</em>]} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>repositoryconnections/<em>&lt;encoded_connection_name&gt;</em></td><td>GET</td><td>Get a specific repository connection</td><td>N/A</td><td>{"repositoryconnection":<em>&lt;repository_connection_object&gt;</em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>repositoryconnections/<em>&lt;encoded_connection_name&gt;</em></td><td>PUT</td><td>Save or create a repository connection</td><td>{"repositoryconnection":<em>&lt;repository_connection_object&gt;</em>}</td><td>{"connection_name":<em>&lt;connection_name&gt;</em>} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>repositoryconnections/<em>&lt;encoded_connection_name&gt;</em></td><td>DELETE</td><td>Delete a repository connection</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>status/repositoryconnections/<em>&lt;encoded_connection_name&gt;</em></td><td>GET</td><td>Check the status of a repository connection</td><td>N/A</td><td>{"check_result":<em>&lt;message&gt;</em>} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>info/repositoryconnections/<em>&lt;encoded_connection_name&gt;</em>/<em>&lt;connector_specific_resource&gt;</em></td><td>GET</td><td>Retrieve arbitrary connector-specific resource</td><td>N/A</td><td><em>&lt;response_data&gt;</em> <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>} <strong>OR</strong> {"service_interruption":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>jobs</td><td>GET</td><td>List all job definitions</td><td>N/A</td><td>{"job":[<em>&lt;list_of_job_objects&gt;</em>]} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>jobs</td><td>POST</td><td>Create a job</td><td>{"job":<em>&lt;job_object&gt;</em>}</td><td>{"job_id":<em>&lt;job_identifier&gt;</em>} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>jobs/<em>&lt;job_id&gt;</em></td><td>GET</td><td>Get a specific job definition</td><td>N/A</td><td>{"job":<em>&lt;job_object_&gt;</em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>jobs/<em>&lt;job_id&gt;</em></td><td>PUT</td><td>Save a job definition</td><td>{"job":<em>&lt;job_object&gt;</em>}</td><td>{"job_id":<em>&lt;job_identifier&gt;</em>} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>jobs/<em>&lt;job_id&gt;</em></td><td>DELETE</td><td>Delete a job definition</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>jobstatuses</td><td>GET</td><td>List all jobs and their status</td><td>N/A</td><td>{"job":[<em>&lt;list_of_job_status_objects&gt;</em>]} <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>jobstatuses/<em>&lt;job_id&gt;</em></td><td>GET</td><td>Get a specific job's status</td><td>N/A</td><td>{"jobstatus":<em>&lt;job_status_object&gt;</em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>} </td></tr>
+          <tr><td>jobstatusesnocounts/<em>&lt;job_id&gt;</em></td><td>GET</td><td>Get a specific job's status, returning '0' for all counts</td><td>N/A</td><td>{"jobstatus":<em>&lt;job_status_object&gt;</em>} <strong>OR</strong> { } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>} </td></tr>
+          <tr><td>start/<em>&lt;job_id&gt;</em></td><td>PUT</td><td>Start a specified job manually</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>abort/<em>&lt;job_id&gt;</em></td><td>PUT</td><td>Abort a specified job</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>restart/<em>&lt;job_id&gt;</em></td><td>PUT</td><td>Stop and start a specified job</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>pause/<em>&lt;job_id&gt;</em></td><td>PUT</td><td>Pause a specified job</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+          <tr><td>resume/<em>&lt;job_id&gt;</em></td><td>PUT</td><td>Resume a specified job</td><td>N/A</td><td>{ } <strong>OR</strong> {"error":<em>&lt;error_text&gt;</em>}</td></tr>
+        </table>
+        <p></p>
+        <p>Other resources having to do with reports have been planned, but not yet been implemented.</p>
+        <p></p>
+        <section>
+          <title>Output connector objects</title>
+          <p></p>
+          <p>The JSON fields an output connector object has are as follows:</p>
+          <p></p>
+          <table>
+            <tr><th>Field</th><th>Meaning</th></tr>
+            <tr><td>"description"</td><td>The optional description of the connector</td></tr>
+            <tr><td>"class_name"</td><td>The class name of the class implementing the connector</td></tr>
+          </table>
+          <p></p>
+        </section>
+        <section>
+          <title>Authority connector objects</title>
+          <p></p>
+          <p>The JSON fields an authority connector object has are as follows:</p>
+          <p></p>
+          <table>
+            <tr><th>Field</th><th>Meaning</th></tr>
+            <tr><td>"description"</td><td>The optional description of the connector</td></tr>
+            <tr><td>"class_name"</td><td>The class name of the class implementing the connector</td></tr>
+          </table>
+          <p></p>
+        </section>
+        <section>
+          <title>Repository connector objects</title>
+          <p></p>
+          <p>The JSON fields a repository connector object has are as follows:</p>
+          <p></p>
+          <table>
+            <tr><th>Field</th><th>Meaning</th></tr>
+            <tr><td>"description"</td><td>The optional description of the connector</td></tr>
+            <tr><td>"class_name"</td><td>The class name of the class implementing the connector</td></tr>
+          </table>
+          <p></p>
+        </section>
+        <section>
+          <title>Output connection objects</title>
+          <p></p>
+          <p>Output connection names, when they are part of a URL, should be encoded as follows:</p>
+          <p></p>
+          <ol>
+            <li>All instances of '.' should be replaced by '..'.</li>
+            <li>All instances of '/' should be replaced by '.+'.</li>
+            <li>The URL should be encoded using standard URL utf-8-based %-encoding.</li>
+          </ol>
+          <p></p>
+          <p>The JSON fields an output connection object has are as follows:</p>
+          <p></p>
+          <table>
+            <tr><th>Field</th><th>Meaning</th></tr>
+            <tr><td>"name"</td><td>The unique name of the connection</td></tr>
+            <tr><td>"description"</td><td>The description of the connection</td></tr>
+            <tr><td>"class_name"</td><td>The java class name of the class implementing the connection</td></tr>
+            <tr><td>"max_connections"</td><td>The total number of outstanding connections allowed to exist at a time</td></tr>
+            <tr><td>"configuration"</td><td>The configuration object for the connection, which is specific to the connection class</td></tr>
+          </table>
+          <p></p>
+        </section>
+        <section>
+          <title>Authority connection objects</title>
+          <p></p>
+          <p>Authority connection names, when they are part of a URL, should be encoded as follows:</p>
+          <p></p>
+          <ol>
+            <li>All instances of '.' should be replaced by '..'.</li>
+            <li>All instances of '/' should be replaced by '.+'.</li>
+            <li>The URL should be encoded using standard URL utf-8-based %-encoding.</li>
+          </ol>
+          <p></p>
+          <p>The JSON fields for an authority connection object are as follows:</p>
+          <p></p>
+          <table>
+            <tr><th>Field</th><th>Meaning</th></tr>
+            <tr><td>"name"</td><td>The unique name of the connection</td></tr>
+            <tr><td>"description"</td><td>The description of the connection</td></tr>
+            <tr><td>"class_name"</td><td>The java class name of the class implementing the connection</td></tr>
+            <tr><td>"max_connections"</td><td>The total number of outstanding connections allowed to exist at a time</td></tr>
+            <tr><td>"configuration"</td><td>The configuration object for the connection, which is specific to the connection class</td></tr>
+          </table>
+          <p></p>
+        </section>
+        <section>
+          <title>Repository connection objects</title>
+          <p></p>
+          <p>Repository connection names, when they are part of a URL, should be encoded as follows:</p>
+          <p></p>
+          <ol>
+            <li>All instances of '.' should be replaced by '..'.</li>
+            <li>All instances of '/' should be replaced by '.+'.</li>
+            <li>The URL should be encoded using standard URL utf-8-based %-encoding.</li>
+          </ol>
+          <p></p>
+          <p>The JSON fields for a repository connection object are as follows:</p>
+          <p></p>
+          <table>
+            <tr><th>Field</th><th>Meaning</th></tr>
+            <tr><td>"name"</td><td>The unique name of the connection</td></tr>
+            <tr><td>"description"</td><td>The description of the connection</td></tr>
+            <tr><td>"class_name"</td><td>The java class name of the class implementing the connection</td></tr>
+            <tr><td>"max_connections"</td><td>The total number of outstanding connections allowed to exist at a time</td></tr>
+            <tr><td>"configuration"</td><td>The configuration object for the connection, which is specific to the connection class</td></tr>
+            <tr><td>"acl_authority"</td><td>The (optional) name of the authority that will enforce security for this connection</td></tr>
+            <tr><td>"throttle"</td><td>An array of throttle objects, which control how quickly documents can be requested from this connection</td></tr>
+          </table>
+          <p></p>
+          <p>Each throttle object has the following fields:</p>
+          <p></p>
+          <table>
+            <tr><th>Field</th><th>Meaning</th></tr>
+            <tr><td>"match"</td><td>The regular expression which is used to match a document's bins to determine if the throttle should be applied</td></tr>
+            <tr><td>"match_description"</td><td>Optional text describing the meaning of the throttle</td></tr>
+            <tr><td>"rate"</td><td>The maximum fetch rate to use if the throttle applies, in fetches per minute</td></tr>
+          </table>
+          <p></p>
+        </section>
+        <section>
+          <title>Job objects</title>
+          <p></p>
+          <p>The JSON fields for a job are is as follows:</p>
+          <p></p>
+          <table>
+            <tr><th>Field</th><th>Meaning</th></tr>
+            <tr><td>"id"</td><td>The job's identifier, if present.  If not present, ManifoldCF will create one (and will also create the job when saved).</td></tr>
+            <tr><td>"description"</td><td>Text describing the job</td></tr>
+            <tr><td>"repository_connection"</td><td>The name of the repository connection to use with the job</td></tr>
+            <tr><td>"output_connection"</td><td>The name of the output connection to use with the job</td></tr>
+            <tr><td>"document_specification"</td><td>The document specification object for the job, whose format is repository-connection specific</td></tr>
+            <tr><td>"output_specification"</td><td>The output specification object for the job, whose format is output-connection specific</td></tr>
+            <tr><td>"start_mode"</td><td>The start mode for the job, which can be one of "schedule window start", "schedule window anytime", or "manual"</td></tr>
+            <tr><td>"run_mode"</td><td>The run mode for the job, which can be either "continuous" or "scan once"</td></tr>
+            <tr><td>"hopcount_mode"</td><td>The hopcount mode for the job, which can be either "accurate", "no delete", "never delete"</td></tr>
+            <tr><td>"priority"</td><td>The job's priority, typically "5"</td></tr>
+            <tr><td>"recrawl_interval"</td><td>The default time between recrawl of documents (if the job is "continuous"), in milliseconds, or "infinite" for infinity</td></tr>
+            <tr><td>"expiration_interval"</td><td>The time until a document expires (if the job is "continuous"), in milliseconds, or "infinite" for infinity</td></tr>
+            <tr><td>"reseed_interval"</td><td>The time between reseeding operations (if the job is "continuous"), in milliseconds, or "infinite" for infinity</td></tr>
+            <tr><td>"hopcount"</td><td>An array of hopcount objects, describing the link types and associated maximum hops permitted for the job</td></tr>
+            <tr><td>"schedule"</td><td>An array of schedule objects, describing when the job should be started and run</td></tr>
+          </table>
+          <p></p>
+          <p>Each hopcount object has the following fields:</p>
+          <p></p>
+          <table>
+            <tr><th>Field</th><th>Meaning</th></tr>
+            <tr><td>"link_type"</td><td>The connection-type-dependent type of a link for which a hop count restriction is specified</td></tr>
+            <tr><td>"count"</td><td>The maximum number of hops allowed for the associated link type, starting at a seed</td></tr>
+          </table>
+          <p></p>
+          <p>Each schedule object has the following fields:</p>
+          <p></p>
+          <table>
+            <tr><th>Field</th><th>Meaning</th></tr>
+            <tr><td>"timezone"</td><td>The optional time zone for the schedule object; if not present the default server time zone is used</td></tr>
+            <tr><td>"duration"</td><td>The optional length of the described time window, in milliseconds; if not present, duration is considered infinite</td></tr>
+            <tr><td>"dayofweek"</td><td>The optional day-of-the-week enumeration object</td></tr>
+            <tr><td>"monthofyear"</td><td>The optional month-of-the-year enumeration object</td></tr>
+            <tr><td>"dayofmonth"</td><td>The optional day-of-the-month enumeration object</td></tr>
+            <tr><td>"year"</td><td>The optional year enumeration object</td></tr>
+            <tr><td>"hourofday"</td><td>The optional hour-of-the-day enumeration object</td></tr>
+            <tr><td>"minutesofhour"</td><td>The optional minutes-of-the-hour enumeration object</td></tr>
+          </table>
+          <p></p>
+          <p>Each enumeration object describes an array of integers using the form:</p>
+          <p></p>
+          <p>{"value":[<em>&lt;integer_list&gt;</em>]}</p>
+          <p></p>
+          <p>Each integer is a zero-based index describing which entity is being specified.  For example, for "dayofweek", 0 corresponds to Sunday, etc., and thus "dayofweek":{"value":[0,6]} would describe Saturdays and Sundays.</p>
+          <p></p>
+        </section>
+        <section>
+          <title>Job status objects</title>
+          <p></p>
+          <p>The JSON fields of a job status object are as follows:</p>
+          <p></p>
+          <table>
+            <tr><th>Field</th><th>Meaning</th></tr>
+            <tr><td>"job_id"</td><td>The job identifier</td></tr>
+            <tr><td>"status"</td><td>The job status, having the possible values: "not yet run", "running", "paused", "done", "waiting", "stopping", "resuming", "starting up", "cleaning up", "error", "aborting", "restarting", "running no connector", and "terminating"</td></tr>
+            <tr><td>"error_text"</td><td>The error text, if the status is "error"</td></tr>
+            <tr><td>"start_time"</td><td>The job start time, in milliseconds since Jan 1, 1970</td></tr>
+            <tr><td>"end_time"</td><td>The job end time, in milliseconds since Jan 1, 1970</td></tr>
+            <tr><td>"documents_in_queue"</td><td>The total number of documents in the queue for the job</td></tr>
+            <tr><td>"documents_outstanding"</td><td>The number of documents for the job that are currently considered 'active'</td></tr>
+            <tr><td>"documents_processed"</td><td>The number of documents that in the queue for the job that have been processed at least once</td></tr>
+          </table>
+          <p></p>
+        </section>
+        <section>
+          <title>Connection-type-specific objects</title>
+          <p></p>
+          <p>As you may note when trying to use the above JSON API methods, you cannot get very far in defining connections or jobs without knowing the JSON format of a connection's configuration information, or a job's connection-specific document specification and output specification information.  The form of these objects is controlled by the Java implementation of the underlying connector, and is translated directly into JSON, so if you write your own connector you should be able to figure out what it will be in the API.  For connectors already part of ManifoldCF, it remains an ongoing task to document these connector-specific objects.  This task is not yet underway.</p>
+          <p></p>
+          <p>Luckily, it is pretty easy to learn a lot about the objects in question by simply creating connections and jobs in the ManifoldCF crawler UI, and then inspecting the resulting JSON objects through the API.  In this way, it should be possible to do a decent job of coding most API-based integrations.  The one place where difficulties will certainly occur will be if you try to completely replace the ManifoldCF crawler UI with one of your own.  This is because most connectors have methods that communicate with their respective back-ends in order to allow the user to select appropriate values.  For example, the path drill-down that is presented by the LiveLink connector requires that the connector interrogate the appropriate LiveLink repository in order to populate its path selection pull-downs.  There is, at this time, only one sanctioned way to accomplish the same job using the API, which is to use the appropriate "<em>connection_type</em>/execute/<em>type-specific
 _command</em>" command to perform the necessary functions.  Some set of useful functions has been coded for every appropriate connector, but the exact commands for every connector, and their JSON syntax, remains undocumented for now.</p>
+          <p></p>
+        </section>
+        <section>
+          <title>File system connector</title>
+          <p></p>
+          <p>The file system connector has no configuration information, and no connector-specific commands.  However, it does have document specification information.  The information looks something like this:</p>
+          <p></p>
+          <p>{"startpoint":[{"_attribute_path":"c:\path_to_files","include":[{"_attribute_type":"file","_attribute_match":"*.txt"},{"_attribute_type":"file","_attribute_match":"*.doc"\,"_attribute_type":"directory","_attribute_match":"*"],"exclude":["*.mov"]]}</p>
+          <p></p>
+          <p>As you can see, multiple starting paths are possible, and the inclusion and exclusion rules also can be one or multiple.</p>
+          <p></p>
+          <p></p>
+        </section>
+      </section>
+      <section>
+        <title>Control via Commands</title>
+        <p></p>
+        <p>For script writers, there currently exist a number of ManifoldCF execution commands.  These commands are primarily rich in the area of definition of connections and jobs, controlling jobs, and running reports.  The following table lists the current suite.</p>
+        <p></p>
+        <table>
+          <tr><th>Command</th><th>What it does</th></tr>
+          <tr><td>org.apache.manifoldcf.agents.DefineOutputConnection</td><td>Create a new output connection</td></tr>
+          <tr><td>org.apache.manifoldcf.agents.DeleteOutputConnection</td><td>Delete an existing output connection</td></tr>
+          <tr><td>org.apache.manifoldcf.authorities.ChangeAuthSpec</td><td>Modify an authority's configuration information</td></tr>
+          <tr><td>org.apache.manifoldcf.authorities.CheckAll</td><td>Check all authorities to be sure they are functioning</td></tr>
+          <tr><td>org.apache.manifoldcf.authorities.DefineAuthorityConnection</td><td>Create a new authority connection</td></tr>
+          <tr><td>org.apache.manifoldcf.authorities.DeleteAuthorityConnection</td><td>Delete an existing authority connection</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.AbortJob</td><td>Abort a running job</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.AddScheduledTime</td><td>Add a schedule record to a job</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.ChangeJobDocSpec</td><td>Modify a job's specification information</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.DefineJob</td><td>Create a new job</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.DefineRepositoryConnection</td><td>Create a new repository connection</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.DeleteJob</td><td>Delete an existing job</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.DeleteRepositoryConnection</td><td>Delete an existing repository connection</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.ExportConfiguration</td><td>Write the complete list of all connection definitions and job specifications to a file</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.FindJob</td><td>Locate a job identifier given a job's name</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.GetJobSchedule</td><td>Find a job's schedule given a job's identifier</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.ImportConfiguration</td><td>Import configuration as written by a previous ExportConfiguration command</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.ListJobStatuses</td><td>List the status of all jobs</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.ListJobs</td><td>List the identifiers for all jobs</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.PauseJob</td><td>Given a job identifier, pause the specified job</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.RestartJob</td><td>Given a job identifier, restart the specified job</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.RunDocumentStatus</td><td>Run a document status report</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.RunMaxActivityHistory</td><td>Run a maximum activity report</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.RunMaxBandwidthHistory</td><td>Run a maximum bandwidth report</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.RunQueueStatus</td><td>Run a queue status report</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.RunResultHistory</td><td>Run a result history report</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.RunSimpleHistory</td><td>Run a simply history report</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.StartJob</td><td>Start a job</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.WaitForJobDeleted</td><td>After a job has been deleted, wait until the delete has completed</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.WaitForJobInactive</td><td>After a job has been started or aborted, wait until the job ceases all activity</td></tr>
+          <tr><td>org.apache.manifoldcf.crawler.WaitJobPaused</td><td>After a job has been paused, wait for the pause to take effect</td></tr>
+        </table>
+        <p></p>
+      </section>
+      <section>
+        <title>Control by direct code</title>
+        <p></p>
+        <p>Control by direct java code is quite a reasonable thing to do.  The sources of the above commands should give a pretty clear idea how to proceed, if that's what you want to do.</p>
+        <p></p>
+        <p></p>
+      </section>
+      <section>
+        <title>Caveats</title>
+        <p></p>
+        <p>The above commands know nothing about the differences between connection types.  Instead, they deal with configuration and specification information in the form of XML documents.  Normally, these XML documents are hidden from a system integrator, unless they happen to look into the database with a tool such as psql.  But the API commands above often will require such XML documents to be included as part of the command execution.</p>
+        <p></p>
+        <p>This has one major consequence.  Any application that would manipulate connections and jobs directly cannot be connection-type independent - these applications must know the proper form of XML to submit to the command.  So, it is not possible to use these command APIs to write one's own UI wrapper, without sacrificing some of the repository independence that ManifoldCF by itself maintains.</p>
+      </section>
+    </section>
+  </body>
+
+</document>

Propchange: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/programmatic-operation.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/programmatic-operation.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Added: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/script.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/script.xml?rev=1227119&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/script.xml (added)
+++ incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/script.xml Wed Jan  4 11:10:09 2012
@@ -0,0 +1,413 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" 
+          "http://forrest.apache.org/dtd/document-v20.dtd">
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<document> 
+
+  <header> 
+    <title>ManifoldCF Scripting Language</title> 
+  </header> 
+
+  <body> 
+    <section>
+      <title>Overview</title>
+      <p></p>
+      <p>The ManifoldCF scripting language allows symbolic communication with the ManifoldCF API Service
+        in order to define connections and jobs, and perform crawls.  The language provides support for JSON-like hierarchical
+        documents, as well as the ability to construct properly encoded REST URLs.  It also has support for simple control flow
+        and error handling.</p>
+    </section>
+    
+    <section>
+      <title>How to use the script interpreter</title>
+      <p></p>
+      <p>The ManifoldCF script interpreter can be used in two ways - either as a real-time shell (executing a script as it is typed),
+        or interpreting a script file.  The main class of the interpreter is <em>org.apache.manifoldcf.scriptengine.ScriptParser</em>,
+        and the two ways of invoking it are:</p>
+      <source>
+java -cp ... org.apache.manifoldcf.scriptengine.ScriptParser
+      </source>
+      <p>or:</p>
+      <source>
+java -cp ... org.apache.manifoldcf.scriptengine.ScriptParser &lt;script_file&gt; &lt;arg1&gt; ... &lt;argN&gt;
+      </source>
+      <p>If you choose to invoke ScriptParser in interactive mode, simply type your script one line at a time.  Any errors will be reported immediately,
+        and the ScriptParser will accordingly exit.  You can also type ^Z to terminate the script.</p>
+      <p>If you use ScriptParser with a scripting file, that file will be read and interpreted.  The arguments you provide will be loaded into an array
+        of strings, which is accessible from your script as the variable named <em>__args__</em>.</p>
+      <section>
+        <title>Running the script interpreter by hand</title>
+        <p></p>
+        <p>When you build ManifoldCF, the required dependent jars for the scripting language are copied to <em>dist/script-engine/jar</em>.
+          You can run the interpreter in interactive mode by typing:</p>
+        <source>
+cd dist
+script-engine\script\run-script.bat &lt;args&gt;
+        </source>
+        <p>Or, on Linux:</p>
+        <source>
+cd dist
+script-engine/script/run-script.sh &lt;args&gt;
+        </source>
+      </section>
+      <section>
+        <title>Running the script interpreter using Ant</title>
+        <p></p>
+        <p>You can also start the script interpreter with all the correct required jars using Ant.  Simple type the following:</p>
+        <source>
+ant run-script-interpreter
+        </source>
+        <p>This will start the script interpreter in interactive mode only.</p>
+      </section>
+      <section>
+        <title>Running the script interpreter using Maven</title>
+        <p></p>
+        <p>You can also run the script interpreter using maven.  The commands are:</p>
+        <source>
+cd framework/script-engine
+mvn exec:exec
+        </source>
+        <p>This, once again, will start the interpreter in interactive mode.</p>
+      </section>
+    </section>
+
+    <section>
+      <title>Script language syntax</title>
+      <p></p>
+      <p>A ManifoldCF script is not sensitive to whitespace or indenting.  All comments begin with a '#' character and end with the end of that line.
+        Unquoted tokens can include alphanumeric characters, plus '_', '$', and '@'.  Numeric tokens always begin with a number ('0'-'9'), and are
+        considered floating-point if they include a decimal point ('.').  Otherwise they are integers.  String tokens can be quoted with either a double quote
+        ('"') or a single quote, and within strings characters can be escaped with a preceding backslash ('\').</p>
+      <p>A ManifoldCF script has a syntax that is readily described with a BNF grammar.  See below.</p>
+      <source>
+program:
+--&gt; statements
+  
+statements:
+--&gt; statement1 ... statementN
+
+statement:
+--&gt; 'set' expression '=' expression ';'
+--&gt; 'print' expression ';'
+--&gt; 'if' expression 'then' statements ['else' statements] ';'
+--&gt; 'while' expression 'do' statements ';'
+--&gt; 'break' ';'
+--&gt; 'error' expression ';'
+--&gt; 'insert' expression 'into' expression ['at' expression] ';'
+--&gt; 'remove' expression 'from' expression ';'
+--&gt; 'wait' expression ';'
+--&gt; 'GET' expression '=' expression ';'
+--&gt; 'PUT' expression '=' expression 'to' expression ';'
+--&gt; 'POST' expression '=' expression 'to' expression ';'
+--&gt; 'DELETE' expression ';'
+
+expression:
+--&gt; '(' expression ')'
+--&gt; expression '&amp;&amp;' expression
+--&gt; expression '||' expression
+--&gt; '!' expression
+--&gt; expression '&amp;' expression
+--&gt; expression '|' expression
+--&gt; expression '==' expression
+--&gt; expression '!=' expression
+--&gt; expression '&gt;=' expression
+--&gt; expression '&lt;=' expression
+--&gt; expression '&gt;' expression
+--&gt; expression '&lt;' expression
+--&gt; expression '+' expression
+--&gt; expression '-' expression
+--&gt; expression '*' expression
+--&gt; expression '/' expression
+--&gt; '-' expression
+--&gt; '[' [expression [',' expression ...]] ']'
+--&gt; '{' [expression [',' expression ...]] '}'
+--&gt; '&lt;&lt;' expression ':' expression ':' [expression '=' expression [',' expression '=' expression ...]] ':' [expression [',' expression ...]] '&gt;&gt;'
+--&gt; expression '[' expression ']'
+--&gt; expression '.' token
+--&gt; token
+--&gt; string
+--&gt; number
+--&gt; 'true' | 'false'
+--&gt; 'null'
+--&gt; 'new' newexpression
+--&gt; 'isnull' expression
+
+newexpression:
+--&gt; 'url' expression
+--&gt; 'connectionname' expression
+
+      </source>  
+    </section>
+    
+    <section>
+      <title>Script language variables</title>
+      <p></p>
+      <p>Variables in the ManifoldCF scripting language determine the behavior of all aspects of expression evaluation, with the exception of operator precedence.
+        In particular, every canonical variable has the ability to support arbitrary <em>attributes</em> (which are named properties of the variable), 
+        <em>subscripts</em> (children which are accessed by a numeric subscript), and all other <em>operations</em>, such as '+' or '=='.  Not all kinds of
+        variable instance will in fact support all such features.  Should you try to use a feature with a variable that does not support it, you will receive a
+        ScriptException telling you what you did wrong.</p>
+      <p>Since the actual operation details are bound to the variable, for binary operations the left-hand variable typically determines what actually takes place.  For example:</p>
+      <source>
+print 3+7;
+     [java] 10
+print "3"+7;
+     [java] 37
+      </source>
+      <p>There is, of course, a way to caste a variable to a different type.  For example:</p>
+      <source>
+print "3".__int__+7;
+     [java] 10
+      </source>
+      <p>Here, we are using the built-in attribute <em>__int__</em> to obtain the integer equivalent of the original string variable "3".  See the following table for
+        a list of some of the standard attributes and their meanings:</p>
+      <table>
+        <caption>Standard attributes</caption>
+        <tr><th>Attribute name</th><th>Meaning</th></tr>
+        <tr><td>__script__</td><td>Returns the script code that would create this variable</td></tr>
+        <tr><td>__string__</td><td>Returns the string value of the variable, if any</td></tr>
+        <tr><td>__int__</td><td>Returns the integer value of the variable, if any</td></tr>
+        <tr><td>__float__</td><td>Returns the floating-point value of the variable, if any</td></tr>
+        <tr><td>__boolean__</td><td>Returns the boolean value of the variable, if any</td></tr>
+        <tr><td>__size__</td><td>Typically returns the number of subscript children</td></tr>
+        <tr><td>__type__</td><td>Returns the 'type' of the variable</td></tr>
+        <tr><td>__value__</td><td>Returns the 'value' of the variable</td></tr>
+        <tr><td>__dict__</td><td>Returns a dictionary equivalent of the variable</td></tr>
+        <tr><td>__OK__</td><td>Returns a boolean 'true' if the variable was "OK", false otherwise</td></tr>
+        <tr><td>__NOTFOUND__</td><td>Returns a boolean 'true' if the variable was "NOTFOUND", false otherwise</td></tr>
+        <tr><td>__CREATED__</td><td>Returns a boolean 'true' if the variable was "CREATED", false otherwise</td></tr>
+      </table>
+      <p>Obviously, only some variables will support each of the standard attributes.  You will receive a script exception if you try to obtain a non-existent
+        attribute for a variable.</p>
+      <section>
+        <title>Integers</title>
+        <p>Integer variable types are created by non-quoted numeric values that do not have a '.' in them.  For example, the character '4' will create an integer
+          variable type with a value of 4.</p>
+        <p>The operations supported for this variable type, and their meanings, are listed in the table below:</p>
+        <table>
+          <caption>Integer operations</caption>
+          <tr><th>Operation</th><th>Meaning</th><th>Example</th></tr>
+          <tr><td>binary +</td><td>Addition, yielding an integer</td><td>4+7</td></tr>
+          <tr><td>binary -</td><td>Subtraction, yielding an integer</td><td>7-4</td></tr>
+          <tr><td>binary *</td><td>Multiplication, yielding an integer</td><td>7*4</td></tr>
+          <tr><td>binary /</td><td>Division, yielding an integer</td><td>7/4</td></tr>
+          <tr><td>unary -</td><td>Negation, yielding an integer</td><td>-4</td></tr>
+          <tr><td>binary ==</td><td>Equality comparison, yielding a boolean</td><td>7 == 4</td></tr>
+          <tr><td>binary !=</td><td>Inequality comparison, yielding a boolean</td><td>7 != 4</td></tr>
+          <tr><td>binary &gt;=</td><td>Greater or equals comparison, yielding a boolean</td><td>7 &gt;= 4</td></tr>
+          <tr><td>binary &lt;=</td><td>Less or equals comparison, yielding a boolean</td><td>7 &lt;= 4</td></tr>
+          <tr><td>binary &gt;</td><td>Greater comparison, yielding a boolean</td><td>7 &gt; 4</td></tr>
+          <tr><td>binary &lt;</td><td>Less comparison, yielding a boolean</td><td>7 &lt; 4</td></tr>
+          <tr><td>binary &amp;</td><td>Bitwise AND, yielding an integer</td><td>7 &amp; 4</td></tr>
+          <tr><td>binary |</td><td>Bitwise OR, yielding an integer</td><td>7 | 4</td></tr>
+          <tr><td>unary !</td><td>Bitwise NOT, yielding an integer</td><td>! 7</td></tr>
+        </table>
+        <p>In addition, the standard attributes <em>__script__</em>, <em>__string__</em>, <em>__int__</em>, and <em>__float__</em> are supported 
+          by integer types.</p>
+      </section>
+      <section>
+        <title>Strings</title>
+        <p>String variable types are created by quoted sequences of characters.  For example, the character '"hello world"' will create a string
+          variable type with an (unquoted) value of "hello world".</p>
+        <p>The operations supported for this variable type, and their meanings, are listed in the table below:</p>
+        <table>
+          <caption>String operations</caption>
+          <tr><th>Operation</th><th>Meaning</th><th>Example</th></tr>
+          <tr><td>binary +</td><td>Concatenation, yielding a string</td><td>"hi" + "there"</td></tr>
+          <tr><td>binary ==</td><td>Equality comparison, yielding a boolean</td><td>"hi" == "there"</td></tr>
+          <tr><td>binary !=</td><td>Inequality comparison, yielding a boolean</td><td>"hi" != "there"</td></tr>
+        </table>
+        <p>In addition, the standard attributes <em>__script__</em>, <em>__string__</em>, <em>__int__</em>, and <em>__float__</em> are supported 
+          by string types.</p>
+      </section>
+      <section>
+        <title>Floating-point numbers</title>
+        <p>Float variable types are created by non-quoted numeric values that have a '.' in them.  For example, the token '4.1' will create a float
+          variable type with a value of 4.1</p>
+        <p>The operations supported for this variable type, and their meanings, are listed in the table below:</p>
+        <table>
+          <caption>Float operations</caption>
+          <tr><th>Operation</th><th>Meaning</th><th>Example</th></tr>
+          <tr><td>binary +</td><td>Addition, yielding a float</td><td>4.0+7.0</td></tr>
+          <tr><td>binary -</td><td>Subtraction, yielding a float</td><td>7.0-4.0</td></tr>
+          <tr><td>binary *</td><td>Multiplication, yielding a float</td><td>7.0*4.0</td></tr>
+          <tr><td>binary /</td><td>Division, yielding a float</td><td>7.0/4.0</td></tr>
+          <tr><td>unary -</td><td>Negation, yielding a float</td><td>-4.0</td></tr>
+          <tr><td>binary ==</td><td>Equality comparison, yielding a boolean</td><td>7.0 == 4.0</td></tr>
+          <tr><td>binary !=</td><td>Inequality comparison, yielding a boolean</td><td>7.0 != 4.0</td></tr>
+          <tr><td>binary &gt;=</td><td>Greater or equals comparison, yielding a boolean</td><td>7.0 &gt;= 4.0</td></tr>
+          <tr><td>binary &lt;=</td><td>Less or equals comparison, yielding a boolean</td><td>7.0 &lt;= 4.0</td></tr>
+          <tr><td>binary &gt;</td><td>Greater comparison, yielding a boolean</td><td>7.0 &gt; 4.0</td></tr>
+          <tr><td>binary &lt;</td><td>Less comparison, yielding a boolean</td><td>7.0 &lt; 4.0</td></tr>
+        </table>
+        <p>In addition, the standard attributes <em>__script__</em>, <em>__string__</em>, <em>__int__</em>, and <em>__float__</em> are supported 
+          by float types.</p>
+      </section>
+      <section>
+        <title>Booleans</title>
+        <p>Boolean variable types are created by the keywords <strong>true</strong> and <strong>false</strong>.  For example, the code 'true' will create a boolean
+          variable type with a value of "true".</p>
+        <p>The operations supported for this variable type, and their meanings, are listed in the table below:</p>
+        <table>
+          <caption>Boolean operations</caption>
+          <tr><th>Operation</th><th>Meaning</th><th>Example</th></tr>
+          <tr><td>binary ==</td><td>Equality comparison, yielding a boolean</td><td>7.0 == 4.0</td></tr>
+          <tr><td>binary !=</td><td>Inequality comparison, yielding a boolean</td><td>7.0 != 4.0</td></tr>
+          <tr><td>binary &amp;&amp;</td><td>AND logical operation, yielding a boolean</td><td>true &amp;&amp; false</td></tr>
+          <tr><td>binary ||</td><td>OR logical operation, yielding a boolean</td><td>true || false</td></tr>
+          <tr><td>binary &amp;</td><td>AND logical operation, yielding a boolean</td><td>true &amp; false</td></tr>
+          <tr><td>binary |</td><td>OR logical operation, yielding a boolean</td><td>true | false</td></tr>
+          <tr><td>unary !</td><td>NOT logical operation, yielding a boolean</td><td>! true</td></tr>
+        </table>
+        <p>In addition, the standard attributes <em>__script__</em> and <em>__boolean__</em> are supported 
+          by boolean types.</p>
+      </section>
+      <section>
+        <title>Arrays</title>
+        <p>Array variable types are created by an initializer of the form <strong>[</strong> [<em>expression</em> [<strong>,</strong> <em>expression</em> ...]] <strong>]</strong>.  For example, the script code '[3, 4]' will create an array
+          variable type with two values,  the integer "3" and the integer "4".</p>
+        <p>The operations supported for this variable type, and their meanings, are listed in the table below:</p>
+        <table>
+          <caption>Array operations</caption>
+          <tr><th>Operation</th><th>Meaning</th><th>Example</th></tr>
+          <tr><td>subscript []</td><td>Find the specified subscript variable, yielding the variable</td><td>[3,4] [0]</td></tr>
+        </table>
+        <p>In addition, the standard attributes <em>__script__</em> and <em>__size__</em> are supported 
+          by array types, as well as the <em>insert</em> and <em>remove</em> statements.</p>
+      </section>
+      <section>
+        <title>Dictionaries</title>
+        <p>Array variable types are created using the "new" operator, e.g. <strong>new</strong> <strong>dictionary</strong>.</p>
+        <p>The operations supported for this variable type, and their meanings, are listed in the table below:</p>
+        <table>
+          <caption>Array operations</caption>
+          <tr><th>Operation</th><th>Meaning</th><th>Example</th></tr>
+          <tr><td>subscript []</td><td>Find the specified key, yielding the keyed variable</td><td>mydict ["keyname"]</td></tr>
+        </table>
+        <p>In addition, the standard attributes <em>__script__</em> and <em>__size__</em> are supported 
+          by dictionary types.</p>
+      </section>
+      <section>
+        <title>Configurations</title>
+        <p>Configuration variables contain the equivalent of the JSON used to communicate with the ManifoldCF API.  They can be created using an initializer
+          of the form <strong>{</strong> [<em>expression</em> [<strong>,</strong> <em>expression</em> ...]] <strong>}</strong>.  For example, the script code '{ &lt; "outputconnector" : "" :  : , &lt; "description" : "Solr" :  :  &gt;, &lt; "class_name" : "org.apache.manifoldcf.agents.output.solr.SolrConnector" :  :  &gt; &gt; }'
+          would create a configuration variable equivalent to one that might be returned from the ManifoldCF API if it was queried for the output connectors registered by the system.</p>
+        <p>The operations supported for this variable type, and their meanings are listed in the table below:</p>
+        <table>
+          <caption>Configuration operations</caption>
+          <tr><th>Operation</th><th>Meaning</th><th>Example</th></tr>
+          <tr><td>subscript []</td><td>Find the specified child configuration node variable, yielding the variable</td><td>myconfig [0]</td></tr>
+          <tr><td>binary +</td><td>Append a configuration child node variable to the list</td><td>myconfig + &lt; "something" : "somethingvalue" : : &gt;</td></tr>
+        </table>
+        <p>In addition, the standard attributes <em>__script__</em>, <em>__dict__</em>, and <em>__size__</em> are supported 
+          by configuration variable types, as well as the <em>insert</em> and <em>remove</em> statements.</p>
+      </section>
+      <section>
+        <title>Configuration nodes</title>
+        <p>Configuration node variable types are children of configuration variable types or configuration node variable types.  They have several components, as listed below:</p>
+        <ul>
+          <li>A type</li>
+          <li>A value</li>
+          <li>Attributes, described as a set of name/value pairs</li>
+          <li>Children, which must be configuration node variable types</li>
+        </ul>
+        <p>Configuration node variable types can be created using an initializer of the form <strong>&lt;&lt;</strong> <em>expression</em> <strong>:</strong> <em>expression</em> <strong>:</strong> [<em>expression</em> <strong>=</strong> <em>expression</em> [<strong>,</strong> <em>expression</em> <strong>=</strong> <em>expression</em> ...]] <strong>:</strong> [<em>expression</em> [<strong>,</strong> <em>expression</em> ... ]] '&gt;&gt;'.
+          The first expression represents the type of the node.  The second is the node's value.  The series of '=' expressions represents attribute names and values.  The last series represents
+          the children of the node.  For example, the script code '&lt; "description" : "Solr" :  :  &gt;' represents a node of type 'description' with a value of 'Solr', with no attributes or children.</p>
+        <p>The operations supported for this variable type, and their meanings are listed in the table below:</p>
+        <table>
+          <caption>Configuration node operations</caption>
+          <tr><th>Operation</th><th>Meaning</th><th>Example</th></tr>
+          <tr><td>subscript []</td><td>Find the specified child configuration node variable, yielding the variable</td><td>myconfig [0]</td></tr>
+          <tr><td>binary +</td><td>Append a configuration child node variable to the list</td><td>myconfig + &lt;&lt; "something" : "somethingvalue" : : &gt;&gt;</td></tr>
+        </table>
+        <p>In addition, the standard attributes <em>__script__</em>, <em>__string__</em>, <em>__size__</em>, <em>__type__</em>, <em>__dict__</em> and <em>__value__</em> are supported 
+          by configuration node variable types, as well as the <em>insert</em> and <em>remove</em> statements.</p>
+      </section>
+      <section>
+        <title>URLs</title>
+        <p>URL variable types exist to take care of the details of URL encoding while assembling the REST URL's needed to describe objects in ManifoldCF's REST API.  A URL variable
+          type can be created using a 'new' operation of the form <strong>new</strong> <strong>url</strong> <em>expression</em>, where the expression is the already-encoded root path.  For example, the script code 'new url "http://localhost:8345/mcf-api-service/json"'
+          would create a URL variable type with the root path "http://localhost:8345/mcf-api-service/json".</p>
+        <p>The operations supported for this variable type, and their meanings are listed in the table below:</p>
+        <table>
+          <caption>URL operations</caption>
+          <tr><th>Operation</th><th>Meaning</th><th>Example</th></tr>
+          <tr><td>binary ==</td><td>Equals comparison, yielding a boolean</td><td>url1 == url2</td></tr>
+          <tr><td>binary !=</td><td>Non-equals comparison, yielding a boolean</td><td>url1 != url2</td></tr>
+          <tr><td>binary +</td><td>Append and encode another path element, yielding a URL</td><td>url1 + "repositoryconnections"</td></tr>
+        </table>
+        <p>In addition, the standard attributes <em>__script__</em> and <em>__string__</em>  are supported 
+          by URL variable types.</p>
+      </section>
+      <section>
+        <title>Connection names</title>
+        <p>Connection name variable types exist to perform the extra URL encoding needed for ManifoldCF's REST API.  Connection names must be specially encoded so that they do not
+          contain slash characters ('/').  Connection name variable types take care of this encoding.</p>
+        <p>You can create a connection name variable type using the following syntax: <strong>new</strong> <strong>connectionname</strong> <em>expression</em>, where the expression is the name of the connection.
+        </p>
+        <p>The operations supported for this variable type, and their meanings are listed in the table below:</p>
+        <table>
+          <caption>URL operations</caption>
+          <tr><th>Operation</th><th>Meaning</th><th>Example</th></tr>
+          <tr><td>binary ==</td><td>Equals comparison, yielding a boolean</td><td>cn1 == cn2</td></tr>
+          <tr><td>binary !=</td><td>Non-equals comparison, yielding a boolean</td><td>cn1 != cn2</td></tr>
+        </table>
+        <p>In addition, the standard attributes <em>__script__</em> and <em>__string__</em>  are supported 
+          by connection name variable types.</p>
+      </section>
+      <section>
+        <title>Results</title>
+        <p>Result variable types capture the result of a GET, PUT, POST, or DELETE statement.  They consist of two parts:</p>
+        <ul>
+          <li>A result code</li>
+          <li>A result configuration value</li>
+        </ul>
+        <p>There is no way to directly create a result variable type, nor does it support any operations.  However, the standard attributes <em>__script__</em>, <em>__string__</em>,
+          <em>__value__</em>, <em>__OK__</em>, <em>__NOTFOUND__</em>, and <em>__CREATED__</em> are all supported by result variable types.</p>
+      </section>
+    </section>
+    
+    <section>
+      <title>Statements</title>
+      <p>The statements available to a ManifoldCF script programmer are designed to support interaction with the ManifoldCF API.  Thus, there is support for
+        all four HTTP verbs, as well as basic variable setting and control flow.  The table below describes each statement type:</p>
+      <table>
+        <caption>Statement types</caption>
+        <tr><th>Statement</th><th>Meaning</th><th>Example</th></tr>
+        <tr><td>'set' expression '=' expression ';'</td><td>Sets the variable described by the first expression with the value computed for the second</td><td>set myvar = 4 + 5;</td></tr>
+        <tr><td>'print' expression ';'</td><td>Prints the string value of the expression to stdout</td><td>print "hello world";</td></tr>
+        <tr><td>'if' expression 'then' statements ['else' statements] ';'</td><td>If the boolean value of the expression is 'true', executes the first set of statements, otherwise executes the (optional) second set</td><td>if true then print "hello"; else print "there"; ;</td></tr>
+        <tr><td>'while' expression 'do' statements ';'</td><td>While expression is true, execute the specified statements, and repeat</td><td>while count > 0 do set count = count - 1; ;</td></tr>
+        <tr><td>'break' ';'</td><td>Exits from the nearest enclosing while loop</td><td>while true do break; ;</td></tr>
+        <tr><td>'error' expression ';'</td><td>Aborts the script with a script exception based on the string value of the expression</td><td>error "bad stuff";</td></tr>
+        <tr><td>'wait' expression ';'</td><td>Waits the number of milliseconds corresponding to the integer value of the expression</td><td>wait 1000;</td></tr>
+        <tr><td>'insert' expression 'into' expression ['at' expression] ';'</td><td>Inserts the first expression into the second variable expression, either at the end or optionally at the position specified by the third expression</td><td>insert 4 into myarray at 0 ;</td></tr>
+        <tr><td>'delete' expression 'from' expression ';'</td><td>Deletes the element described by the first expression from the second expression</td><td>delete 0 from myarray ;</td></tr>
+        <tr><td>'GET' expression '=' expression ';'</td><td>Perform an HTTP GET from the URL specified in the second expression capturing the result in the first expression</td><td>GET result = new url "http://localhost:8345/mcf-api-service/json/repositoryconnections" ;</td></tr>
+        <tr><td>'DELETE' expression '=' expression ';'</td><td>Perform an HTTP DELETE on the URL specified in the second expression capturing the result in the first expression</td><td>DELETE result = myurl ;</td></tr>
+        <tr><td>'PUT' expression '=' expression 'to' expression ';'</td><td>Perform an HTTP PUT of the second expression to the URL specified in the third expression capturing the result in the first expression</td><td>PUT result = configurationObject to myurl ;</td></tr>
+        <tr><td>'POST' expression '=' expression 'to' expression ';'</td><td>Perform an HTTP POST of the second expression to the URL specified in the third expression capturing the result in the first expression</td><td>POST result = configurationObject to myurl ;</td></tr>
+      </table>
+    </section>
+  </body>
+
+</document>

Propchange: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/script.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/script.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Added: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/site.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/site.xml?rev=1227119&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/site.xml (added)
+++ incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/site.xml Wed Jan  4 11:10:09 2012
@@ -0,0 +1,94 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2002-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<site label="ManifoldCF" href="" xmlns="http://apache.org/forrest/linkmap/1.0" tab="main">
+
+  <project label="About">
+    <news        label="Welcome"          href="index.html" />    
+    <who         label="Who We Are"       href="who.html" />    
+    <book        label="Get the Book"      href="ext:book" />
+    <store       label="Buy Stuff"        href="ext:store" />    
+    <sponsor     label="Sponsor Apache"     href="ext:sponsor" />    
+    <thanks      label="Sponsors of Apache" href="ext:thanks" />    
+  </project>
+  
+  <docs label="Documentation">
+    <dev label="Concepts" href="concepts.html"/>
+    <dev label="Compatibility Matrix" href="included-connectors.html"/>
+    <dev label="Frequently Asked Questions" href="faq.html"/>
+    <dev label="API Documentation" href="programmatic-operation.html"/>
+    <dev label="Javadoc" href="javadoc.html"/>
+    <dev label="Building and Deploying" href="how-to-build-and-deploy.html"/>
+    <dev label="Scripting Language" href="script.html"/>
+    <dev label="End-user Documentation (HTML)" href="end-user-documentation.html"/>
+    <dev label="End-user Documentation (PDF)" href="end-user-documentation.pdf"/>
+  </docs>
+  
+  <resources label="Resources">
+    <dev label="Download" href="download.html" />
+    <mail        label="Mailing Lists"    href="mail.html" />    
+    <dev label="Developer/Integrator Resources" href="developer-resources.html"/>
+    <dev label="Performance tuning" href="performance-tuning.html"/>
+  </resources>
+
+  <rel label="Related-Projects">    
+    <droids      label="Droids"           href="ext:droids" />
+    <java        label="Java"             href="ext:java" />
+    <lucene.net  label="Lucene.Net"       href="ext:lucene.net" />    
+    <lucy        label="Lucy"             href="ext:lucy" />
+    <mahout      label="Mahout"           href="ext:mahout" />
+    <nutch       label="Nutch"            href="ext:nutch" />    
+    <orp       	 label="Open Relevance"            href="ext:orp" />
+    <pylucene    label="PyLucene"         href="ext:pylucene"/>
+    <solr        label="Solr"             href="ext:solr" />
+    <tika        label="Tika"             href="ext:tika" />
+  </rel>
+
+  <external-refs>
+    <java      href="http://lucene.apache.org/java/" />
+    <nutch     href="http://lucene.apache.org/nutch/" />
+    <lucy      href="http://lucene.apache.org/lucy/" />
+    <orp      href="http://lucene.apache.org/openrelevance/" />
+    <solr      href="http://lucene.apache.org/solr/" />
+    <lucene.net href="http://incubator.apache.org/lucene.net/" />
+    <tika      href="http://lucene.apache.org/tika/" />
+    <mahout    href="http://lucene.apache.org/mahout/" />
+    <droids    href="http://incubator.apache.org/droids/" />
+    <pylucene    href="http://lucene.apache.org/pylucene/" />
+    <book     href="http://www.manning.com/wright/" />
+    <store     href="http://www.cafepress.com/lucene/" />
+    <sponsor   href="http://www.apache.org/foundation/sponsorship.html" />
+    <thanks    href="http://www.apache.org/foundation/thanks.html" />
+  </external-refs>
+
+  <japanese label="日本語" href="ja_JP/" tab="ja_JP">
+    <index label="概要" href="index_ja_JP.html" tab="ja_JP"/>
+    <docs label="ドキュメント">
+      <dev label="Download" href="download_ja_JP.html" />
+      <dev label="概要" href="concepts.html"/>
+      <dev label="検証" href="included-connectors.html"/>
+      <dev label="Q&A" href="faq_ja_JP.html"/>
+      <dev label="API" href="programmatic-operation.html"/>
+      <dev label="Javadoc" href="javadoc.html"/>
+      <dev label="ビルドとデプロイ" href="how-to-build-and-deploy.html"/>
+      <dev label="スクリプト言語" href="script.html"/>
+      <dev label="エンドユーザマニュアル (HTML)" href="end-user-documentation_ja_JP.html"/>
+      <dev label="エンドユーザマニュアル (PDF)" href="end-user-documentation_ja_JP.pdf"/>
+    </docs>
+  </japanese>
+ 
+</site>

Propchange: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/site.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/site.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Added: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/tabs.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/tabs.xml?rev=1227119&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/tabs.xml (added)
+++ incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/tabs.xml Wed Jan  4 11:10:09 2012
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE tabs PUBLIC "-//APACHE//DTD Cocoon Documentation Tab V1.0//EN" 
+          "tab-cocoon-v10.dtd">
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<tabs software="Lucene"
+      title="Lucene"
+      copyright="The Apache Software Foundation"
+      xmlns:xlink="http://www.w3.org/1999/xlink">
+
+  <!-- The rules are:
+    @dir will always have /index.html added.
+    @href is not modified unless it is root-relative and obviously specifies a
+    directory (ends in '/'), in which case /index.html will be added
+  -->
+
+  <tab id="main" label="Main" dir=""/>  
+  <tab id="wiki" label="Wiki" href="http://cwiki.apache.org/confluence/display/CONNECTORS/Index"/>
+  <tab id="ja_JP" label="日本語" dir="ja_JP"/> 
+</tabs>

Propchange: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/tabs.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/tabs.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Added: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/who.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/who.xml?rev=1227119&view=auto
==============================================================================
--- incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/who.xml (added)
+++ incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/who.xml Wed Jan  4 11:10:09 2012
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" 
+          "http://forrest.apache.org/dtd/document-v20.dtd">
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<document> 
+
+  <header> 
+    <title>Who We Are</title> 
+  </header> 
+
+  <body> 
+
+      <section>
+        <title>Committers</title>
+  
+        <p>
+        (in alphabetical order): 
+        </p>
+  
+        <ul>
+        <li>Shinichiro Abe &lt;shinichiro&gt; </li>
+        <li>Erlend Gar&aring;sen &lt;ridder&gt; </li>
+        <li>Grant Ingersoll &lt;gsingers&gt; </li>
+        <li>Piergiorgio Lucidi &lt;piergiorgio&gt; </li>
+	<li>Shalin Shekhar Mangar &lt;shalin&gt; </li>
+        <li>Mark Miller &lt;markrmiller&gt; </li>
+        <li>Robert Muir &lt;rmuir&gt; </li>
+        <li>Ryan McKinley &lt;ryan&gt; </li>
+        <li>Sami Siren &lt;siren&gt; </li>
+        <li>Tommaso Teofili &lt;tommaso&gt;</li>
+        <li>Simon Willnauer &lt;simonw&gt; </li>
+        <li>Karl Wright &lt;kwright&gt; </li>
+        <li>Jukka Zitting &lt;jukka&gt; </li>
+        </ul>
+  
+      </section>
+
+  </body>
+
+</document>

Propchange: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/who.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/lcf/branches/CONNECTORS-336/site/src/documentation/content/xdocs/ja_JP/who.xml
------------------------------------------------------------------------------
    svn:keywords = Id



Mime
View raw message