Search in sources :

Example 1 with ServletController

use of org.apache.cxf.transport.servlet.ServletController in project BIMserver by opensourceBIM.

the class GenericWebServiceServlet method createServletController.

private ServletController createServletController(ServletConfig servletConfig) {
    HttpServlet serviceListGeneratorServlet = new ServiceListGeneratorServlet(destinationRegistry, bus);
    ServletController newController = new ServletController(destinationRegistry, servletConfig, serviceListGeneratorServlet);
    return newController;
}
Also used : HttpServlet(javax.servlet.http.HttpServlet) ServiceListGeneratorServlet(org.apache.cxf.transport.servlet.servicelist.ServiceListGeneratorServlet) ServletController(org.apache.cxf.transport.servlet.ServletController)

Example 2 with ServletController

use of org.apache.cxf.transport.servlet.ServletController 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

ServletController (org.apache.cxf.transport.servlet.ServletController)2 ServiceListGeneratorServlet (org.apache.cxf.transport.servlet.servicelist.ServiceListGeneratorServlet)2 BufferedReader (java.io.BufferedReader)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 InputStreamReader (java.io.InputStreamReader)1 OutputStream (java.io.OutputStream)1 PrintWriter (java.io.PrintWriter)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 ByteBuffer (java.nio.ByteBuffer)1 StandardCharsets (java.nio.charset.StandardCharsets)1 Principal (java.security.Principal)1 SimpleDateFormat (java.text.SimpleDateFormat)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 Collections.emptyEnumeration (java.util.Collections.emptyEnumeration)1 Collections.emptyList (java.util.Collections.emptyList)1 Collections.emptyMap (java.util.Collections.emptyMap)1 Collections.emptySet (java.util.Collections.emptySet)1