Skip to content

Commit 1cee801

Browse files
Merge pull request #3 from bobmcwhirter/metrics
First shot at integrating mp-metrics.
2 parents 96b0928 + 03c3712 commit 1cee801

File tree

22 files changed

+599
-3
lines changed

22 files changed

+599
-3
lines changed

core/deployment/src/main/java/org/jboss/shamrock/deployment/RuntimePriority.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ public class RuntimePriority {
99

1010
public static final int UNDERTOW_CREATE_DEPLOYMENT = 100;
1111
public static final int UNDERTOW_REGISTER_SERVLET = 200;
12-
public static final int JAXRS_DEPLOYMENT = 250;
1312
public static final int HEALTH_DEPLOYMENT = 260;
1413
public static final int WELD_DEPLOYMENT = 300;
14+
public static final int JAXRS_DEPLOYMENT = 350;
1515
public static final int UNDERTOW_DEPLOY = 400;
1616
public static final int UNDERTOW_START = 500;
1717

examples/everything/pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@
3232
<artifactId>shamrock-health-deployment</artifactId>
3333
<scope>provided</scope>
3434
</dependency>
35+
<dependency>
36+
<groupId>org.jboss.shamrock</groupId>
37+
<artifactId>shamrock-metrics-deployment</artifactId>
38+
<scope>provided</scope>
39+
</dependency>
3540
<dependency>
3641
<groupId>org.jboss.resteasy</groupId>
3742
<artifactId>resteasy-jaxb-provider</artifactId>
@@ -123,4 +128,4 @@
123128
</profile>
124129
</profiles>
125130

126-
</project>
131+
</project>
-18.7 MB
Binary file not shown.

examples/everything/src/main/java/org/jboss/shamrock/example/TestResource.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,14 @@
55
import javax.ws.rs.Produces;
66
import javax.xml.bind.annotation.XmlRootElement;
77

8+
import org.eclipse.microprofile.metrics.annotation.Counted;
9+
import org.eclipse.microprofile.metrics.annotation.Metric;
10+
811
@Path("/test")
912
public class TestResource {
1013

1114
@GET
15+
@Counted(monotonic = true)
1216
public String getTest() {
1317
return "TEST";
1418
}

jaxrs/deployment/src/main/java/org/jboss/shamrock/jaxrs/JaxrsScanningProcessor.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
5151
import org.jboss.shamrock.deployment.ResourceProcessor;
5252
import org.jboss.shamrock.deployment.RuntimePriority;
5353
import org.jboss.shamrock.deployment.codegen.BytecodeRecorder;
54+
import org.jboss.shamrock.jaxrs.runtime.graal.JaxrsTemplate;
55+
import org.jboss.shamrock.jaxrs.runtime.graal.ShamrockInjectorFactory;
5456
import org.jboss.shamrock.runtime.InjectionInstance;
5557
import org.jboss.shamrock.undertow.runtime.UndertowDeploymentTemplate;
5658

@@ -66,7 +68,9 @@ public class JaxrsScanningProcessor implements ResourceProcessor {
6668
private static final String JAX_RS_SERVLET_NAME = "javax.ws.rs.core.Application";
6769

6870
private static final DotName APPLICATION_PATH = DotName.createSimple("javax.ws.rs.ApplicationPath");
71+
6972
private static final DotName PATH = DotName.createSimple("javax.ws.rs.Path");
73+
7074
private static final DotName XML_ROOT = DotName.createSimple("javax.xml.bind.annotation.XmlRootElement");
7175

7276
private static final DotName[] METHOD_ANNOTATIONS = {
@@ -125,6 +129,7 @@ public void process(ArchiveContext archiveContext, ProcessorContext processorCon
125129

126130
undertow.addServletContextParameter(null, ResteasyContextParameters.RESTEASY_SCANNED_RESOURCES, sb.toString());
127131
undertow.addServletContextParameter(null, "resteasy.servlet.mapping.prefix", path);
132+
undertow.addServletContextParameter(null, "resteasy.injector.factory", ShamrockInjectorFactory.class.getName());
128133
processorContext.addReflectiveClass(HttpServlet30Dispatcher.class.getName());
129134
for (String i : loadProviders()) {
130135
processorContext.addReflectiveClass(i);
@@ -144,6 +149,10 @@ public void process(ArchiveContext archiveContext, ProcessorContext processorCon
144149
}
145150
}
146151

152+
try (BytecodeRecorder recorder = processorContext.addStaticInitTask(RuntimePriority.JAXRS_DEPLOYMENT)) {
153+
JaxrsTemplate jaxrs = recorder.getRecordingProxy(JaxrsTemplate.class);
154+
jaxrs.setupIntegration(null);
155+
}
147156
}
148157

149158
@Override

jaxrs/runtime/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,4 @@
3939
</plugin>
4040
</plugins>
4141
</build>
42-
</project>
42+
</project>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.jboss.shamrock.jaxrs.runtime.graal;
2+
3+
import javax.enterprise.inject.se.SeContainer;
4+
5+
import org.jboss.shamrock.runtime.ContextObject;
6+
7+
/**
8+
* Created by bob on 7/31/18.
9+
*/
10+
public class JaxrsTemplate {
11+
12+
public void setupIntegration(@ContextObject("weld.container")SeContainer container) {
13+
ShamrockInjectorFactory.CONTAINER = container;
14+
}
15+
16+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package org.jboss.shamrock.jaxrs.runtime.graal;
2+
3+
import java.lang.reflect.Constructor;
4+
5+
import javax.enterprise.inject.Instance;
6+
import javax.enterprise.inject.spi.CDI;
7+
import javax.ws.rs.WebApplicationException;
8+
9+
import org.jboss.resteasy.spi.ApplicationException;
10+
import org.jboss.resteasy.spi.ConstructorInjector;
11+
import org.jboss.resteasy.spi.Failure;
12+
import org.jboss.resteasy.spi.HttpRequest;
13+
import org.jboss.resteasy.spi.HttpResponse;
14+
import sun.security.provider.SHA;
15+
16+
/**
17+
* Created by bob on 7/31/18.
18+
*/
19+
public class ShamrockConstructorInjector implements ConstructorInjector {
20+
public ShamrockConstructorInjector(Constructor ctor, ConstructorInjector delegate) {
21+
this.ctor = ctor;
22+
this.delegate = delegate;
23+
}
24+
25+
@Override
26+
public Object construct() {
27+
System.err.println( "construct() " + this.ctor );
28+
return this.delegate.construct();
29+
}
30+
31+
@Override
32+
public Object construct(HttpRequest request, HttpResponse response) throws Failure, WebApplicationException, ApplicationException {
33+
System.err.println( "construct(req,resp) " + this.ctor );
34+
System.err.println( "CAN WE CDI? " + ShamrockInjectorFactory.CONTAINER);
35+
Instance object = ShamrockInjectorFactory.CONTAINER.select(this.ctor.getDeclaringClass());
36+
//return this.delegate.construct(request, response);
37+
return object.get();
38+
}
39+
40+
@Override
41+
public Object[] injectableArguments() {
42+
return this.delegate.injectableArguments();
43+
}
44+
45+
@Override
46+
public Object[] injectableArguments(HttpRequest request, HttpResponse response) throws Failure {
47+
return this.delegate.injectableArguments(request, response);
48+
}
49+
50+
private final ConstructorInjector delegate;
51+
52+
private final Constructor ctor;
53+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.jboss.shamrock.jaxrs.runtime.graal;
2+
3+
import java.lang.reflect.Constructor;
4+
5+
import javax.enterprise.inject.se.SeContainer;
6+
7+
import org.jboss.resteasy.core.InjectorFactoryImpl;
8+
import org.jboss.resteasy.spi.ConstructorInjector;
9+
import org.jboss.resteasy.spi.ResteasyProviderFactory;
10+
import org.jboss.resteasy.spi.metadata.ResourceConstructor;
11+
12+
/**
13+
* Created by bob on 7/31/18.
14+
*/
15+
public class ShamrockInjectorFactory extends InjectorFactoryImpl {
16+
17+
public static SeContainer CONTAINER = null;
18+
19+
@Override
20+
public ConstructorInjector createConstructor(Constructor constructor, ResteasyProviderFactory providerFactory) {
21+
System.err.println( "create constructor: " + constructor );
22+
return super.createConstructor(constructor, providerFactory);
23+
}
24+
25+
@Override
26+
public ConstructorInjector createConstructor(ResourceConstructor constructor, ResteasyProviderFactory providerFactory) {
27+
System.err.println( "create resource constructor: " + constructor.getConstructor() );
28+
return new ShamrockConstructorInjector(constructor.getConstructor(), super.createConstructor(constructor, providerFactory));
29+
}
30+
}

metrics/deployment/pom.xml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>shamrock-metrics</artifactId>
7+
<groupId>org.jboss.shamrock</groupId>
8+
<version>1.0.0.Alpha1-SNAPSHOT</version>
9+
<relativePath>../</relativePath>
10+
</parent>
11+
<modelVersion>4.0.0</modelVersion>
12+
13+
<artifactId>shamrock-metrics-deployment</artifactId>
14+
15+
<dependencies>
16+
<dependency>
17+
<groupId>org.jboss.shamrock</groupId>
18+
<artifactId>shamrock-core-deployment</artifactId>
19+
</dependency>
20+
<dependency>
21+
<groupId>org.jboss.shamrock</groupId>
22+
<artifactId>shamrock-weld-deployment</artifactId>
23+
</dependency>
24+
<dependency>
25+
<groupId>org.jboss.shamrock</groupId>
26+
<artifactId>shamrock-undertow-deployment</artifactId>
27+
</dependency>
28+
<dependency>
29+
<groupId>org.jboss.shamrock</groupId>
30+
<artifactId>shamrock-metrics-runtime</artifactId>
31+
</dependency>
32+
</dependencies>
33+
34+
35+
</project>

0 commit comments

Comments
 (0)