BF [ 1990856 ] PO.set_Value* : truncate string more than needed
* fixed minor saveEx/deleteEx issue
This commit is contained in:
parent
c473d0d1a9
commit
b71f4b88c3
|
@ -69,6 +69,7 @@ import org.w3c.dom.Element;
|
||||||
* <li>FR [ 1675490 ] ModelValidator on modelChange after events
|
* <li>FR [ 1675490 ] ModelValidator on modelChange after events
|
||||||
* <li>BF [ 1704828 ] PO.is_Changed() and PO.is_ValueChanged are not consistent
|
* <li>BF [ 1704828 ] PO.is_Changed() and PO.is_ValueChanged are not consistent
|
||||||
* <li>FR [ 1720995 ] Add PO.saveEx() and PO.deleteEx() methods
|
* <li>FR [ 1720995 ] Add PO.saveEx() and PO.deleteEx() methods
|
||||||
|
* <li>BF [ 1990856 ] PO.set_Value* : truncate string more than needed
|
||||||
*/
|
*/
|
||||||
public abstract class PO
|
public abstract class PO
|
||||||
implements Serializable, Comparator, Evaluatee
|
implements Serializable, Comparator, Evaluatee
|
||||||
|
@ -765,10 +766,11 @@ public abstract class PO
|
||||||
if (stringValue.length() > length && length > 0)
|
if (stringValue.length() > length && length > 0)
|
||||||
{
|
{
|
||||||
log.warning(ColumnName + " - Value too long - truncated to length=" + length);
|
log.warning(ColumnName + " - Value too long - truncated to length=" + length);
|
||||||
m_newValues[index] = stringValue.substring(0,length-1);
|
m_newValues[index] = stringValue.substring(0,length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.finest(ColumnName + " = " + m_newValues[index]);
|
if (CLogMgt.isLevelFinest())
|
||||||
|
log.finest(ColumnName + " = " + m_newValues[index] + " (OldValue="+m_oldValues[index]+")");
|
||||||
}
|
}
|
||||||
set_Keys (ColumnName, m_newValues[index]);
|
set_Keys (ColumnName, m_newValues[index]);
|
||||||
return true;
|
return true;
|
||||||
|
@ -841,7 +843,7 @@ public abstract class PO
|
||||||
if (stringValue.length() > length && length > 0)
|
if (stringValue.length() > length && length > 0)
|
||||||
{
|
{
|
||||||
log.warning(ColumnName + " - Value too long - truncated to length=" + length);
|
log.warning(ColumnName + " - Value too long - truncated to length=" + length);
|
||||||
m_newValues[index] = stringValue.substring(0,length-1);
|
m_newValues[index] = stringValue.substring(0,length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1965,7 +1967,7 @@ public abstract class PO
|
||||||
ValueNamePair err = CLogger.retrieveError();
|
ValueNamePair err = CLogger.retrieveError();
|
||||||
if (err != null)
|
if (err != null)
|
||||||
msg = err.getName();
|
msg = err.getName();
|
||||||
if (msg == null)
|
if (msg == null || msg.length() == 0)
|
||||||
msg = "SaveError";
|
msg = "SaveError";
|
||||||
throw new AdempiereException(msg);
|
throw new AdempiereException(msg);
|
||||||
}
|
}
|
||||||
|
@ -2842,7 +2844,7 @@ public abstract class PO
|
||||||
ValueNamePair err = CLogger.retrieveError();
|
ValueNamePair err = CLogger.retrieveError();
|
||||||
if (err != null)
|
if (err != null)
|
||||||
msg = err.getName();
|
msg = err.getName();
|
||||||
if (msg == null)
|
if (msg == null || msg.length() == 0)
|
||||||
msg = "DeleteError";
|
msg = "DeleteError";
|
||||||
throw new AdempiereException(msg);
|
throw new AdempiereException(msg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
package test.functional;
|
package test.functional;
|
||||||
|
|
||||||
import org.compiere.model.MTest;
|
import org.compiere.model.MTest;
|
||||||
|
import org.compiere.model.POInfo;
|
||||||
|
|
||||||
import test.AdempiereTestCase;
|
import test.AdempiereTestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for {@link org.compiere.model.PO} class.
|
* Tests for {@link org.compiere.model.PO} class.
|
||||||
* @author Teo Sarca
|
* @author Teo Sarca, SC ARHIPAC SERVICE SRL
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class POTest extends AdempiereTestCase
|
public class POTest extends AdempiereTestCase
|
||||||
{
|
{
|
||||||
|
@ -58,4 +58,51 @@ public class POTest extends AdempiereTestCase
|
||||||
// Finally, delete the testPO
|
// Finally, delete the testPO
|
||||||
testPO.delete(true, getTrxName());
|
testPO.delete(true, getTrxName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <li>BF [ 1990856 ] PO.set_Value* : truncate string more than needed
|
||||||
|
*/
|
||||||
|
public void testTruncatedStrings() {
|
||||||
|
//
|
||||||
|
// Creating a huge string for testing:
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
for (int i = 1; i <= 1000; i++) {
|
||||||
|
sb.append("0123456789");
|
||||||
|
}
|
||||||
|
String bigString = sb.toString();
|
||||||
|
//
|
||||||
|
// Create the test PO:
|
||||||
|
MTest testPO = new MTest(getCtx(), getClass().getName(), 1);
|
||||||
|
testPO.set_TrxName(getTrxName());
|
||||||
|
//
|
||||||
|
// Getting Max Length:
|
||||||
|
POInfo info = POInfo.getPOInfo(getCtx(), MTest.Table_ID);
|
||||||
|
int maxLength = info.getFieldLength(info.getColumnIndex(MTest.COLUMNNAME_Name));
|
||||||
|
//
|
||||||
|
// Test with a string that has less then maxLength
|
||||||
|
{
|
||||||
|
testPO.set_ValueOfColumn(MTest.COLUMNNAME_Name, bigString.substring(0, maxLength - 1));
|
||||||
|
String resultString = (String) testPO.get_Value(MTest.COLUMNNAME_Name);
|
||||||
|
assertEquals("String was not truncated correctly (1)", maxLength - 1, resultString.length());
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Test with a string that has maxLength
|
||||||
|
{
|
||||||
|
testPO.set_ValueOfColumn(MTest.COLUMNNAME_Name, bigString.substring(0, maxLength));
|
||||||
|
String resultString = (String) testPO.get_Value(MTest.COLUMNNAME_Name);
|
||||||
|
assertEquals("String was not truncated correctly (2)", maxLength, resultString.length());
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Test with a string that has more than maxLength
|
||||||
|
{
|
||||||
|
testPO.set_ValueOfColumn(MTest.COLUMNNAME_Name, bigString);
|
||||||
|
String resultString = (String) testPO.get_Value(MTest.COLUMNNAME_Name);
|
||||||
|
assertEquals("String was not truncated correctly (3)", maxLength, resultString.length());
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Finally, delete the testPO
|
||||||
|
testPO.delete(true, getTrxName());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue