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));
   }