[teiid-commits] teiid SVN: r2878 - in branches/7.3.x: engine/src/main/java/org/teiid/query/function and 3 other directories.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Wed Jan 26 22:26:46 EST 2011
Author: rareddy
Date: 2011-01-26 22:26:46 -0500 (Wed, 26 Jan 2011)
New Revision: 2878
Modified:
branches/7.3.x/api/src/main/java/org/teiid/metadata/FunctionMethod.java
branches/7.3.x/engine/src/main/java/org/teiid/query/function/FunctionForm.java
branches/7.3.x/engine/src/main/java/org/teiid/query/function/FunctionLibrary.java
branches/7.3.x/engine/src/main/java/org/teiid/query/function/FunctionTree.java
branches/7.3.x/engine/src/main/java/org/teiid/query/function/metadata/FunctionMetadataValidator.java
branches/7.3.x/engine/src/test/java/org/teiid/query/function/TestFunctionMetadataReader.java
branches/7.3.x/engine/src/test/java/org/teiid/query/function/metadata/TestFunctionMethod.java
Log:
TEIID-1446: with array types in the class, jaxb is behaving as described in the jira. Replaced the array attribute with collection type to avoid the exception
Modified: branches/7.3.x/api/src/main/java/org/teiid/metadata/FunctionMethod.java
===================================================================
--- branches/7.3.x/api/src/main/java/org/teiid/metadata/FunctionMethod.java 2011-01-26 21:40:40 UTC (rev 2877)
+++ branches/7.3.x/api/src/main/java/org/teiid/metadata/FunctionMethod.java 2011-01-27 03:26:46 UTC (rev 2878)
@@ -22,7 +22,9 @@
package org.teiid.metadata;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
@@ -103,8 +105,9 @@
private boolean nullOnNull;
private Determinism determinism = Determinism.DETERMINISTIC;
-
- private FunctionParameter[] inputParameters;
+
+ @XmlElement(name="inputParameters")
+ protected List<FunctionParameter> inParameters = new ArrayList<FunctionParameter>();
private FunctionParameter outputParameter;
protected FunctionMethod() {
@@ -131,7 +134,9 @@
setPushdown(pushdown);
setInvocationClass(invocationClass);
setInvocationMethod(invocationMethod);
- setInputParameters(inputParams);
+ if (inputParams != null) {
+ setInputParameters(Arrays.asList(inputParams));
+ }
setOutputParameter(outputParam);
setNullOnNull(nullOnNull);
setDeterminism(deterministic);
@@ -269,27 +274,28 @@
* @return Number of input parameters
*/
public int getInputParameterCount() {
- if(this.inputParameters == null) {
+ if(this.inParameters == null) {
return 0;
}
- return this.inputParameters.length;
+ return this.inParameters.size();
}
/**
* Get input parameters
* @return Array of input parameters, may be null if 0 parameters
*/
- @XmlElement
- public FunctionParameter[] getInputParameters() {
- return this.inputParameters;
+
+ public List<FunctionParameter> getInputParameters() {
+ return this.inParameters;
}
/**
* Set input parameters.
* @param params Input parameters
*/
- public void setInputParameters(FunctionParameter[] params) {
- this.inputParameters = params;
+ public void setInputParameters(List<FunctionParameter> params) {
+ this.inParameters.clear();
+ this.inParameters.addAll(params);
}
/**
@@ -322,8 +328,8 @@
*/
public int hashCode() {
int hash = HashCodeUtil.hashCode(0, super.getName());
- if(inputParameters != null) {
- hash = HashCodeUtil.hashCode(hash, Arrays.hashCode(inputParameters));
+ if(inParameters != null) {
+ hash = HashCodeUtil.hashCode(hash, inParameters.hashCode());
}
return hash;
}
@@ -356,16 +362,16 @@
}
// Compare types of parameters
- FunctionParameter[] thisInputs = this.getInputParameters();
- if(thisInputs != null && thisInputs.length > 0) {
+ List<FunctionParameter> thisInputs = this.getInputParameters();
+ if(thisInputs != null && thisInputs.size() > 0) {
// If thisInputs is not null and >0 and other parameter
// count matched this parameter count, otherInputs MUST be
// non null to have more than one parameter - so we don't
// need to check it here.
- FunctionParameter[] otherInputs = other.getInputParameters();
+ List<FunctionParameter> otherInputs = other.getInputParameters();
- for(int i=0; i<thisInputs.length; i++) {
- boolean paramMatch = compareWithNull(thisInputs[i], otherInputs[i]);
+ for(int i=0; i<thisInputs.size(); i++) {
+ boolean paramMatch = compareWithNull(thisInputs.get(i), otherInputs.get(i));
if(! paramMatch) {
return false;
}
@@ -412,15 +418,15 @@
// Print parameters
str.append("("); //$NON-NLS-1$
- if(inputParameters != null) {
- for(int i=0; i<inputParameters.length; i++) {
- if(inputParameters[i] != null) {
- str.append(inputParameters[i].toString());
+ if(inParameters != null) {
+ for(int i=0; i<inParameters.size(); i++) {
+ if(inParameters.get(i) != null) {
+ str.append(inParameters.get(i).toString());
} else {
str.append("<unknown>"); //$NON-NLS-1$
}
- if(i < (inputParameters.length-1)) {
+ if(i < (inParameters.size()-1)) {
str.append(", "); //$NON-NLS-1$
}
}
@@ -462,8 +468,8 @@
}
public boolean isVarArgs() {
- if (this.inputParameters != null && this.inputParameters.length > 0) {
- return inputParameters[inputParameters.length - 1].isVarArg();
+ if (this.inParameters != null && this.inParameters.size() > 0) {
+ return inParameters.get(inParameters.size() - 1).isVarArg();
}
return false;
}
Modified: branches/7.3.x/engine/src/main/java/org/teiid/query/function/FunctionForm.java
===================================================================
--- branches/7.3.x/engine/src/main/java/org/teiid/query/function/FunctionForm.java 2011-01-26 21:40:40 UTC (rev 2877)
+++ branches/7.3.x/engine/src/main/java/org/teiid/query/function/FunctionForm.java 2011-01-27 03:26:46 UTC (rev 2878)
@@ -66,17 +66,17 @@
this.category = method.getCategory().toUpperCase();
// Get input parameter stuff
- FunctionParameter[] inputParams = method.getInputParameters();
+ List<FunctionParameter> inputParams = method.getInputParameters();
if(inputParams == null) {
inputParamNames = new ArrayList(0);
inputParamDescs = new ArrayList(0);
} else {
- inputParamNames = new ArrayList(inputParams.length);
- inputParamDescs = new ArrayList(inputParams.length);
+ inputParamNames = new ArrayList(inputParams.size());
+ inputParamDescs = new ArrayList(inputParams.size());
- for(int i=0; i<inputParams.length; i++) {
- inputParamNames.add(inputParams[i].getName().toUpperCase());
- inputParamDescs.add(inputParams[i].getDescription());
+ for(int i=0; i<inputParams.size(); i++) {
+ inputParamNames.add(inputParams.get(i).getName().toUpperCase());
+ inputParamDescs.add(inputParams.get(i).getDescription());
}
}
Modified: branches/7.3.x/engine/src/main/java/org/teiid/query/function/FunctionLibrary.java
===================================================================
--- branches/7.3.x/engine/src/main/java/org/teiid/query/function/FunctionLibrary.java 2011-01-26 21:40:40 UTC (rev 2877)
+++ branches/7.3.x/engine/src/main/java/org/teiid/query/function/FunctionLibrary.java 2011-01-27 03:26:46 UTC (rev 2878)
@@ -228,7 +228,7 @@
for (FunctionMethod nextMethod : functionMethods) {
int currentScore = 0;
- final FunctionParameter[] methodTypes = nextMethod.getInputParameters();
+ final List<FunctionParameter> methodTypes = nextMethod.getInputParameters();
//Holder for current signature with converts where required
FunctionDescriptor[] currentSignature = new FunctionDescriptor[types.length];
@@ -237,7 +237,7 @@
int i = 0;
for(; i < types.length; i++) {
//treat all varags as the same type
- final String tmpTypeName = methodTypes[Math.min(i, methodTypes.length - 1)].getType();
+ final String tmpTypeName = methodTypes.get(Math.min(i, methodTypes.size() - 1)).getType();
Class<?> targetType = DataTypeManager.getDataTypeClass(tmpTypeName);
Class<?> sourceType = types[i];
Modified: branches/7.3.x/engine/src/main/java/org/teiid/query/function/FunctionTree.java
===================================================================
--- branches/7.3.x/engine/src/main/java/org/teiid/query/function/FunctionTree.java 2011-01-26 21:40:40 UTC (rev 2877)
+++ branches/7.3.x/engine/src/main/java/org/teiid/query/function/FunctionTree.java 2011-01-27 03:26:46 UTC (rev 2878)
@@ -263,11 +263,11 @@
String methodName = method.getName();
// Get input types for path
- FunctionParameter[] inputParams = method.getInputParameters();
+ List<FunctionParameter> inputParams = method.getInputParameters();
List<Class> inputTypes = new LinkedList<Class>();
if(inputParams != null) {
- for(int i=0; i<inputParams.length; i++) {
- String typeName = inputParams[i].getType();
+ for(int i=0; i<inputParams.size(); i++) {
+ String typeName = inputParams.get(i).getType();
inputTypes.add(DataTypeManager.getDataTypeClass(typeName));
}
}
Modified: branches/7.3.x/engine/src/main/java/org/teiid/query/function/metadata/FunctionMetadataValidator.java
===================================================================
--- branches/7.3.x/engine/src/main/java/org/teiid/query/function/metadata/FunctionMetadataValidator.java 2011-01-26 21:40:40 UTC (rev 2877)
+++ branches/7.3.x/engine/src/main/java/org/teiid/query/function/metadata/FunctionMetadataValidator.java 2011-01-27 03:26:46 UTC (rev 2878)
@@ -23,6 +23,7 @@
package org.teiid.query.function.metadata;
import java.util.Collection;
+import java.util.List;
import org.teiid.api.exception.query.FunctionMetadataException;
import org.teiid.core.types.DataTypeManager;
@@ -90,10 +91,10 @@
validateInvocationMethod(method.getInvocationClass(), method.getInvocationMethod(), method.getPushdown());
// Validate input parameters
- FunctionParameter[] params = method.getInputParameters();
- if(params != null) {
- for(int i=0; i<params.length; i++) {
- validateFunctionParameter(params[i]);
+ List<FunctionParameter> params = method.getInputParameters();
+ if(params != null && !params.isEmpty()) {
+ for(int i=0; i<params.size(); i++) {
+ validateFunctionParameter(params.get(i));
}
}
Modified: branches/7.3.x/engine/src/test/java/org/teiid/query/function/TestFunctionMetadataReader.java
===================================================================
--- branches/7.3.x/engine/src/test/java/org/teiid/query/function/TestFunctionMetadataReader.java 2011-01-26 21:40:40 UTC (rev 2877)
+++ branches/7.3.x/engine/src/test/java/org/teiid/query/function/TestFunctionMetadataReader.java 2011-01-27 03:26:46 UTC (rev 2878)
@@ -54,7 +54,7 @@
assertNull(m.getDescription());
assertEquals(1, m.getInputParameterCount());
- FunctionParameter in = m.getInputParameters()[0];
+ FunctionParameter in = m.getInputParameters().get(0);
assertEquals("prop", in.getName());
assertEquals("string", in.getType());
assertNull(in.getDescription());
Modified: branches/7.3.x/engine/src/test/java/org/teiid/query/function/metadata/TestFunctionMethod.java
===================================================================
--- branches/7.3.x/engine/src/test/java/org/teiid/query/function/metadata/TestFunctionMethod.java 2011-01-26 21:40:40 UTC (rev 2877)
+++ branches/7.3.x/engine/src/test/java/org/teiid/query/function/metadata/TestFunctionMethod.java 2011-01-27 03:26:46 UTC (rev 2878)
@@ -45,6 +45,16 @@
UnitTestUtil.helpTestEquivalence(0, m1, m1);
}
+ public void testEquivalence11() {
+ FunctionParameter pout = new FunctionParameter("out", "string"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ FunctionMethod m1 = new FunctionMethod("length", "", FunctionCategoryConstants.STRING, //$NON-NLS-1$ //$NON-NLS-2$
+ "com.metamatrix.query.function.FunctionMethods", "length", //$NON-NLS-1$ //$NON-NLS-2$
+ null, pout );
+
+ UnitTestUtil.helpTestEquivalence(0, m1, m1);
+ }
+
public void testEquivalence2() {
FunctionParameter p1 = new FunctionParameter("in", "string"); //$NON-NLS-1$ //$NON-NLS-2$
FunctionParameter pout = new FunctionParameter("out", "string"); //$NON-NLS-1$ //$NON-NLS-2$
More information about the teiid-commits
mailing list