Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into wip/6.0
Browse files Browse the repository at this point in the history
  • Loading branch information
dreab8 committed Feb 18, 2021
2 parents 4069740 + 91a68c6 commit 4094729
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 3 deletions.
2 changes: 1 addition & 1 deletion docker_db.sh
Expand Up @@ -127,7 +127,7 @@ oracle() {
docker rm -f oracle || true
# We need to use the defaults
# SYSTEM/Oracle18
docker run --shm-size=1536m --name oracle -d -p 1521:1521 quillbuilduser/oracle-18-xe
docker run --shm-size=1536m --name oracle -d -p 1521:1521 --ulimit nofile=1048576:1048576 quillbuilduser/oracle-18-xe
until [ "`docker inspect -f {{.State.Health.Status}} oracle`" == "healthy" ];
do
echo "Waiting for Oracle to start..."
Expand Down
Expand Up @@ -25,7 +25,7 @@
import org.hibernate.property.access.spi.SetterMethodImpl;

import static org.hibernate.internal.util.ReflectHelper.getterMethodOrNull;
import static org.hibernate.internal.util.ReflectHelper.setterMethodOrNull;
import static org.hibernate.internal.util.ReflectHelper.findSetterMethod;

/**
* A PropertyAccess based on mix of getter/setter method and/or field.
Expand Down Expand Up @@ -65,7 +65,7 @@ public PropertyAccessMixedImpl(
"Could not locate getter for property named [" + containerJavaType.getName() + "#" + propertyName + "]"
);
}
Method setterMethod = setterMethodOrNull( containerJavaType, propertyName, getterMethod.getReturnType() );
Method setterMethod = findSetterMethod( containerJavaType, propertyName, getterMethod.getReturnType() );

this.getter = propertyGetter( containerJavaType, propertyName, getterMethod );
this.setter = propertySetter( containerJavaType, propertyName, setterMethod );
Expand Down
@@ -0,0 +1,92 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.proxy;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

import org.hibernate.MappingException;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;
import org.hibernate.service.ServiceRegistry;

import org.hibernate.testing.ServiceRegistryBuilder;
import org.hibernate.testing.TestForIssue;
import org.hibernate.testing.bytecode.enhancement.BytecodeEnhancerRunner;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

/**
*
* @author Christian Beikov
*/
@TestForIssue(jiraKey = "HHH-14460")
@RunWith( BytecodeEnhancerRunner.class )
public class MissingSetterWithEnhancementTest {
private ServiceRegistry serviceRegistry;

@Before
public void setUp() {
final BootstrapServiceRegistryBuilder builder = new BootstrapServiceRegistryBuilder();
builder.applyClassLoader( getClass().getClassLoader() );
serviceRegistry = new StandardServiceRegistryBuilder( builder.build() )
.applySettings( Environment.getProperties() )
.build();
}

@After
public void tearDown() {
if ( serviceRegistry != null ) {
ServiceRegistryBuilder.destroy( serviceRegistry );
}
}

@Test
public void testEnhancedClassMissesSetterForProperty() {
Configuration cfg = new Configuration();
cfg.addAnnotatedClass( EntityWithMissingSetter.class );
try (SessionFactory sf = cfg.buildSessionFactory( serviceRegistry )) {
fail( "Setter is missing for `name`. SessionFactory creation should fail." );
}
catch (MappingException e) {
assertEquals(
"Could not locate setter method for property [" + EntityWithMissingSetter.class.getName() + "#name]",
e.getCause().getCause().getCause().getMessage()
);
}
}

@Entity
public static class EntityWithMissingSetter {
private Long id;
@Column
private int someInt;

@Id
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getName() {
return null;
}

}
}

0 comments on commit 4094729

Please sign in to comment.