Search in sources :

Example 11 with JAXRSServiceFactoryBean

use of org.apache.cxf.jaxrs.JAXRSServiceFactoryBean in project cxf by apache.

the class JAXRSUtilsTest method testFindTargetResourceClass.

@Test
public void testFindTargetResourceClass() throws Exception {
    JAXRSServiceFactoryBean sf = new JAXRSServiceFactoryBean();
    sf.setResourceClasses(org.apache.cxf.jaxrs.resources.BookStoreNoSubResource.class);
    sf.create();
    List<ClassResourceInfo> resources = ((JAXRSServiceImpl) sf.getService()).getClassResourceInfos();
    String contentTypes = "*/*";
    // If acceptContentTypes does not specify a specific Mime type, the
    // method is declared with a most specific ProduceMime type is selected.
    OperationResourceInfo ori = findTargetResourceClass(resources, createMessage2(), "/bookstore/1/books/123/", "GET", new MetadataMap<String, String>(), contentTypes, getTypes("application/json,application/xml;q=0.9"));
    assertNotNull(ori);
    assertEquals("getBookJSON", ori.getMethodToInvoke().getName());
    // test
    ori = findTargetResourceClass(resources, createMessage2(), "/bookstore/1/books/123", "GET", new MetadataMap<String, String>(), contentTypes, getTypes("application/json"));
    assertNotNull(ori);
    assertEquals("getBookJSON", ori.getMethodToInvoke().getName());
    // test
    ori = findTargetResourceClass(resources, createMessage2(), "/bookstore/1/books/123", "GET", new MetadataMap<String, String>(), contentTypes, getTypes("application/xml"));
    assertNotNull(ori);
    assertEquals("getBook", ori.getMethodToInvoke().getName());
    // test
    ori = findTargetResourceClass(resources, createMessage2(), "/bookstore/1/books", "GET", new MetadataMap<String, String>(), contentTypes, getTypes("application/xml"));
    assertNotNull(ori);
    assertEquals("getBooks", ori.getMethodToInvoke().getName());
    // test find POST
    ori = findTargetResourceClass(resources, createMessage2(), "/bookstore/1/books", "POST", new MetadataMap<String, String>(), contentTypes, getTypes("application/xml"));
    assertNotNull(ori);
    assertEquals("addBook", ori.getMethodToInvoke().getName());
    // test find PUT
    ori = findTargetResourceClass(resources, createMessage2(), "/bookstore/1/books", "PUT", new MetadataMap<String, String>(), contentTypes, getTypes("application/xml"));
    assertEquals("updateBook", ori.getMethodToInvoke().getName());
    // test find DELETE
    ori = findTargetResourceClass(resources, createMessage2(), "/bookstore/1/books/123", "DELETE", new MetadataMap<String, String>(), contentTypes, getTypes("application/xml"));
    assertNotNull(ori);
    assertEquals("deleteBook", ori.getMethodToInvoke().getName());
}
Also used : JAXRSServiceFactoryBean(org.apache.cxf.jaxrs.JAXRSServiceFactoryBean) JAXRSServiceImpl(org.apache.cxf.jaxrs.JAXRSServiceImpl) MetadataMap(org.apache.cxf.jaxrs.impl.MetadataMap) ClassResourceInfo(org.apache.cxf.jaxrs.model.ClassResourceInfo) OperationResourceInfo(org.apache.cxf.jaxrs.model.OperationResourceInfo) Test(org.junit.Test)

Example 12 with JAXRSServiceFactoryBean

use of org.apache.cxf.jaxrs.JAXRSServiceFactoryBean in project fabric8 by jboss-fuse.

the class ManagedApi method getRESTResourceTypes.

private Set<Class<?>> getRESTResourceTypes() {
    JAXRSServiceFactoryBean serviceFactory = (JAXRSServiceFactoryBean) endpoint.get(JAXRSServiceFactoryBean.class.getName());
    List<ClassResourceInfo> list = serviceFactory.getClassResourceInfo();
    return ResourceUtils.getAllRequestResponseTypes(list, false).getAllTypes().keySet();
}
Also used : JAXRSServiceFactoryBean(org.apache.cxf.jaxrs.JAXRSServiceFactoryBean) ClassResourceInfo(org.apache.cxf.jaxrs.model.ClassResourceInfo)

Example 13 with JAXRSServiceFactoryBean

use of org.apache.cxf.jaxrs.JAXRSServiceFactoryBean in project fabric8 by fabric8io.

