Skip to content

Commit

Permalink
Merge pull request #18218 from Sanne/MultilineImportsReactive
Browse files Browse the repository at this point in the history
Hibernate Reactive to use multi-line import scripts
  • Loading branch information
gsmet authored Jun 29, 2021
2 parents 68ce7b7 + dbf8f83 commit 23bcfc5
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package io.quarkus.hibernate.reactive;

import static org.assertj.core.api.Assertions.assertThat;

import java.util.List;

import javax.inject.Inject;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

import org.hibernate.reactive.mutiny.Mutiny;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.test.QuarkusUnitTest;
import io.smallrye.mutiny.Uni;

public class MultiLineImportTest {

@RegisterExtension
static QuarkusUnitTest runner = new QuarkusUnitTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
.addClass(Hero.class)
.addAsResource("complexMultilineImports.sql", "import.sql"))
.withConfigurationResource("application.properties");

@Inject
Mutiny.SessionFactory sessionFactory;

@Test
public void integerIdentifierWithStageAPI() {
final Uni<List<Object>> result = sessionFactory.withSession(s -> s.createQuery(
"from Hero h where h.name = :name").setParameter("name", "Galadriel").getResultList());
final List<Object> list = result.await().indefinitely();
assertThat(list).hasSize(1);
}

@Entity(name = "Hero")
@Table(name = "hero")
public static class Hero {

@javax.persistence.Id
@javax.persistence.GeneratedValue
public java.lang.Long id;

@Column(unique = true)
public String name;

public String otherName;

public int level;

public String picture;

@Column(columnDefinition = "TEXT")
public String powers;

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-- tag::adocSQL[]
INSERT INTO hero(id, name, otherName, picture, powers, level)
VALUES (nextval('hibernate_sequence'), 'Chewbacca', '', 'https://www.superherodb.com/pictures2/portraits/10/050/10466.jpg', 'Agility, Longevity, Marksmanship, Natural Weapons, Stealth, Super Strength, Weapons Master', 5);
INSERT INTO hero(id, name, otherName, picture, powers, level)
VALUES (nextval('hibernate_sequence'), 'Angel Salvadore', 'Angel Salvadore Bohusk', 'https://www.superherodb.com/pictures2/portraits/10/050/1406.jpg', 'Animal Attributes, Animal Oriented Powers, Flight, Regeneration, Toxin and Disease Control', 4);
INSERT INTO hero(id, name, otherName, picture, powers, level)
VALUES (nextval('hibernate_sequence'), 'Bill Harken', '', 'https://www.superherodb.com/pictures2/portraits/10/050/1527.jpg', 'Super Speed, Super Strength, Toxin and Disease Resistance', 6);
-- end::adocSQL[]
INSERT INTO hero(id, name, otherName, picture, powers, level)
VALUES (nextval('hibernate_sequence'), 'Galadriel', '', 'https://www.superherodb.com/pictures2/portraits/11/050/11796.jpg', 'Danger Sense, Immortality, Intelligence, Invisibility, Magic, Precognition, Telekinesis, Telepathy', 17);
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
import org.hibernate.resource.transaction.internal.TransactionCoordinatorBuilderInitiator;
import org.hibernate.service.internal.ProvidedService;
import org.hibernate.service.internal.SessionFactoryServiceRegistryFactoryInitiator;
import org.hibernate.tool.hbm2ddl.ImportSqlCommandExtractorInitiator;
import org.hibernate.tool.schema.internal.SchemaManagementToolInitiator;

import io.quarkus.hibernate.orm.runtime.boot.registry.MirroringIntegratorService;
Expand All @@ -42,6 +41,7 @@
import io.quarkus.hibernate.orm.runtime.service.CfgXmlAccessServiceInitiatorQuarkus;
import io.quarkus.hibernate.orm.runtime.service.DisabledJMXInitiator;
import io.quarkus.hibernate.orm.runtime.service.FlatClassLoaderService;
import io.quarkus.hibernate.orm.runtime.service.QuarkusImportSqlCommandExtractorInitiator;
import io.quarkus.hibernate.orm.runtime.service.QuarkusRegionFactoryInitiator;
import io.quarkus.hibernate.reactive.runtime.customized.QuarkusNoJdbcConnectionProviderInitiator;
import io.quarkus.hibernate.reactive.runtime.customized.QuarkusNoJdbcEnvironmentInitiator;
Expand Down Expand Up @@ -160,8 +160,8 @@ private static List<StandardServiceInitiator> buildQuarkusServiceInitiatorList(R
// TODO (optional): assume entities are already enhanced?
serviceInitiators.add(PropertyAccessStrategyResolverInitiator.INSTANCE);

// TODO (optional): not a priority
serviceInitiators.add(ImportSqlCommandExtractorInitiator.INSTANCE);
// Custom one!
serviceInitiators.add(QuarkusImportSqlCommandExtractorInitiator.INSTANCE);

// TODO disable?
serviceInitiators.add(SchemaManagementToolInitiator.INSTANCE);
Expand Down

0 comments on commit 23bcfc5

Please sign in to comment.