configuration of obligationPolicy.db:
de.tsystems.ec.cs.db.DBUtils,getConnection,()Ljava/sql/Connection;,127|ADD,STRONG,de.tsystems.ec.cs.db.DBUtils
de.tsystems.ec.cs.db.DBUtils,freeConnection,(Ljava/sql/Connection;)V,127|DEL,STRONG,de.tsystems.ec.cs.db.DBUtils
Configured obligation class:
public class DBUtils {
@CreatesObligation
public static Connection getConnection()
{
System.out.println("open");
return null;
}
@DischargesObligation
public static void freeConnection(Connection connection)
{
System.out.println("close");
}
}
Testcases:
package somep;
import java.sql.Connection;
import java.sql.ResultSet;
import de.tsystems.ec.cs.db.DBUtils;
public class Test {
public void t1() throws Exception {
DBUtils.getConnection();
DBUtils.freeConnection(null);
}
public void t2() throws Exception {
DBUtils.getConnection();
//DBUtils.freeConnection(null);
}
public void method3(){}
public void t3() throws Exception {
DBUtils.getConnection();
boolean b= true;
while(b==false){
method3();
}
}
public static void method31(){}
public void t31() throws Exception {
DBUtils.getConnection();
boolean b= true;
while(b==false){
method31();
}
}
public static void method32(){}
public static void t32() throws Exception {
DBUtils.getConnection();
boolean b= true;
while(b==false){
method32();
}
}
public static void method33(){}
public static void t33() throws Exception { // WHOPS DOES NOT WORK
DBUtils.getConnection();
boolean b= true;
while(true){
method33();
}
}
public void method4(){}
public void t4() throws Exception { // ! DOES NOT WORK - strange
DBUtils.getConnection();
boolean b= true;
for(;;){
method4();
}
}
public void method41(){}
public void t41() throws Exception { // ! DOES NOT WORK - strange
Connection con = DBUtils.getConnection();
boolean b= true;
for(;;){
method41();
}
}
public void method5(Object o){}
public void t5() throws Exception {
DBUtils.getConnection();
boolean b= true;
while(b==false){
method5(new Object());
}
}
public void method6(Object o){}
public void t6() throws Exception {
Connection con = DBUtils.getConnection();
boolean b= true;
while(b==false){
method6(con);
}
}
public void method7(Connection o){}
public void t7() throws Exception {
Connection con = DBUtils.getConnection();
boolean b= true;
while(b==false){
method7(con);
}
}
public void method8(ResultSet o){}
public void t8() throws Exception { //WORKS
ResultSet resultSet = null;
Connection con = DBUtils.getConnection();
boolean b= true;
while(b==false){
method8(resultSet);
}
}
public void method9(ResultSet o){}
public void t9() throws Exception { // WORKS
ResultSet resultSet = null;
Connection con = DBUtils.getConnection();
boolean b= true;
while(b==false){
method9(null);
}
}
}