the class ManagedApi method getRESTResourceTypes.

private Set<Class<?>> getRESTResourceTypes() {
    JAXRSServiceFactoryBean serviceFactory = (JAXRSServiceFactoryBean) endpoint.get(JAXRSServiceFactoryBean.class.getName());
    List<ClassResourceInfo> list = serviceFactory.getClassResourceInfo();
    return ResourceUtils.getAllRequestResponseTypes(list, false).getAllTypes().keySet();
}
Also used : JAXRSServiceFactoryBean(org.apache.cxf.jaxrs.JAXRSServiceFactoryBean) ClassResourceInfo(org.apache.cxf.jaxrs.model.ClassResourceInfo)

Example 14 with JAXRSServiceFactoryBean

use of org.apache.cxf.jaxrs.JAXRSServiceFactoryBean in project component-runtime by Talend.

the class WebSocketBroadcastSetup method contextInitialized.

@Override
public void contextInitialized(final ServletContextEvent sce) {
    final ServerContainer container = ServerContainer.class.cast(sce.getServletContext().getAttribute(ServerContainer.class.getName()));
    final JAXRSServiceFactoryBean factory = JAXRSServiceFactoryBean.class.cast(bus.getExtension(ServerRegistry.class).getServers().iterator().next().getEndpoint().get(JAXRSServiceFactoryBean.class.getName()));
    final String appBase = StreamSupport.stream(Spliterators.spliteratorUnknownSize(applications.iterator(), Spliterator.IMMUTABLE), false).filter(a -> a.getClass().isAnnotationPresent(ApplicationPath.class)).map(a -> a.getClass().getAnnotation(ApplicationPath.class)).map(ApplicationPath::value).findFirst().map(s -> !s.startsWith("/") ? "/" + s : s).orElse("/api/v1");
    final String version = appBase.replaceFirst("/api", "");
    final DestinationRegistry registry;
    try {
        final HTTPTransportFactory transportFactory = HTTPTransportFactory.class.cast(bus.getExtension(DestinationFactoryManager.class).getDestinationFactory("http://cxf.apache.org/transports/http" + "/configuration"));
        registry = transportFactory.getRegistry();
    } catch (final BusException e) {
        throw new IllegalStateException(e);
    }
    final ServletContext servletContext = sce.getServletContext();
    final WebSocketRegistry webSocketRegistry = new WebSocketRegistry(registry);
    final ServletController controller = new ServletController(webSocketRegistry, new ServletConfig() {

        @Override
        public String getServletName() {
            return "Talend Component Kit Websocket Transport";
        }

        @Override
        public ServletContext getServletContext() {
            return servletContext;
        }

        @Override
        public String getInitParameter(final String s) {
            return null;
        }

        @Override
        public Enumeration<String> getInitParameterNames() {
            return emptyEnumeration();
        }
    }, new ServiceListGeneratorServlet(registry, bus));
    webSocketRegistry.controller = controller;
    Stream.concat(factory.getClassResourceInfo().stream().flatMap(cri -> cri.getMethodDispatcher().getOperationResourceInfos().stream()).map(ori -> {
        final String uri = ori.getClassResourceInfo().getURITemplate().getValue() + ori.getURITemplate().getValue();
        return ServerEndpointConfig.Builder.create(Endpoint.class, "/websocket" + version + "/" + String.valueOf(ori.getHttpMethod()).toLowerCase(ENGLISH) + uri).configurator(new ServerEndpointConfig.Configurator() {

            @Override
            public <T> T getEndpointInstance(final Class<T> clazz) throws InstantiationException {
                final Map<String, List<String>> headers = new HashMap<>();
                if (!ori.getProduceTypes().isEmpty()) {
                    headers.put(HttpHeaders.CONTENT_TYPE, singletonList(ori.getProduceTypes().iterator().next().toString()));
                }
                if (!ori.getConsumeTypes().isEmpty()) {
                    headers.put(HttpHeaders.ACCEPT, singletonList(ori.getConsumeTypes().iterator().next().toString()));
                }
                return (T) new JAXRSEndpoint(appBase, controller, servletContext, ori.getHttpMethod(), uri, headers);
            }
        }).build();
    }), Stream.of(ServerEndpointConfig.Builder.create(Endpoint.class, "/websocket" + version + "/bus").configurator(new ServerEndpointConfig.Configurator() {

        @Override
        public <T> T getEndpointInstance(final Class<T> clazz) throws InstantiationException {
            return (T) new JAXRSEndpoint(appBase, controller, servletContext, "GET", "/", emptyMap());
        }
    }).build())).sorted(Comparator.comparing(ServerEndpointConfig::getPath)).peek(e -> log.info("Deploying WebSocket(path={})", e.getPath())).forEach(config -> {
        try {
            container.addEndpoint(config);
        } catch (final DeploymentException e) {
            throw new IllegalStateException(e);
        }
    });
}
Also used : Enumeration(java.util.Enumeration) Collections.singletonList(java.util.Collections.singletonList) Endpoint(javax.websocket.Endpoint) Map(java.util.Map) AbstractDestination(org.apache.cxf.transport.AbstractDestination) ENGLISH(java.util.Locale.ENGLISH) Instance(javax.enterprise.inject.Instance) PrintWriter(java.io.PrintWriter) RequestDispatcher(javax.servlet.RequestDispatcher) Set(java.util.Set) FastHttpDateFormat(org.apache.tomcat.util.http.FastHttpDateFormat) StandardCharsets(java.nio.charset.StandardCharsets) WebListener(javax.servlet.annotation.WebListener) Slf4j(lombok.extern.slf4j.Slf4j) Stream(java.util.stream.Stream) MessageObserver(org.apache.cxf.transport.MessageObserver) DestinationFactoryManager(org.apache.cxf.transport.DestinationFactoryManager) QName(javax.xml.namespace.QName) ServerRegistry(org.apache.cxf.endpoint.ServerRegistry) HTTPSession(org.apache.cxf.transport.http.HTTPSession) ByteArrayOutputStream(java.io.ByteArrayOutputStream) CloseReason(javax.websocket.CloseReason) SimpleDateFormat(java.text.SimpleDateFormat) Supplier(java.util.function.Supplier) ArrayList(java.util.ArrayList) AsyncContext(javax.servlet.AsyncContext) HttpServletRequest(javax.servlet.http.HttpServletRequest) LogUtils(org.apache.cxf.common.logging.LogUtils) WriteListener(javax.servlet.WriteListener) ContinuationProviderFactory(org.apache.cxf.transport.http.ContinuationProviderFactory) StreamSupport(java.util.stream.StreamSupport) EndpointInfo(org.apache.cxf.service.model.EndpointInfo) ServiceListGeneratorServlet(org.apache.cxf.transport.servlet.servicelist.ServiceListGeneratorServlet) IOException(java.io.IOException) InputStreamReader(java.io.InputStreamReader) TreeMap(java.util.TreeMap) Dependent(javax.enterprise.context.Dependent) ServletContext(javax.servlet.ServletContext) DestinationRegistry(org.apache.cxf.transport.http.DestinationRegistry) BufferedReader(java.io.BufferedReader) HTTPTransportFactory(org.apache.cxf.transport.http.HTTPTransportFactory) Conduit(org.apache.cxf.transport.Conduit) ServletException(javax.servlet.ServletException) Spliterators(java.util.Spliterators) Application(javax.ws.rs.core.Application) ByteBuffer(java.nio.ByteBuffer) Collections.singleton(java.util.Collections.singleton) Locale(java.util.Locale) ServletContextListener(javax.servlet.ServletContextListener) ServerEndpointConfig(javax.websocket.server.ServerEndpointConfig) HttpSession(javax.servlet.http.HttpSession) ServletConfig(javax.servlet.ServletConfig) Session(javax.websocket.Session) Collections.emptyList(java.util.Collections.emptyList) HTTPServerPolicy(org.apache.cxf.transports.http.configuration.HTTPServerPolicy) Collection(java.util.Collection) BusException(org.apache.cxf.BusException) ExchangeImpl(org.apache.cxf.message.ExchangeImpl) Collections.enumeration(java.util.Collections.enumeration) Logger(java.util.logging.Logger) Collectors(java.util.stream.Collectors) Collections.emptyEnumeration(java.util.Collections.emptyEnumeration) List(java.util.List) Principal(java.security.Principal) HttpHeaders(javax.ws.rs.core.HttpHeaders) ServletContextEvent(javax.servlet.ServletContextEvent) ServletResponse(javax.servlet.ServletResponse) ServerContainer(javax.websocket.server.ServerContainer) UnsupportedEncodingException(java.io.UnsupportedEncodingException) Spliterator(java.util.Spliterator) JAXRSServiceFactoryBean(org.apache.cxf.jaxrs.JAXRSServiceFactoryBean) Bus(org.apache.cxf.Bus) MessageImpl(org.apache.cxf.message.MessageImpl) ServletDestination(org.apache.cxf.transport.servlet.ServletDestination) EndpointReferenceType(org.apache.cxf.ws.addressing.EndpointReferenceType) ServletInputStream(javax.servlet.ServletInputStream) HashMap(java.util.HashMap) DeploymentException(javax.websocket.DeploymentException) Inject(javax.inject.Inject) HttpUpgradeHandler(javax.servlet.http.HttpUpgradeHandler) Continuation(org.apache.cxf.continuations.Continuation) AbstractHTTPDestination(org.apache.cxf.transport.http.AbstractHTTPDestination) ConnectionSecurityProvider(org.talend.sdk.component.server.front.security.ConnectionSecurityProvider) ServletOutputStream(javax.servlet.ServletOutputStream) Cookie(javax.servlet.http.Cookie) OutputStream(java.io.OutputStream) Collections.emptyMap(java.util.Collections.emptyMap) ContinuationProvider(org.apache.cxf.continuations.ContinuationProvider) ServletRequest(javax.servlet.ServletRequest) RemoteEndpoint(javax.websocket.RemoteEndpoint) Collections.emptySet(java.util.Collections.emptySet) ContinuationCallback(org.apache.cxf.continuations.ContinuationCallback) Message(org.apache.cxf.message.Message) EndpointConfig(javax.websocket.EndpointConfig) HttpServletResponse(javax.servlet.http.HttpServletResponse) ApplicationPath(javax.ws.rs.ApplicationPath) Part(javax.servlet.http.Part) ReadListener(javax.servlet.ReadListener) Data(lombok.Data) DispatcherType(javax.servlet.DispatcherType) Comparator(java.util.Comparator) InputStream(java.io.InputStream) ServletController(org.apache.cxf.transport.servlet.ServletController) HashMap(java.util.HashMap) ApplicationPath(javax.ws.rs.ApplicationPath) JAXRSServiceFactoryBean(org.apache.cxf.jaxrs.JAXRSServiceFactoryBean) Endpoint(javax.websocket.Endpoint) RemoteEndpoint(javax.websocket.RemoteEndpoint) ServletContext(javax.servlet.ServletContext) Collections.singletonList(java.util.Collections.singletonList) ArrayList(java.util.ArrayList) Collections.emptyList(java.util.Collections.emptyList) List(java.util.List) BusException(org.apache.cxf.BusException) ServerContainer(javax.websocket.server.ServerContainer) DestinationRegistry(org.apache.cxf.transport.http.DestinationRegistry) Enumeration(java.util.Enumeration) Collections.emptyEnumeration(java.util.Collections.emptyEnumeration) ServerEndpointConfig(javax.websocket.server.ServerEndpointConfig) HTTPTransportFactory(org.apache.cxf.transport.http.HTTPTransportFactory) ServletConfig(javax.servlet.ServletConfig) ServiceListGeneratorServlet(org.apache.cxf.transport.servlet.servicelist.ServiceListGeneratorServlet) DeploymentException(javax.websocket.DeploymentException) ServletController(org.apache.cxf.transport.servlet.ServletController)

