
|
If you were logged in you would be able to see more operations.
|
|
|
|
Time Tracking:
|
|
Original Estimate:
|
4h
|
|
|
Remaining Estimate:
|
4h
|
|
|
Time Spent:
|
Not Specified
|
|
|
|
| Resolution Date: |
01/Mar/08 07:32 PM
|
|
The method Cmp2Generator.createSelectMethod() does not support "none" return type. If an ejb.select method is created with result-type-mapping="none", then the return type will return type will get converted to void. This will throw a non-descriptive NullPointerException on line 778, since the return of Cmp2Generator.Convert.getConversion() will be null.
Recommendations:
FIX #1: Better error message than NullPointerException
A better error message would be appreciated here as is seen in the fromObjectTo() method such as:
public static void fromObjectTo(MethodVisitor mv, Class to) {
if (to.equals(Object.class)) {
// direct assignment will work
} else if (!to.isPrimitive()) {
mv.visitTypeInsn(CHECKCAST, Type.getInternalName(to));
} else {
Convert conversion = getConversion(to);
if (conversion == null) throw new NullPointerException("unsupported conversion for EJB select return type " + from.getName());
conversion.objectToPrimitive(mv);
}
}
FIX #2: Add void as a supported type. Also, verify doing so would not be a spec violation.
TO REPRODUCE: Create a bean method such as the following:
/**
* @ejb.transaction
* type="Mandatory"
* @ejb.select
* query="DELETE FROM someSCHEMA as a WHERE a.someId=?1"
* result-type-mapping="none"
*
* @param someId
*/
public abstract void ejbSelectRemoveById(java.lang.Integer someId) throws FinderException;
Disclaimer: I take no responsibility in the code sample... I was the one charged with debugging it when upgrading from Geronimo 1 to 2.1, not writing it. I understand there are better ways to do this.
|
|
Description
|
The method Cmp2Generator.createSelectMethod() does not support "none" return type. If an ejb.select method is created with result-type-mapping="none", then the return type will return type will get converted to void. This will throw a non-descriptive NullPointerException on line 778, since the return of Cmp2Generator.Convert.getConversion() will be null.
Recommendations:
FIX #1: Better error message than NullPointerException
A better error message would be appreciated here as is seen in the fromObjectTo() method such as:
public static void fromObjectTo(MethodVisitor mv, Class to) {
if (to.equals(Object.class)) {
// direct assignment will work
} else if (!to.isPrimitive()) {
mv.visitTypeInsn(CHECKCAST, Type.getInternalName(to));
} else {
Convert conversion = getConversion(to);
if (conversion == null) throw new NullPointerException("unsupported conversion for EJB select return type " + from.getName());
conversion.objectToPrimitive(mv);
}
}
FIX #2: Add void as a supported type. Also, verify doing so would not be a spec violation.
TO REPRODUCE: Create a bean method such as the following:
/**
* @ejb.transaction
* type="Mandatory"
* @ejb.select
* query="DELETE FROM someSCHEMA as a WHERE a.someId=?1"
* result-type-mapping="none"
*
* @param someId
*/
public abstract void ejbSelectRemoveById(java.lang.Integer someId) throws FinderException;
Disclaimer: I take no responsibility in the code sample... I was the one charged with debugging it when upgrading from Geronimo 1 to 2.1, not writing it. I understand there are better ways to do this. |
Show » |
made changes - 20/Feb/08 09:18 PM
| Field |
Original Value |
New Value |
|
Description
|
The method Cmp2Generator.createSelectMethod() does not support "none" return type. If an ejb.select method is created with result-type-mapping="mapping", then the return type will return type will get converted to void. This will throw a non-descriptive NullPointerException on line 778, since the return of Cmp2Generator.Convert.getConversion() will be null.
Recommendations:
Fix #1: Better error message than NullPointerException
A better error message would be appreciated here as is seen in the fromObjectTo() method such as:
public static void fromObjectTo(MethodVisitor mv, Class to) {
if (to.equals(Object.class)) {
// direct assignment will work
} else if (!to.isPrimitive()) {
mv.visitTypeInsn(CHECKCAST, Type.getInternalName(to));
} else {
Convert conversion = getConversion(to);
if (conversion == null) throw new NullPointerException("unsupported conversion for EJB select return type " + from.getName());
conversion.objectToPrimitive(mv);
}
}
Fix #2: Add void as a supported type. Also, verify doing so would not be a spec violation.
|
The method Cmp2Generator.createSelectMethod() does not support "none" return type. If an ejb.select method is created with result-type-mapping="none", then the return type will return type will get converted to void. This will throw a non-descriptive NullPointerException on line 778, since the return of Cmp2Generator.Convert.getConversion() will be null.
Recommendations:
Fix #1: Better error message than NullPointerException
A better error message would be appreciated here as is seen in the fromObjectTo() method such as:
public static void fromObjectTo(MethodVisitor mv, Class to) {
if (to.equals(Object.class)) {
// direct assignment will work
} else if (!to.isPrimitive()) {
mv.visitTypeInsn(CHECKCAST, Type.getInternalName(to));
} else {
Convert conversion = getConversion(to);
if (conversion == null) throw new NullPointerException("unsupported conversion for EJB select return type " + from.getName());
conversion.objectToPrimitive(mv);
}
}
Fix #2: Add void as a supported type. Also, verify doing so would not be a spec violation.
|
made changes - 20/Feb/08 09:25 PM
|
Description
|
The method Cmp2Generator.createSelectMethod() does not support "none" return type. If an ejb.select method is created with result-type-mapping="none", then the return type will return type will get converted to void. This will throw a non-descriptive NullPointerException on line 778, since the return of Cmp2Generator.Convert.getConversion() will be null.
Recommendations:
Fix #1: Better error message than NullPointerException
A better error message would be appreciated here as is seen in the fromObjectTo() method such as:
public static void fromObjectTo(MethodVisitor mv, Class to) {
if (to.equals(Object.class)) {
// direct assignment will work
} else if (!to.isPrimitive()) {
mv.visitTypeInsn(CHECKCAST, Type.getInternalName(to));
} else {
Convert conversion = getConversion(to);
if (conversion == null) throw new NullPointerException("unsupported conversion for EJB select return type " + from.getName());
conversion.objectToPrimitive(mv);
}
}
Fix #2: Add void as a supported type. Also, verify doing so would not be a spec violation.
|
The method Cmp2Generator.createSelectMethod() does not support "none" return type. If an ejb.select method is created with result-type-mapping="none", then the return type will return type will get converted to void. This will throw a non-descriptive NullPointerException on line 778, since the return of Cmp2Generator.Convert.getConversion() will be null.
Recommendations:
FIX #1: Better error message than NullPointerException
A better error message would be appreciated here as is seen in the fromObjectTo() method such as:
public static void fromObjectTo(MethodVisitor mv, Class to) {
if (to.equals(Object.class)) {
// direct assignment will work
} else if (!to.isPrimitive()) {
mv.visitTypeInsn(CHECKCAST, Type.getInternalName(to));
} else {
Convert conversion = getConversion(to);
if (conversion == null) throw new NullPointerException("unsupported conversion for EJB select return type " + from.getName());
conversion.objectToPrimitive(mv);
}
}
FIX #2: Add void as a supported type. Also, verify doing so would not be a spec violation.
TO REPRODUCE: Create a bean method such as the following:
/**
* @ejb.transaction
* type="Mandatory"
* @ejb.select
* query="DELETE FROM someSCHEMA as a WHERE a.someId=?1"
* result-type-mapping="none"
*
* @param someId
*/
public abstract void ejbSelectRemoveById(java.lang.Integer someId) throws FinderException;
Disclaimer: I take responsibility in the code sample... I was the one charged with debugging it, not writing it. I understand there are better ways to do this.
|
made changes - 20/Feb/08 09:25 PM
|
Description
|
The method Cmp2Generator.createSelectMethod() does not support "none" return type. If an ejb.select method is created with result-type-mapping="none", then the return type will return type will get converted to void. This will throw a non-descriptive NullPointerException on line 778, since the return of Cmp2Generator.Convert.getConversion() will be null.
Recommendations:
FIX #1: Better error message than NullPointerException
A better error message would be appreciated here as is seen in the fromObjectTo() method such as:
public static void fromObjectTo(MethodVisitor mv, Class to) {
if (to.equals(Object.class)) {
// direct assignment will work
} else if (!to.isPrimitive()) {
mv.visitTypeInsn(CHECKCAST, Type.getInternalName(to));
} else {
Convert conversion = getConversion(to);
if (conversion == null) throw new NullPointerException("unsupported conversion for EJB select return type " + from.getName());
conversion.objectToPrimitive(mv);
}
}
FIX #2: Add void as a supported type. Also, verify doing so would not be a spec violation.
TO REPRODUCE: Create a bean method such as the following:
/**
* @ejb.transaction
* type="Mandatory"
* @ejb.select
* query="DELETE FROM someSCHEMA as a WHERE a.someId=?1"
* result-type-mapping="none"
*
* @param someId
*/
public abstract void ejbSelectRemoveById(java.lang.Integer someId) throws FinderException;
Disclaimer: I take responsibility in the code sample... I was the one charged with debugging it, not writing it. I understand there are better ways to do this.
|
The method Cmp2Generator.createSelectMethod() does not support "none" return type. If an ejb.select method is created with result-type-mapping="none", then the return type will return type will get converted to void. This will throw a non-descriptive NullPointerException on line 778, since the return of Cmp2Generator.Convert.getConversion() will be null.
Recommendations:
FIX #1: Better error message than NullPointerException
A better error message would be appreciated here as is seen in the fromObjectTo() method such as:
public static void fromObjectTo(MethodVisitor mv, Class to) {
if (to.equals(Object.class)) {
// direct assignment will work
} else if (!to.isPrimitive()) {
mv.visitTypeInsn(CHECKCAST, Type.getInternalName(to));
} else {
Convert conversion = getConversion(to);
if (conversion == null) throw new NullPointerException("unsupported conversion for EJB select return type " + from.getName());
conversion.objectToPrimitive(mv);
}
}
FIX #2: Add void as a supported type. Also, verify doing so would not be a spec violation.
TO REPRODUCE: Create a bean method such as the following:
/**
* @ejb.transaction
* type="Mandatory"
* @ejb.select
* query="DELETE FROM someSCHEMA as a WHERE a.someId=?1"
* result-type-mapping="none"
*
* @param someId
*/
public abstract void ejbSelectRemoveById(java.lang.Integer someId) throws FinderException;
Disclaimer: I take no responsibility in the code sample... I was the one charged with debugging it when upgrading from Geronimo 1 to 2.1, not writing it. I understand there are better ways to do this.
|
made changes - 24/Feb/08 09:09 PM
|
Fix Version/s
|
|
3.0
[ 12312805
]
|
|
Fix Version/s
|
3.0-beta-2
[ 12312804
]
|
|
made changes - 01/Mar/08 07:32 PM
|
Assignee
|
|
Dain Sundstrom
[ dain
]
|
|
Summary
|
CMP2 Select Generation does not include VOID return type
|
Allow CMP2 ejbSelect returning void for UPDATE and DELETE queries
|
|
Issue Type
|
Bug
[ 1
]
|
Improvement
[ 4
]
|
made changes - 01/Mar/08 07:32 PM
|
Resolution
|
|
Fixed
[ 1
]
|
|
Status
|
Open
[ 1
]
|
Closed
[ 6
]
|
|