You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2016/12/20 11:04:34 UTC
svn commit: r1775258 - in /uima/ruta/trunk:
ruta-ep-core-ext/src/main/java/org/apache/uima/ruta/string/
ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/
Author: pkluegl
Date: Tue Dec 20 11:04:34 2016
New Revision: 1775258
URL: http://svn.apache.org/viewvc?rev=1775258&view=rev
Log:
no jira - improved syntax checks of extensions in ide
Modified:
uima/ruta/trunk/ruta-ep-core-ext/src/main/java/org/apache/uima/ruta/string/BooleanOperationsIDEExtension.java
uima/ruta/trunk/ruta-ep-core-ext/src/main/java/org/apache/uima/ruta/string/StringOperationsIDEExtension.java
uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/RutaCheckerProblemFactory.java
Modified: uima/ruta/trunk/ruta-ep-core-ext/src/main/java/org/apache/uima/ruta/string/BooleanOperationsIDEExtension.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-core-ext/src/main/java/org/apache/uima/ruta/string/BooleanOperationsIDEExtension.java?rev=1775258&r1=1775257&r2=1775258&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-core-ext/src/main/java/org/apache/uima/ruta/string/BooleanOperationsIDEExtension.java (original)
+++ uima/ruta/trunk/ruta-ep-core-ext/src/main/java/org/apache/uima/ruta/string/BooleanOperationsIDEExtension.java Tue Dec 20 11:04:34 2016
@@ -25,15 +25,14 @@ import org.antlr.runtime.RecognitionExce
import org.apache.uima.ruta.ide.core.extensions.IIDEBooleanFunctionExtension;
import org.apache.uima.ruta.ide.core.extensions.IRutaCheckerProblemFactory;
import org.apache.uima.ruta.ide.parser.ast.RutaFunction;
-import org.apache.uima.ruta.ide.parser.ast.RutaTypeConstants;
import org.eclipse.dltk.ast.ASTNode;
import org.eclipse.dltk.ast.expressions.Expression;
import org.eclipse.dltk.compiler.problem.IProblem;
import org.eclipse.dltk.compiler.problem.IProblemReporter;
public class BooleanOperationsIDEExtension implements IIDEBooleanFunctionExtension {
- private final String[] strings = new String[] { "contains", "endsWith",
- "startsWith", "equals", "equalsIgnoreCase", "isEmpty" };
+ private final String[] strings = new String[] { "contains", "endsWith", "startsWith", "equals",
+ "equalsIgnoreCase", "isEmpty" };
public String[] getKnownExtensions() {
return strings;
@@ -51,12 +50,13 @@ public class BooleanOperationsIDEExtensi
rep.reportProblem(problem);
ok = false;
}
- Expression expr = (Expression) childs.get(0);
- if (expr.getKind() != RutaTypeConstants.RUTA_TYPE_S) {
- IProblem problem = problemFactory.createWrongArgumentTypeProblem(expr, "TypeExpression");
- rep.reportProblem(problem);
- ok = false;
- }
+ // all is a string expression
+ // Expression expr = (Expression) childs.get(0);
+ // if (expr.getKind() != RutaTypeConstants.RUTA_TYPE_S && expr.getKind() != -1) {
+ // IProblem problem = problemFactory.createWrongArgumentTypeProblem(expr, "StringExpression");
+ // rep.reportProblem(problem);
+ // ok = false;
+ // }
return ok;
}
return false;
Modified: uima/ruta/trunk/ruta-ep-core-ext/src/main/java/org/apache/uima/ruta/string/StringOperationsIDEExtension.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-core-ext/src/main/java/org/apache/uima/ruta/string/StringOperationsIDEExtension.java?rev=1775258&r1=1775257&r2=1775258&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-core-ext/src/main/java/org/apache/uima/ruta/string/StringOperationsIDEExtension.java (original)
+++ uima/ruta/trunk/ruta-ep-core-ext/src/main/java/org/apache/uima/ruta/string/StringOperationsIDEExtension.java Tue Dec 20 11:04:34 2016
@@ -22,6 +22,7 @@ package org.apache.uima.ruta.string;
import java.util.List;
import org.antlr.runtime.RecognitionException;
+import org.apache.commons.lang3.StringUtils;
import org.apache.uima.ruta.ide.core.extensions.IIDEStringFunctionExtension;
import org.apache.uima.ruta.ide.core.extensions.IRutaCheckerProblemFactory;
import org.apache.uima.ruta.ide.parser.ast.RutaFunction;
@@ -32,8 +33,8 @@ import org.eclipse.dltk.compiler.problem
import org.eclipse.dltk.compiler.problem.IProblemReporter;
public class StringOperationsIDEExtension implements IIDEStringFunctionExtension {
- private final String[] strings = new String[] { "toUpperCase", "toLowerCase",
- "replaceFirst", "replaceAll", "substring", "firstCharToUpperCase" };
+ private final String[] strings = new String[] { "toUpperCase", "toLowerCase", "replaceFirst",
+ "replaceAll", "substring", "firstCharToUpperCase" };
public String[] getKnownExtensions() {
return strings;
@@ -44,25 +45,63 @@ public class StringOperationsIDEExtensio
if (element instanceof RutaFunction) {
RutaFunction f = (RutaFunction) element;
String name = f.getName();
- // TODO
- if (!name.equals(strings[0])) {
+ List<ASTNode> childs = f.getChilds();
+ boolean ok = true;
+
+ if (StringUtils.equals(name, strings[0]) || StringUtils.equals(name, strings[1])
+ || StringUtils.equals(name, strings[5])) {
+ if (childs.size() != 1) {
+ IProblem problem = problemFactory.createWrongNumberOfArgumentsProblem(name, element, 1);
+ rep.reportProblem(problem);
+ ok = false;
+ }
+ } else if (StringUtils.equals(name, strings[2]) || StringUtils.equals(name, strings[3])
+ || StringUtils.equals(name, strings[4])) {
+ if (childs.size() != 3) {
+ IProblem problem = problemFactory.createWrongNumberOfArgumentsProblem(name, element, 3);
+ rep.reportProblem(problem);
+ ok = false;
+ }
+ } else {
IProblem problem = problemFactory.createUnknownFunctionProblem(f);
rep.reportProblem(problem);
return false;
}
- boolean ok = true;
- List<ASTNode> childs = f.getChilds();
- if (childs.size() != 1) {
- IProblem problem = problemFactory.createWrongNumberOfArgumentsProblem(name, element, 1);
- rep.reportProblem(problem);
- ok = false;
- }
- Expression expr = (Expression) childs.get(0);
- if (expr.getKind() != RutaTypeConstants.RUTA_TYPE_AT) {
- IProblem problem = problemFactory.createWrongArgumentTypeProblem(expr, "TypeExpression");
- rep.reportProblem(problem);
- ok = false;
+
+ if (StringUtils.equals(name, strings[4])) {
+ Expression expr0 = (Expression) childs.get(0);
+ if (expr0.getKind() != RutaTypeConstants.RUTA_TYPE_S && expr0.getKind() != -1) {
+ IProblem problem = problemFactory.createWrongArgumentTypeProblem(expr0,
+ "StringExpression");
+ rep.reportProblem(problem);
+ ok = false;
+ }
+ Expression expr1 = (Expression) childs.get(1);
+ if (expr1.getKind() != RutaTypeConstants.RUTA_TYPE_N && expr1.getKind() != -1) {
+ IProblem problem = problemFactory.createWrongArgumentTypeProblem(expr1,
+ "NumberExpression");
+ rep.reportProblem(problem);
+ ok = false;
+ }
+ Expression expr2 = (Expression) childs.get(2);
+ if (expr2.getKind() != RutaTypeConstants.RUTA_TYPE_N && expr2.getKind() != -1) {
+ IProblem problem = problemFactory.createWrongArgumentTypeProblem(expr2,
+ "NumberExpression");
+ rep.reportProblem(problem);
+ ok = false;
+ }
+ } else {
+ for (ASTNode astNode : childs) {
+ Expression expr = (Expression) astNode;
+ if (expr.getKind() != RutaTypeConstants.RUTA_TYPE_S && expr.getKind() != -1) {
+ IProblem problem = problemFactory.createWrongArgumentTypeProblem(expr,
+ "StringExpression");
+ rep.reportProblem(problem);
+ ok = false;
+ }
+ }
}
+
return ok;
}
return false;
Modified: uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/RutaCheckerProblemFactory.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/RutaCheckerProblemFactory.java?rev=1775258&r1=1775257&r2=1775258&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/RutaCheckerProblemFactory.java (original)
+++ uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/RutaCheckerProblemFactory.java Tue Dec 20 11:04:34 2016
@@ -31,6 +31,7 @@ import org.apache.uima.ruta.ide.parser.a
import org.apache.uima.ruta.ide.parser.ast.RutaCondition;
import org.apache.uima.ruta.ide.parser.ast.RutaFeatureDeclaration;
import org.apache.uima.ruta.ide.parser.ast.RutaFunction;
+import org.apache.uima.ruta.ide.parser.ast.RutaTypeConstants;
import org.apache.uima.ruta.ide.parser.ast.RutaVariableReference;
import org.eclipse.core.resources.IProject;
import org.eclipse.dltk.ast.ASTListNode;
@@ -183,7 +184,8 @@ public class RutaCheckerProblemFactory i
}
public IProblem createWrongArgumentTypeProblem(Expression was, String expected) {
- String message = "Wrong kind of argument: expected " + expected;
+ String present = RutaTypeConstants.typeStringOfInt.get(was.getKind());
+ String message = "Wrong kind of argument: expected " + expected +", but was " + present;
return new RutaCheckerDefaultProblem(this.fileName, message, was, getLine(was));
}