Skip to content

Commit

Permalink
Merge pull request #10431 from gytis/bug-fix-9510
Browse files Browse the repository at this point in the history
REST Data Panache dev mode fix #9510
  • Loading branch information
geoand authored Sep 29, 2020
2 parents 5ff948e + 3e1af27 commit ac0e934
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package io.quarkus.hibernate.orm.rest.data.panache.deployment;

import static io.restassured.RestAssured.given;
import static io.restassured.RestAssured.when;
import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.Test;

import io.restassured.response.Response;

public abstract class AbstractDevModeTest {

@Test
void testGet() {
when().get("/items/1")
.then().statusCode(200);
}

@Test
void testCreate() {
Response response = given().accept("application/json")
.and().contentType("application/json")
.and().body("{\"name\": \"test-simple\", \"collection\": {\"id\": \"full\"}}")
.when().post("/items")
.thenReturn();
assertThat(response.getStatusCode()).isEqualTo(201);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package io.quarkus.hibernate.orm.rest.data.panache.deployment.entity;

import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.hibernate.orm.rest.data.panache.deployment.AbstractDevModeTest;
import io.quarkus.test.QuarkusDevModeTest;

public class PanacheEntityResourceDevModeTest extends AbstractDevModeTest {

@RegisterExtension
static final QuarkusDevModeTest TEST = new QuarkusDevModeTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
.addClasses(Collection.class, AbstractItem.class, Item.class, ItemsController.class)
.addAsResource("application.properties")
.addAsResource("import.sql"));

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package io.quarkus.hibernate.orm.rest.data.panache.deployment.repository;

import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.hibernate.orm.rest.data.panache.deployment.AbstractDevModeTest;
import io.quarkus.test.QuarkusDevModeTest;

public class PanacheRepositoryResourceDevModeTest extends AbstractDevModeTest {

@RegisterExtension
static final QuarkusDevModeTest TEST = new QuarkusDevModeTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
.addClasses(Collection.class, AbstractItem.class, Item.class, ItemsController.class, ItemsRepository.class)
.addAsResource("application.properties")
.addAsResource("import.sql"));

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,30 @@
import java.util.HashMap;
import java.util.Map;

import javax.ws.rs.core.UriInfo;

import org.jboss.resteasy.core.ResourceMethodRegistry;
import org.jboss.resteasy.core.ResteasyContext;
import org.jboss.resteasy.links.LinksProvider;
import org.jboss.resteasy.links.RESTServiceDiscovery;
import org.jboss.resteasy.links.impl.ClassLinksProvider;
import org.jboss.resteasy.links.impl.ObjectLinksProvider;
import org.jboss.resteasy.spi.Registry;

public final class ResourceLinksProvider {

private static final String SELF_REF = "self";

public Map<String, String> getClassLinks(Class<?> className) {
return linksToMap(getClassLinksProvider().getLinks(className));
RESTServiceDiscovery links = LinksProvider
.getClassLinksProvider()
.getLinks(className, Thread.currentThread().getContextClassLoader());
return linksToMap(links);
}

public Map<String, String> getInstanceLinks(Object instance) {
return linksToMap(getObjectLinksProvider().getLinks(instance));
RESTServiceDiscovery links = LinksProvider
.getObjectLinksProvider()
.getLinks(instance, Thread.currentThread().getContextClassLoader());
return linksToMap(links);
}

public String getSelfLink(Object instance) {
RESTServiceDiscovery.AtomLink link = getObjectLinksProvider()
.getLinks(instance)
RESTServiceDiscovery.AtomLink link = LinksProvider.getObjectLinksProvider()
.getLinks(instance, Thread.currentThread().getContextClassLoader())
.getLinkForRel(SELF_REF);
return link == null ? null : link.getHref();
}
Expand All @@ -38,16 +38,4 @@ private Map<String, String> linksToMap(RESTServiceDiscovery serviceDiscovery) {
}
return links;
}

private ObjectLinksProvider getObjectLinksProvider() {
UriInfo uriInfo = ResteasyContext.getContextData(UriInfo.class);
ResourceMethodRegistry registry = (ResourceMethodRegistry) ResteasyContext.getContextData(Registry.class);
return new ObjectLinksProvider(uriInfo, registry);
}

private ClassLinksProvider getClassLinksProvider() {
UriInfo uriInfo = ResteasyContext.getContextData(UriInfo.class);
ResourceMethodRegistry registry = (ResourceMethodRegistry) ResteasyContext.getContextData(Registry.class);
return new ClassLinksProvider(uriInfo, registry);
}
}

0 comments on commit ac0e934

Please sign in to comment.