Aggregations

JAXRSServiceFactoryBean (org.apache.cxf.jaxrs.JAXRSServiceFactoryBean)14 ClassResourceInfo (org.apache.cxf.jaxrs.model.ClassResourceInfo)10 JAXRSServiceImpl (org.apache.cxf.jaxrs.JAXRSServiceImpl)6 Test (org.junit.Test)6 ArrayList (java.util.ArrayList)3 Application (javax.ws.rs.core.Application)3 MetadataMap (org.apache.cxf.jaxrs.impl.MetadataMap)3 OperationResourceInfo (org.apache.cxf.jaxrs.model.OperationResourceInfo)3 Method (java.lang.reflect.Method)2 HashSet (java.util.HashSet)2 Message (org.apache.camel.Message)2 CookieHandler (org.apache.camel.http.common.cookie.CookieHandler)2 Bus (org.apache.cxf.Bus)2 Client (org.apache.cxf.jaxrs.client.Client)2 JAXRSClientFactoryBean (org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean)2 WebClient (org.apache.cxf.jaxrs.client.WebClient)2 BeanConfig (io.swagger.jaxrs.config.BeanConfig)1 ApiListingResource (io.swagger.jaxrs.listing.ApiListingResource)1 Swagger (io.swagger.models.Swagger)1 OpenApiConfigurationException (io.swagger.v3.oas.integration.OpenApiConfigurationException)1