Fix for bug 339721 (DBWS should support strongly-typed package REF CURSOR)
Reviewed by: matt.macivor@oracle.com
Tests: StrongRefCursorTestSuite; all unit tests pass as expected
diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/metadata/visit/EnclosedTypeVisitor.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/metadata/visit/EnclosedTypeVisitor.java
index 81044b3..045f6e0 100644
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/metadata/visit/EnclosedTypeVisitor.java
+++ b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/metadata/visit/EnclosedTypeVisitor.java
@@ -19,9 +19,11 @@
//DDL parser imports
import org.eclipse.persistence.tools.oracleddl.metadata.ArgumentType;
import org.eclipse.persistence.tools.oracleddl.metadata.CompositeDatabaseType;
+import org.eclipse.persistence.tools.oracleddl.metadata.DatabaseType;
import org.eclipse.persistence.tools.oracleddl.metadata.ObjectTableType;
import org.eclipse.persistence.tools.oracleddl.metadata.ObjectType;
import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLCollectionType;
+import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLCursorType;
import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLRecordType;
import org.eclipse.persistence.tools.oracleddl.metadata.TableType;
import org.eclipse.persistence.tools.oracleddl.metadata.VArrayType;
@@ -68,9 +70,16 @@
addType(databaseType);
}
@Override
+ public void visit(PLSQLCursorType databaseType) {
+ addType(databaseType);
+ }
+ @Override
public void endVisit(ArgumentType databaseType) {
- // sometimes we get here with an ArgumentType instance - use the enclosed type in non-null
- if (databaseType.getEnclosedType() != null && databaseType.getEnclosedType().isComposite() && !databaseType.getEnclosedType().isROWTYPEType()) {
+ // sometimes we get here with an ArgumentType instance - use the enclosed type if non-null
+ if (databaseType.getEnclosedType() != null
+ && databaseType.getEnclosedType().isComposite()
+ && !databaseType.getEnclosedType().isROWTYPEType()
+ && !databaseType.getEnclosedType().isPLSQLCursorType()) {
addType((CompositeDatabaseType) databaseType.getEnclosedType());
}
}