Skip to content

Conversation

@sebersole
Copy link
Member

@sebersole sebersole commented Oct 9, 2025

Dropping usage of JUnit 4


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license
and can be relicensed under the terms of the LGPL v2.1 license in the future at the maintainers' discretion.
For more information on licensing, please check here.


https://hibernate.atlassian.net/browse/HHH-19846

}

public Set getEnrollments() {
public Set<Enrollment> getEnrollments() {

Check notice

Code scanning / CodeQL

Exposing internal representation

getEnrollments exposes the internal representation stored in field enrollments. The value may be modified [after this call to getEnrollments](1).

);
factoryScope.inTransaction( (session) -> session.doWork( (connection) -> {
final Statement statement = connection.createStatement();

Check warning

Code scanning / CodeQL

Potential database resource leak

This Statement is not always closed on method exit.
Comment on lines 1251 to 1253
final ResultSet resultSet = statement.executeQuery(
"select count(*) from farm_accreditations" );

Check warning

Code scanning / CodeQL

Potential database resource leak

This ResultSet is not always closed on method exit.
)
);
factoryScope.inTransaction((s) -> s.doWork( (connection) -> {
final Statement statement = connection.createStatement();

Check warning

Code scanning / CodeQL

Potential database resource leak

This Statement is not always closed on method exit.
)
);
factoryScope.inTransaction((s) -> s.doWork( (connection) -> {
final Statement statement = connection.createStatement();

Check warning

Code scanning / CodeQL

Potential database resource leak

This Statement is not always closed on method exit.
);
factoryScope.inTransaction((s) -> s.doWork( (connection) -> {
final Statement statement = connection.createStatement();
final ResultSet resultSet = statement.executeQuery( "select count(*) from human_nick_names" );

Check warning

Code scanning / CodeQL

Potential database resource leak

This ResultSet is not always closed on method exit.
)
);
factoryScope.inTransaction( s -> s.doWork( (connection) -> {
final Statement statement = connection.createStatement();

Check warning

Code scanning / CodeQL

Potential database resource leak

This Statement is not always closed on method exit.
);
factoryScope.inTransaction( s -> s.doWork( (connection) -> {
final Statement statement = connection.createStatement();
final ResultSet resultSet = statement.executeQuery( "select count(*) from human_nick_names" );

Check warning

Code scanning / CodeQL

Potential database resource leak

This ResultSet is not always closed on method exit.
this.name=name;
}
public Map getManagerBySite() {
public Map<Site,Employee> getManagerBySite() {

Check notice

Code scanning / CodeQL

Exposing internal representation

getManagerBySite exposes the internal representation stored in field managerBySite. The value may be modified [after this call to getManagerBySite](1). getManagerBySite exposes the internal representation stored in field managerBySite. The value may be modified [after this call to getManagerBySite](2). getManagerBySite exposes the internal representation stored in field managerBySite. The value may be modified [after this call to getManagerBySite](3).
@Override
public StandardServiceRegistry produceServiceRegistry(StandardServiceRegistryBuilder builder) {
try {
var dropOutput = File.createTempFile( "drop_script", ".sql" );

Check warning

Code scanning / CodeQL

Local information disclosure in a temporary directory

Local information disclosure vulnerability due to use of file readable by other local users.
public StandardServiceRegistry produceServiceRegistry(StandardServiceRegistryBuilder builder) {
try {
var dropOutput = File.createTempFile( "drop_script", ".sql" );
var createOutput = File.createTempFile( "create_script", ".sql" );

Check warning

Code scanning / CodeQL

Local information disclosure in a temporary directory

Local information disclosure vulnerability due to use of file readable by other local users.
public void testBooleanType() {
final Boolean original = Boolean.TRUE;
//noinspection UnnecessaryBoxing,removal,BooleanConstructorCall

Check notice

Code scanning / CodeQL

Inefficient primitive constructor

Inefficient constructor for boolean value, use Boolean.valueOf(...) instead.
public class BackrefPropertyRefTest extends BackrefTest {
@Test
void verifyMapping(DomainModelScope modelScope, SessionFactoryScope factoryScope) {

Check notice

Code scanning / CodeQL

Useless parameter

The parameter 'factoryScope' is never used.
private MetadataImplementor metadata;
private final List<AutoCloseable> toClose = new ArrayList<>();
private SessionFactoryImplementor sessionFactory;
private SessionFactoryScope factoryScope;

Check warning

Code scanning / CodeQL

Unsafe use of getResource

The idiom getClass().getResource() is unsafe for classes that may be extended.
private final List<AutoCloseable> toClose = new ArrayList<>();
private SessionFactoryImplementor sessionFactory;
private SessionFactoryScope factoryScope;

Check warning

Code scanning / CodeQL

Unsafe use of getResource

The idiom getClass().getResource() is unsafe for classes that may be extended.
private SessionFactoryImplementor sessionFactory;
private SessionFactoryScope factoryScope;

private final List<AutoCloseable> autoCloseables = new ArrayList<>();

Check warning

Code scanning / CodeQL

Unsafe use of getResource

The idiom getClass().getResource() is unsafe for classes that may be extended.
private SessionFactoryScope factoryScope;

private final List<AutoCloseable> autoCloseables = new ArrayList<>();

Check warning

Code scanning / CodeQL

Unsafe use of getResource

The idiom getClass().getResource() is unsafe for classes that may be extended.

private final List<AutoCloseable> autoCloseables = new ArrayList<>();

public DefaultCatalogAndSchemaTest(Options options) {

Check warning

Code scanning / CodeQL

Unsafe use of getResource

The idiom getClass().getResource() is unsafe for classes that may be extended.
private final List<AutoCloseable> autoCloseables = new ArrayList<>();

public DefaultCatalogAndSchemaTest(Options options) {
this.options = options;

Check warning

Code scanning / CodeQL

Unsafe use of getResource

The idiom getClass().getResource() is unsafe for classes that may be extended.
metadataSources.addInputStream( getClass().getResourceAsStream( "database-object-using-catalog-placeholder.orm.xml" ) );
metadataSources.addInputStream( getClass().getResourceAsStream( "database-object-using-schema-placeholder.orm.xml" ) );
if ( options.xmlMapping != null ) {
metadataSources.addInputStream( getClass().getResourceAsStream( options.xmlMapping ) );

Check warning

Code scanning / CodeQL

Unsafe use of getResource

The idiom getClass().getResource() is unsafe for classes that may be extended.
)
@DomainModel(annotatedClasses = TheEntity.class)
@SessionFactory
public void testIt(CdiContainerScope containerScope, SessionFactoryScope factoryScope) {

Check notice

Code scanning / CodeQL

Useless parameter

The parameter 'containerScope' is never used.
))
@DomainModel(annotatedClasses = TheEntity.class)
@SessionFactory
public void testAnnotations(CdiContainerScope containerScope, SessionFactoryScope factoryScope) {

Check notice

Code scanning / CodeQL

Useless parameter

The parameter 'containerScope' is never used.
))
@DomainModel(annotatedClasses = TheEntity.class, xmlMappings = "org/hibernate/test/cdi/converters/orm.xml")
@SessionFactory
public void testOrmXml(CdiContainerScope cdiScope, SessionFactoryScope factoryScope) {

Check notice

Code scanning / CodeQL

Useless parameter

The parameter 'cdiScope' is never used.
}

interface SettingResolver {
Object resolve(StandardServiceRegistryBuilder registryBuilder, ExtensionContext junitContext);

Check notice

Code scanning / CodeQL

Useless parameter

The parameter 'registryBuilder' is never used.
Comment on lines 92 to 113
long count = session.doReturningWork( (connection) -> {
// in this current form, users must handle try/catches themselves for proper resource release
Statement statement = null;
long personCount = 0;
try {
statement = session.getJdbcCoordinator().getStatementPreparer().createStatement();
ResultSet resultSet = null;
try {
resultSet = session.getJdbcCoordinator().getResultSetReturn().extract( statement, "select count(*) from T_JDBC_PERSON" );
resultSet.next();
personCount = resultSet.getLong( 1 );
assertEquals( 1L, personCount );
}
finally {
releaseQuietly( session, resultSet, statement );
}
}
);
session2.getTransaction().commit();
session2.close();
assertEquals( 1L, count );

session = openSession();
session.beginTransaction();
session.remove( p );
session.getTransaction().commit();
session.close();
finally {
releaseQuietly( session, statement );
}
return personCount;
} );

Check notice

Code scanning / CodeQL

Unread local variable

Variable 'long count' is never read.
finally {
session.close();
factoryScope.inTransaction( session, (s) -> session.doWork( connection -> {
final Statement stmnt = connection.createStatement();

Check warning

Code scanning / CodeQL

Potential database resource leak

This Statement is not always closed on method exit.
persistenceContext.getCollectionsByKey().values().contains( publisher.getAuthors() ) );
Assertions.assertEquals( 0, actionQueue.numberOfCollectionRemovals() );

Set<Author> authorsOld = publisher.getAuthors();

Check notice

Code scanning / CodeQL

Unread local variable

Variable 'Set<Author> authorsOld' is never read.
Comment on lines 160 to 167
List<Object> objects = session.createQuery(
"from java.lang.Object",
Object.class)
.getResultList();
"from java.lang.Object",
Object.class)
.getResultList();

Check notice

Code scanning / CodeQL

Unread local variable

Variable 'List<Object> objects' is never read.
Comment on lines 166 to 172
List<Person> persons = session.createQuery(
"from Person", Person.class)
.getResultList();
"from Person", Person.class)
.getResultList();

Check notice

Code scanning / CodeQL

Unread local variable

Variable 'List<Person> persons' is never read.
Comment on lines 172 to 179
LocalDateTime datetime = session.createQuery(
"select local datetime",
LocalDateTime.class)
.getSingleResult();
"select local datetime",
LocalDateTime.class)
.getSingleResult();

Check notice

Code scanning / CodeQL

Unread local variable

Variable 'LocalDateTime datetime' is never read.
public void test_jpql_api_named_query_example() {
doInJPA(this::entityManagerFactory, entityManager -> {
public void test_jpql_api_named_query_example(SessionFactoryScope factoryScope) {
factoryScope.inTransaction( entityManager -> {

Check notice

Code scanning / CodeQL

Unread local variable

Variable 'Query query' is never read.
Comment on lines 1108 to 1111
List<Person> persons = personStream
.skip(5)
.limit(5)
.collect(Collectors.toList());
.toList();

Check notice

Code scanning / CodeQL

Unread local variable

Variable 'List<Person> persons' is never read.
public void test_hql_api_positional_parameter_example() {
doInJPA(this::entityManagerFactory, entityManager -> {
@Test
@ExpectedException( IllegalArgumentException.class )

Check notice

Code scanning / CodeQL

Unread local variable

Variable 'Date timestamp' is never read.

Check notice

Code scanning / CodeQL

Unread local variable

Variable 'List<Call> calls1' is never read.
Comment on lines 50 to 54
var detached = TransactionUtil.fromTransaction( sessionFactory(), (s) -> {
A aGet = s.find( A.class, 1 );
aGet.name = "A. Name";
return aGet;
} );

Check notice

Code scanning / CodeQL

Unread local variable

Variable 'A detached' is never read.
Comment on lines 79 to 83
var detached = TransactionUtil.fromTransaction( sessionFactory(), (s) -> {
A aGet = s.find( A.class, 2 );
aGet.name = "A. Name";
return aGet;
} );

Check notice

Code scanning / CodeQL

Unread local variable

Variable 'A detached' is never read.
@sebersole sebersole force-pushed the drop-junit4 branch 5 times, most recently from c8f2a53 to d72d436 Compare October 24, 2025 18:37

public Set getSuites() {
public Set<Suite> getSuites() {
return suites;

Check notice

Code scanning / CodeQL

Exposing internal representation

getSuites exposes the internal representation stored in field suites. The value may be modified [after this call to getSuites](1). getSuites exposes the internal representation stored in field suites. The value may be modified [after this call to getSuites](2). getSuites exposes the internal representation stored in field suites. The value may be modified [after this call to getSuites](3). getSuites exposes the internal representation stored in field suites. The value may be modified [after this call to getSuites](4). getSuites exposes the internal representation stored in field suites. The value may be modified [after this call to getSuites](5). getSuites exposes the internal representation stored in field suites. The value may be modified [after this call to getSuites](6). getSuites exposes the internal representation stored in field suites. The value may be modified [after this call to getSuites](7).
public Set getAddresses() {
public Set<Address> getAddresses() {
return addresses;
}

Check notice

Code scanning / CodeQL

Exposing internal representation

getAddresses exposes the internal representation stored in field addresses. The value may be modified [after this call to getAddresses](1). getAddresses exposes the internal representation stored in field addresses. The value may be modified [after this call to getAddresses](2). getAddresses exposes the internal representation stored in field addresses. The value may be modified [after this call to getAddresses](3). getAddresses exposes the internal representation stored in field addresses. The value may be modified [after this call to getAddresses](4). getAddresses exposes the internal representation stored in field addresses. The value may be modified [after this call to getAddresses](5). getAddresses exposes the internal representation stored in field addresses. The value may be modified [after this call to getAddresses](6). getAddresses exposes the internal representation stored in field addresses. The value may be modified [after this call to getAddresses](7). getAddresses exposes the internal representation stored in field addresses. The value may be modified [after this call to getAddresses](8). getAddresses exposes the internal representation stored in field addresses. The value may be modified [after this call to getAddresses](9). getAddresses exposes the internal representation stored in field addresses. The value may be modified [after this call to getAddresses](10). getAddresses exposes the internal representation stored in field addresses. The value may be modified [after this call to getAddresses](11).
public Collection getFriends() {
public Collection<Person> getFriends() {
return friends;
}

Check notice

Code scanning / CodeQL

Exposing internal representation

getFriends exposes the internal representation stored in field friends. The value may be modified [after this call to getFriends](1). getFriends exposes the internal representation stored in field friends. The value may be modified [after this call to getFriends](2). getFriends exposes the internal representation stored in field friends. The value may be modified [after this call to getFriends](3). getFriends exposes the internal representation stored in field friends. The value may be modified [after this call to getFriends](4).
@sebersole sebersole marked this pull request as ready for review October 27, 2025 12:59
@sebersole sebersole closed this Oct 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant