Bug 445229: Oracleddlparser tests are failing against 12c
Review by: David McCann

Signed-off-by: Lukas Jungmann <lukas.jungmann@oracle.com>
diff --git a/oracleddlparser/src/main/jjtree/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt b/oracleddlparser/src/main/jjtree/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
index 2035e3a..b7afcc5 100644
--- a/oracleddlparser/src/main/jjtree/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
+++ b/oracleddlparser/src/main/jjtree/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
@@ -316,6 +316,7 @@
     | <K_DELETE: "DELETE">
     | <K_DETERMINISTIC: "DETERMINISTIC">
     | <K_DOUBLE: "DOUBLE">
+    | <K_EDITIONABLE: "EDITIONABLE">
     | <K_ENABLE: "ENABLE">
     | <K_FINAL: "FINAL">
     | <K_FLOAT: "FLOAT">
@@ -335,6 +336,7 @@
     | <K_NCHAR: "NCHAR">
     | <K_NCLOB: "NCLOB">
     | <K_NOCOPY: "NOCOPY">
+    | <K_NONEDITIONABLE: "NONEDITIONABLE">
     | <K_NUMBER: "NUMBER">
     | <K_NUMERIC: "NUMERIC">
     | <K_NVARCHAR2: "NVARCHAR2">
@@ -377,6 +379,7 @@
     | <K_TIME: "TIME">
     | <K_TIMESTAMP: "TIMESTAMP">
     | <K_UROWID:"UROWID">
+    | <K_USING:"USING">
     | <K_VARCHAR2: "VARCHAR2">
     | <K_VARCHAR: "VARCHAR">
     | <K_VARRAY: "VARRAY">
@@ -415,6 +418,7 @@
       | t=<K_DELETE>
       | t=<K_DETERMINISTIC>
       | t=<K_DOUBLE>
+      | t=<K_EDITIONABLE>
       | t=<K_ENABLE>
       | t=<K_FINAL>
       | t=<K_FLOAT>
@@ -434,6 +438,7 @@
       | t=<K_NCHAR>
       | t=<K_NCLOB>
       | t=<K_NOCOPY>
+      | t=<K_NONEDITIONABLE>
       | t=<K_NUMBER>
       | t=<K_NUMERIC>
       | t=<K_NVARCHAR2>
@@ -476,6 +481,7 @@
       | t=<K_TIME>
       | t=<K_TIMESTAMP>
       | t=<K_UROWID>
+      | t=<K_USING>
       | t=<K_VARCHAR2>
       | t=<K_VARCHAR>
       | t=<K_VARRAY>
@@ -511,7 +517,7 @@
  String packageName = null;
  }
 {
-    <R_CREATE> [ orReplace() ] <K_PACKAGE>
+    <R_CREATE> [ orReplace() ] [ <K_EDITIONABLE> | <K_NONEDITIONABLE> ] <K_PACKAGE>
       dottedName=OracleObjectNamePossiblyDotted()
         {
           packageName = dottedName;
@@ -541,7 +547,7 @@
  String schema = null;
  String procedureName = null;}
 {
-    <R_CREATE> [ orReplace() ] <R_PROCEDURE>
+    <R_CREATE> [ orReplace() ] [ <K_EDITIONABLE> | <K_NONEDITIONABLE> ] <R_PROCEDURE>
       dottedName=OracleObjectNamePossiblyDotted()
         {
           procedureName = dottedName;
@@ -571,7 +577,7 @@
  String functionName = null;
  ArgumentType returnType = null;}
 {
-    <R_CREATE> [ orReplace() ] <R_FUNCTION>
+    <R_CREATE> [ orReplace() ] [ <K_EDITIONABLE> | <K_NONEDITIONABLE> ] <R_FUNCTION>
       dottedName=OracleObjectNamePossiblyDotted()
             {
           functionName = dottedName;
@@ -642,7 +648,7 @@
  boolean nestedTable = false;
 }
 {
-    <R_CREATE> [ orReplace() ] <R_TYPE>
+    <R_CREATE> [ orReplace() ] [ <K_EDITIONABLE> | <K_NONEDITIONABLE> ] <R_TYPE>
       dottedName=OracleObjectNamePossiblyDotted()
         {
           typeName = dottedName;
@@ -739,7 +745,7 @@
           <R_PRIMARY> <K_KEY> <O_OPENPAREN> pkList((TableType)enclosingType) <O_CLOSEPAREN>
         | <R_CHECK> <O_OPENPAREN> skipToClosingParen() <O_CLOSEPAREN>
         | <R_UNIQUE> <O_OPENPAREN> uniqList() <O_CLOSEPAREN> 
-      ) [ <K_ENABLE> ]
+      ) [ <K_USING> <R_INDEX> ] [ <K_ENABLE> ]
 }
 
 DatabaseType columnTypeSpec(CompositeDatabaseType enclosingType):
diff --git a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/TestHelper.java b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/TestHelper.java
index b008997..adedd01 100644
--- a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/TestHelper.java
+++ b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/TestHelper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011 Oracle. All rights reserved.
+ * Copyright (c) 2011, 2014 Oracle. All rights reserved.
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
  * which accompanies this distribution.
@@ -21,7 +21,8 @@
 
 public class TestHelper {
 
-    public static final String DATABASE_DRIVER = "oracle.jdbc.OracleDriver";
+    public static final String DATABASE_DRIVER_KEY = "db.driver";
+    public static final String DEFAULT_DATABASE_DRIVER = "oracle.jdbc.OracleDriver";
     public static final String DATABASE_USERNAME_KEY = "db.user";
     public static final String DEFAULT_DATABASE_USERNAME = "scott";
     public static final String DATABASE_PASSWORD_KEY = "db.pwd";
@@ -39,7 +40,8 @@
         String username = System.getProperty(DATABASE_USERNAME_KEY, DEFAULT_DATABASE_USERNAME);
         String password = System.getProperty(DATABASE_PASSWORD_KEY, DEFAULT_DATABASE_PASSWORD);
         String url = System.getProperty(DATABASE_URL_KEY, DEFAULT_DATABASE_URL);
-        Class.forName(DATABASE_DRIVER);
+        String dbDriver = System.getProperty(DATABASE_DRIVER_KEY, DEFAULT_DATABASE_DRIVER);
+        Class.forName(dbDriver);
         return DriverManager.getConnection(url, username, password);
     }
 
diff --git a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/AnchoredTypesResolutionTestSuite.java b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/AnchoredTypesResolutionTestSuite.java
index cbed5bc..8d5c49a 100644
--- a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/AnchoredTypesResolutionTestSuite.java
+++ b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/AnchoredTypesResolutionTestSuite.java
@@ -1,5 +1,5 @@
 /*******************************************************************************

- * Copyright (c) 2012 Oracle. All rights reserved.

+ * Copyright (c) 2012, 2014 Oracle. All rights reserved.

  * This program and the accompanying materials are made available under the

  * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0

  * which accompanies this distribution.

@@ -129,11 +129,16 @@
     public void anchoredTypesTest1() {

         boolean worked = true;

         PLSQLPackageType plsqlPackageType = null;

+        String msg = null;

         try {

             plsqlPackageType = dtBuilder.buildPackages(conn, "", ANCHORED_TYPES_TEST4_PACKAGE).get(0);

         }

         catch (Exception e) {

             worked = false;

+            msg = e.getMessage();

+        }

+        if (!worked) {

+            fail(msg);

         }

         assertTrue(ANCHORED_TYPES_TEST4_PACKAGE + " should parse", worked);

         PLSQLType plsqlType1 = plsqlPackageType.getTypes().get(0);