You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2011/08/29 16:14:00 UTC
svn commit: r1162824 - in /incubator/lcf/trunk:
framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/
framework/script-example/ site/src/documentation/content/xdocs/
Author: kwright
Date: Mon Aug 29 14:14:00 2011
New Revision: 1162824
URL: http://svn.apache.org/viewvc?rev=1162824&view=rev
Log:
Fix a bunch of script bugs and parsing conflicts
Added:
incubator/lcf/trunk/framework/script-example/
incubator/lcf/trunk/framework/script-example/file-crawl-example.mcf (with props)
Modified:
incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/BasicTokenStream.java
incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/IfCommand.java
incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/ScriptParser.java
incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/VariableConfigurationNode.java
incubator/lcf/trunk/site/src/documentation/content/xdocs/script.xml
Modified: incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/BasicTokenStream.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/BasicTokenStream.java?rev=1162824&r1=1162823&r2=1162824&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/BasicTokenStream.java (original)
+++ incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/BasicTokenStream.java Mon Aug 29 14:14:00 2011
@@ -190,7 +190,9 @@ public class BasicTokenStream implements
y == '>' && q == '=' ||
y == '<' && q == '=' ||
y == '&' && q == '&' ||
- y == '|' && q == '|')
+ y == '|' && q == '|' ||
+ y == '>' && q == '>' ||
+ y == '<' && q == '<')
{
characterStream.skip();
return new Token(Token.TOKEN_PUNCTUATION,new StringBuilder().append(y).append(q).toString(),
Modified: incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/IfCommand.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/IfCommand.java?rev=1162824&r1=1162823&r2=1162824&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/IfCommand.java (original)
+++ incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/IfCommand.java Mon Aug 29 14:14:00 2011
@@ -52,7 +52,7 @@ public class IfCommand implements Comman
{
sp.skipStatements(currentStream);
t = currentStream.peek();
- if (t != null && t.getToken().equals("else"))
+ if (t != null && t.getToken() != null && t.getToken().equals("else"))
{
currentStream.skip();
// Parse statements
@@ -77,7 +77,7 @@ public class IfCommand implements Comman
currentStream.skip();
sp.skipStatements(currentStream);
t = currentStream.peek();
- if (t != null &&t.getToken().equals("else"))
+ if (t != null && t.getToken() != null && t.getToken().equals("else"))
{
currentStream.skip();
// Skip statements
Modified: incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/ScriptParser.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/ScriptParser.java?rev=1162824&r1=1162823&r2=1162824&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/ScriptParser.java (original)
+++ incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/ScriptParser.java Mon Aug 29 14:14:00 2011
@@ -757,7 +757,7 @@ public class ScriptParser
currentStream.skip();
return va;
}
- else if (t != null && t.getPunctuation() != null && t.getPunctuation().equals("<"))
+ else if (t != null && t.getPunctuation() != null && t.getPunctuation().equals("<<"))
{
currentStream.skip();
// Parse the node type
@@ -814,7 +814,7 @@ public class ScriptParser
// Parse the children
t = currentStream.peek();
- if (t == null || t.getPunctuation() == null || !t.getPunctuation().equals(">"))
+ if (t == null || t.getPunctuation() == null || !t.getPunctuation().equals(">>"))
{
while (true)
{
@@ -823,7 +823,7 @@ public class ScriptParser
syntaxError(currentStream,"Missing expression in configurationnode object initializer");
va.insert(vr.resolve());
t = currentStream.peek();
- if (t != null && t.getPunctuation() != null && t.getPunctuation().equals(">"))
+ if (t != null && t.getPunctuation() != null && t.getPunctuation().equals(">>"))
break;
if (t == null || t.getPunctuation() == null || !t.getPunctuation().equals(","))
syntaxError(currentStream,"Missing ','");
@@ -986,7 +986,7 @@ public class ScriptParser
currentStream.skip();
return true;
}
- else if (t != null && t.getPunctuation() != null && t.getPunctuation().equals("<"))
+ else if (t != null && t.getPunctuation() != null && t.getPunctuation().equals("<<"))
{
currentStream.skip();
// Parse the node type
@@ -1031,14 +1031,14 @@ public class ScriptParser
// Parse the children
t = currentStream.peek();
- if (t == null || t.getPunctuation() == null || !t.getPunctuation().equals(">"))
+ if (t == null || t.getPunctuation() == null || !t.getPunctuation().equals(">>"))
{
while (true)
{
if (skipExpression(currentStream) == false)
syntaxError(currentStream,"Missing expression in configurationnode object initializer");
t = currentStream.peek();
- if (t != null && t.getPunctuation() != null && t.getPunctuation().equals(">"))
+ if (t != null && t.getPunctuation() != null && t.getPunctuation().equals(">>"))
break;
if (t == null || t.getPunctuation() == null || !t.getPunctuation().equals(","))
syntaxError(currentStream,"Missing ','");
Modified: incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/VariableConfigurationNode.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/VariableConfigurationNode.java?rev=1162824&r1=1162823&r2=1162824&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/VariableConfigurationNode.java (original)
+++ incubator/lcf/trunk/framework/script-engine/src/main/java/org/apache/manifoldcf/scriptengine/VariableConfigurationNode.java Mon Aug 29 14:14:00 2011
@@ -42,7 +42,7 @@ public class VariableConfigurationNode e
public String toString()
{
StringBuilder sb = new StringBuilder();
- sb.append("< ");
+ sb.append("<< ");
sb.append(new VariableString(configurationNode.getType()).toString());
sb.append(" : ");
String valueField = configurationNode.getValue();
@@ -68,12 +68,13 @@ public class VariableConfigurationNode e
int i = 0;
while (i < configurationNode.getChildCount())
{
- ConfigurationNode child = configurationNode.findChild(i++);
+ ConfigurationNode child = configurationNode.findChild(i);
if (i > 0)
sb.append(", ");
sb.append(new VariableConfigurationNode(child).toString());
+ i++;
}
- sb.append(" >");
+ sb.append(" >>");
return sb.toString();
}
Added: incubator/lcf/trunk/framework/script-example/file-crawl-example.mcf
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/script-example/file-crawl-example.mcf?rev=1162824&view=auto
==============================================================================
--- incubator/lcf/trunk/framework/script-example/file-crawl-example.mcf (added)
+++ incubator/lcf/trunk/framework/script-example/file-crawl-example.mcf Mon Aug 29 14:14:00 2011
@@ -0,0 +1,58 @@
+# 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.
+
+# Script to create a file system job and run it, sending the files to the null output connector
+# Argument: the base path of the API service, e.g. "http://localhost:8345/mcf-api-service".
+
+# Decode the argument, if any
+if __args__.__size__ > 1 then
+ error "Usage: file-crawl-example <url_path>";
+;
+if __args__.__size__ == 0 then
+ set basepath = "http://localhost:8345/mcf-api-service";
+else
+ set basepath = __argv__[0];
+;
+set baseurl = (new url basepath) + "json";
+
+# Define all the connection names, job names, etc.
+set outputConnectionName = "Null Output";
+set outputConnectionDescription = "Null Output Connection";
+set repositoryConnectionName = "File System";
+set repositoryConnectionDescription = "File System Connection";
+set fileCrawlJobName = "File system crawl";
+set fileCrawlJobDescription = "Crawl local file system";
+set fileCrawlPath = "../../.."; # Crawl the main folder
+
+# Now, create the null output connection, unless it's already there.
+PUT result = {
+ << "outputconnection" : "" : :
+ << "description" : outputConnectionDescription : : >>,
+ << "configuration" : "" : : >>,
+ << "class_name" : "org.apache.manifoldcf.agents.output.nullconnector.NullConnector" : : >>,
+ << "name" : outputConnectionName : : >>,
+ << "max_connections" : "100" : : >> >>
+ }
+ to baseurl + "outputconnections" + new connectionname outputConnectionName;
+if result.__CREATED__ then
+ print "Created output connection";
+else
+ if result.__OK__ then
+ print "Output connection already exists";
+ else
+ error "Unexpected result: "+result.__script__;
+ ;
+;
+
Propchange: incubator/lcf/trunk/framework/script-example/file-crawl-example.mcf
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/lcf/trunk/framework/script-example/file-crawl-example.mcf
------------------------------------------------------------------------------
svn:keywords = Id
Modified: incubator/lcf/trunk/site/src/documentation/content/xdocs/script.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/site/src/documentation/content/xdocs/script.xml?rev=1162824&r1=1162823&r2=1162824&view=diff
==============================================================================
--- incubator/lcf/trunk/site/src/documentation/content/xdocs/script.xml (original)
+++ incubator/lcf/trunk/site/src/documentation/content/xdocs/script.xml Mon Aug 29 14:14:00 2011
@@ -138,7 +138,7 @@ expression:
--> '-' expression
--> '[' [expression [',' expression ...]] ']'
--> '{' [expression [',' expression ...]] '}'
---> '<' expression ':' expression ':' [expression '=' expression [',' expression '=' expression ...]] ':' [expression [',' expression ...]] '>'
+--> '<<' expression ':' expression ':' [expression '=' expression [',' expression '=' expression ...]] ':' [expression [',' expression ...]] '>>'
--> expression '[' expression ']'
--> expression '.' token
--> token
@@ -315,7 +315,7 @@ print "3".__int__+7;
<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><</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> ... ]] '>'.
+ <p>Configuration node variable types can be created using an initializer of the form <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> [<strong>,</strong> <em>expression</em> ... ]] '>>'.
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 '< "description" : "Solr" : : >' 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>
@@ -323,7 +323,7 @@ print "3".__int__+7;
<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 + < "something" : "somethingvalue" : : ></td></tr>
+ <tr><td>binary +</td><td>Append a configuration child node variable to the list</td><td>myconfig + << "something" : "somethingvalue" : : >></td></tr>
</table>
<p>In addition, the standard attributes <em>__script__</em>, <em>__string__</em>, <em>__size__</em>, <em>__type__</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>