Skip to content

Commit

Permalink
REST Data Panache dev mode fix #9510
Browse files Browse the repository at this point in the history
  • Loading branch information
Gytis Trikleris committed Jul 2, 2020
1 parent 288f5b8 commit 8349173
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 24 deletions.
2 changes: 1 addition & 1 deletion bom/runtime/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<properties>
<aesh.version>2.5</aesh.version>
<jandex.version>2.1.3.Final</jandex.version>
<resteasy.version>4.5.5.Final</resteasy.version>
<resteasy.version>4.6.0-SNAPSHOT</resteasy.version>
<opentracing.version>0.31.0</opentracing.version>
<opentracing-jaxrs.version>0.4.1</opentracing-jaxrs.version>
<opentracing-web-servlet-filter.version>0.2.3</opentracing-web-servlet-filter.version>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
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.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.hibernate.orm.rest.data.panache.deployment.entity.Collection;
import io.quarkus.hibernate.orm.rest.data.panache.deployment.entity.Item;
import io.quarkus.hibernate.orm.rest.data.panache.deployment.entity.ItemsController;
import io.quarkus.test.QuarkusDevModeTest;
import io.restassured.response.Response;

public class DevModeTest {

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

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

@Test
void testCreate() {
Response response = given().body("{\"name\": \"test\", \"collection\": {\"name\": \"full\"}}")
.and().contentType("application/json")
.when().post("/items")
.thenReturn();
assertThat(response.getStatusCode()).isEqualTo(201);
}
}
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.ClassLinksProvider;
import org.jboss.resteasy.links.ObjectLinksProvider;
import org.jboss.resteasy.links.LinksProvider;
import org.jboss.resteasy.links.RESTServiceDiscovery;
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 8349173

Please sign in to comment.