diff --git a/core/src/main/java/org/eclipse/krazo/bootstrap/CoreFeature.java b/core/src/main/java/org/eclipse/krazo/bootstrap/CoreFeature.java index f0ae7160..97aa389a 100644 --- a/core/src/main/java/org/eclipse/krazo/bootstrap/CoreFeature.java +++ b/core/src/main/java/org/eclipse/krazo/bootstrap/CoreFeature.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2019 Eclipse Krazo committers and contributors + * Copyright (c) 2018, 2021 Eclipse Krazo committers and contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -47,12 +47,6 @@ public boolean configure(FeatureContext context) { // RESTEasy seems to ignore @ConstrainedTo in some cases if (context.getConfiguration().getRuntimeType() == RuntimeType.SERVER) { - // https://issues.apache.org/jira/browse/CXF-7501 - // https://issues.apache.org/jira/browse/TOMEE-2122 - if (servletContext == null) { - log.warning("The ServletContext wasn't injected into the JAX-RS Feature class"); - } - Initializer.initialize(context, servletContext); return true; diff --git a/core/src/main/java/org/eclipse/krazo/bootstrap/DefaultConfigProvider.java b/core/src/main/java/org/eclipse/krazo/bootstrap/DefaultConfigProvider.java index c7dec4d4..69d85a25 100644 --- a/core/src/main/java/org/eclipse/krazo/bootstrap/DefaultConfigProvider.java +++ b/core/src/main/java/org/eclipse/krazo/bootstrap/DefaultConfigProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2019 Eclipse Krazo committers and contributors + * Copyright (c) 2018, 2021 Eclipse Krazo committers and contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,10 @@ */ package org.eclipse.krazo.bootstrap; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + import org.eclipse.krazo.binding.convert.MvcConverterProvider; import org.eclipse.krazo.core.ViewResponseFilter; import org.eclipse.krazo.core.ViewableWriter; @@ -26,13 +30,8 @@ import org.eclipse.krazo.security.CsrfExceptionMapper; import org.eclipse.krazo.security.CsrfProtectFilter; import org.eclipse.krazo.security.CsrfValidateFilter; -import org.eclipse.krazo.util.CdiUtils; import jakarta.ws.rs.core.FeatureContext; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; /** * Implementation of ConfigProvider which registers all providers of the core module. @@ -61,30 +60,7 @@ public void configure(FeatureContext context) { } private void register(FeatureContext context, Class providerClass) { - - boolean isCxf = context.getClass().getName().startsWith("org.apache.cxf"); - - /* - * With CXF there is no CDI injection if JAX-RS providers are registered via - * context.register(Class). So we try to lookup provider instances from CDI - * and register them instead. - * See: https://issues.apache.org/jira/browse/CXF-7501 - */ - if (isCxf) { - List providerInstances = CdiUtils.getApplicationBeans(providerClass); - if (!providerInstances.isEmpty()) { - context.register(providerInstances.get(0)); - } else { - context.register(providerClass); - } - } - - // will work for all other containers - else { - context.register(providerClass); - } - - + context.register(providerClass); } } diff --git a/core/src/main/java/org/eclipse/krazo/bootstrap/Initializer.java b/core/src/main/java/org/eclipse/krazo/bootstrap/Initializer.java index ee114a10..c3165ec9 100644 --- a/core/src/main/java/org/eclipse/krazo/bootstrap/Initializer.java +++ b/core/src/main/java/org/eclipse/krazo/bootstrap/Initializer.java @@ -17,6 +17,11 @@ */ package org.eclipse.krazo.bootstrap; +import java.util.Objects; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; + import org.eclipse.krazo.core.ViewResponseFilter; import org.eclipse.krazo.servlet.KrazoContainerInitializer; import org.eclipse.krazo.util.ServiceLoaders; @@ -24,10 +29,6 @@ import jakarta.servlet.ServletContext; import jakarta.ws.rs.core.Configuration; import jakarta.ws.rs.core.FeatureContext; -import java.util.Objects; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; /** * Main class for triggering initialization of Eclipse Krazo @@ -71,9 +72,6 @@ private static boolean isAlreadyInitialized(Configuration config) { return config.isRegistered(ViewResponseFilter.class); } - /** - * Note: ServletContext may be null here, because CXF doesn't inject it correctly - */ private static boolean isMvcApplication(ServletContext servletContext) { // we fall back to enable Krazo if detection didn't work diff --git a/core/src/main/java/org/eclipse/krazo/core/ViewResponseFilter.java b/core/src/main/java/org/eclipse/krazo/core/ViewResponseFilter.java index 4215e318..29bcc38c 100644 --- a/core/src/main/java/org/eclipse/krazo/core/ViewResponseFilter.java +++ b/core/src/main/java/org/eclipse/krazo/core/ViewResponseFilter.java @@ -28,7 +28,6 @@ import static org.eclipse.krazo.util.PathUtils.noPrefix; import static org.eclipse.krazo.util.PathUtils.noStartingSlash; -import java.io.IOException; import java.lang.reflect.Method; import java.net.URI; import java.util.Arrays; @@ -37,6 +36,11 @@ import java.util.logging.Logger; import java.util.stream.Collectors; +import org.eclipse.krazo.KrazoConfig; +import org.eclipse.krazo.engine.Viewable; +import org.eclipse.krazo.event.ControllerRedirectEventImpl; +import org.eclipse.krazo.lifecycle.RequestLifecycle; + import jakarta.annotation.Priority; import jakarta.enterprise.event.Event; import jakarta.inject.Inject; @@ -60,11 +64,6 @@ import jakarta.ws.rs.core.UriInfo; import jakarta.ws.rs.core.Variant; -import org.eclipse.krazo.KrazoConfig; -import org.eclipse.krazo.engine.Viewable; -import org.eclipse.krazo.event.ControllerRedirectEventImpl; -import org.eclipse.krazo.lifecycle.RequestLifecycle; - /** *

A JAX-RS response filter that fires a {@link jakarta.mvc.event.AfterControllerEvent} * event. It also verifies the static return type of the controller method is correct, @@ -155,7 +154,6 @@ public void filter(ContainerRequestContext requestContext, // If the entity is null the status will be set to 204 by Jersey. For void methods we need to // set the status to 200 unless no other status was set by e.g. throwing an Exception. - // Don't use equals() on the result of getStatusInfo(), because it doesn't work on CXF if (responseContext.getStatusInfo().getStatusCode() == Response.Status.NO_CONTENT.getStatusCode()) { responseContext.setStatusInfo(Response.Status.OK); } diff --git a/core/src/main/java/org/eclipse/krazo/jaxrs/PostMatchingRequestFilter.java b/core/src/main/java/org/eclipse/krazo/jaxrs/PostMatchingRequestFilter.java index 312574e6..25ad1626 100644 --- a/core/src/main/java/org/eclipse/krazo/jaxrs/PostMatchingRequestFilter.java +++ b/core/src/main/java/org/eclipse/krazo/jaxrs/PostMatchingRequestFilter.java @@ -17,8 +17,6 @@ */ package org.eclipse.krazo.jaxrs; -import org.eclipse.krazo.util.CdiUtils; - import jakarta.annotation.Priority; import jakarta.mvc.Controller; import jakarta.servlet.http.HttpServletRequest; @@ -30,7 +28,6 @@ import jakarta.ws.rs.core.Configuration; import jakarta.ws.rs.core.Context; import jakarta.ws.rs.core.UriInfo; -import java.io.IOException; /** * Post-Matching ContainerRequestFilter @@ -59,16 +56,12 @@ public class PostMatchingRequestFilter implements ContainerRequestFilter { @Context private ResourceInfo resourceInfo; + @Context + private JaxRsContextProducer contextProducer; + @Override public void filter(ContainerRequestContext requestContext) { - /* - * Please note that we CANNOT inject JaxRsContextProducer here, because this will - * fail on TomEE/CXF/OWB because processing @Context fails for some reason. - */ - JaxRsContextProducer contextProducer = CdiUtils.getApplicationBean(JaxRsContextProducer.class) - .orElseThrow(() -> new IllegalStateException("Cannot find CDI managed JaxRsContextProducer")); - // store JAX-RS context objects so we can produce them via CDI contextProducer.setConfiguration(configuration); contextProducer.setRequest(request); diff --git a/core/src/main/java/org/eclipse/krazo/jaxrs/PreMatchingRequestFilter.java b/core/src/main/java/org/eclipse/krazo/jaxrs/PreMatchingRequestFilter.java index 5a32ee52..6c2a677d 100644 --- a/core/src/main/java/org/eclipse/krazo/jaxrs/PreMatchingRequestFilter.java +++ b/core/src/main/java/org/eclipse/krazo/jaxrs/PreMatchingRequestFilter.java @@ -56,16 +56,12 @@ public class PreMatchingRequestFilter implements ContainerRequestFilter { @Context private UriInfo uriInfo; + @Context + private JaxRsContextProducer contextProducer; + @Override public void filter(ContainerRequestContext requestContext) { - /* - * Please note that we CANNOT inject JaxRsContextProducer here, because this will - * fail on TomEE/CXF/OWB because processing @Context fails for some reason. - */ - JaxRsContextProducer contextProducer = CdiUtils.getApplicationBean(JaxRsContextProducer.class) - .orElseThrow(() -> new IllegalStateException("Cannot find CDI managed JaxRsContextProducer")); - // store JAX-RS context objects so we can produce them via CDI contextProducer.setConfiguration(configuration); contextProducer.setRequest(request); diff --git a/core/src/main/java/org/eclipse/krazo/util/ServiceLoaders.java b/core/src/main/java/org/eclipse/krazo/util/ServiceLoaders.java index e80676cf..56c3f036 100644 --- a/core/src/main/java/org/eclipse/krazo/util/ServiceLoaders.java +++ b/core/src/main/java/org/eclipse/krazo/util/ServiceLoaders.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2019 Eclipse Krazo committers and contributors + * Copyright (c) 2018, 2021 Eclipse Krazo committers and contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,15 +17,14 @@ */ package org.eclipse.krazo.util; -import org.eclipse.krazo.bootstrap.ConfigProvider; - -import jakarta.annotation.Priority; import java.util.Comparator; import java.util.List; import java.util.ServiceLoader; import java.util.stream.Collectors; import java.util.stream.StreamSupport; +import jakarta.annotation.Priority; + /** * Utility code for the {@link ServiceLoader} class. * @@ -42,15 +41,6 @@ public static List list(Class type) { // classloader to use for ServiceLoader lookups ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - /* - * Special workaround for TomEE . The context classloader is an instance of CxfContainerClassLoader - * and NOT the TomEEWebappClassLoader, which seems to break when redeploying apps into a running - * container for some reason. - */ - if (classLoader.getClass().getName().contains("CxfContainerClassLoader")) { - classLoader = ConfigProvider.class.getClassLoader(); - } - // return the SPI implementations as a list return StreamSupport.stream(ServiceLoader.load(type, classLoader).spliterator(), false) .sorted(new PriorityComparator()) @@ -76,6 +66,4 @@ private int getPriority(Object o) { } } } - - }