java类javax.ws.rs.ext.Provider的实例源码

OryxApplication.java 文件源码 项目:oryx2 阅读 19 收藏 0 点赞 0 评论 0
private Set<Class<?>> doGetClasses() {
  String packages =
      servletContext.getInitParameter(OryxApplication.class.getName() + ".packages");
  log.info("Creating JAX-RS from endpoints in package(s) {}", packages);
  Objects.requireNonNull(packages);
  Set<Class<?>> classes = new HashSet<>();
  for (String thePackage : packages.split(",")) {
    Reflections reflections = new Reflections(thePackage);
    classes.addAll(getClassesInPackageAnnotatedBy(thePackage, reflections, Path.class));
    classes.addAll(getClassesInPackageAnnotatedBy(thePackage, reflections, Produces.class));
    classes.addAll(getClassesInPackageAnnotatedBy(thePackage, reflections, Provider.class));
  }
  // Want to configure these globally, but not depend on Jersey, even though it's
  // what will be used in practice by the provided apps.
  for (String optionalJerseyClass : new String[] {
        "org.glassfish.jersey.message.DeflateEncoder",
        "org.glassfish.jersey.message.GZipEncoder",
        "org.glassfish.jersey.server.filter.EncodingFilter"}) {
    if (ClassUtils.classExists(optionalJerseyClass)) {
      classes.add(ClassUtils.loadClass(optionalJerseyClass));
    }
  }
  log.debug("Found JAX-RS resources: {}", classes);
  return classes;
}
FCSPlugin.java 文件源码 项目:redpipe 阅读 29 收藏 0 点赞 0 评论 0
@Override
public Single<Void> deployToResteasy(VertxResteasyDeployment deployment) {
    JsonArray packages = AppGlobals.get().getConfig().getJsonArray("scan");
    if(packages == null) {
        System.err.println("Not scanning any packages, please specify the 'scan' array of packages in configuration");
    }else {
        String[] packagesToScan = (String[]) packages.getList().toArray(new String[packages.size()+1]);
        packagesToScan[packagesToScan.length-1] = "net.redpipe.engine";
        new FastClasspathScanner(packagesToScan)
            .matchClassesWithAnnotation(Path.class, klass -> {
                if(!Modifier.isAbstract(klass.getModifiers()))
                    deployment.getActualResourceClasses().add(klass);
            })
            .matchClassesWithAnnotation(Provider.class, klass -> {
                if(!Modifier.isAbstract(klass.getModifiers()))
                    deployment.getActualProviderClasses().add(klass);
            })
            .scan();
    }
    return Single.just(null);
}
Server.java 文件源码 项目:redpipe 阅读 30 收藏 0 点赞 0 评论 0
protected Single<VertxResteasyDeployment> setupResteasy(Class<?>... resourceOrProviderClasses) {
    // Build the Jax-RS hello world deployment
    VertxResteasyDeployment deployment = new VertxResteasyDeployment();
    deployment.getDefaultContextObjects().put(Vertx.class, AppGlobals.get().getVertx());
    deployment.getDefaultContextObjects().put(AppGlobals.class, AppGlobals.get());

    return doOnPlugins(plugin -> plugin.deployToResteasy(deployment)).map(v -> {
        for(Class<?> klass : resourceOrProviderClasses) {
            if(klass.isAnnotationPresent(Path.class))
                deployment.getActualResourceClasses().add(klass);
            if(klass.isAnnotationPresent(Provider.class))
                deployment.getActualProviderClasses().add(klass);
        }
        try {
            deployment.start();
        }catch(ExceptionInInitializerError err) {
            // rxjava behaves badly on LinkageError
            rethrow(err.getCause());
        }
        return deployment;
    }).doOnError(t -> t.printStackTrace());
}
JerseyResourcesPostProcessor.java 文件源码 项目:holon-jaxrs 阅读 27 收藏 0 点赞 0 评论 0
/**
 * Check whether given bean definition is a valid {@link Provider} or {@link Path} resource.
 * @param definition Bean definition
 * @param beanClass Bean class
 * @return <code>true</code> if it is a valid JAX-RS resource class
 */
private static boolean isJaxrsResourceClass(BeanDefinition definition, Class<?> beanClass) {
    // check Provider
    if (beanClass.isAnnotationPresent(Provider.class)) {
        if (!definition.isSingleton()) {
            throw new BeanDefinitionValidationException("Invalid JAX-RS @Provider bean definition for bean class ["
                    + beanClass + "]: JAX-RS providers must be singleton beans");
        }
        return true;
    }
    // check Path resource
    Class<?> pathClass = AnnotationUtils.getClassWithAnnotation(beanClass, Path.class);
    if (pathClass != null) {
        return true;
    }
    return false;
}
ServiceConfig.java 文件源码 项目:oasp-tutorial-sources 阅读 24 收藏 0 点赞 0 评论 0
@Bean
public Server jaxRsServer() {

  // List<Object> restServiceBeans = new
  // ArrayList<>(this.applicationContext.getBeansOfType(RestService.class).values());
  Collection<Object> restServices = findRestServices();
  if (restServices.isEmpty()) {
    LOG.info("No REST Services have been found. Rest Endpoint will not be enabled in CXF.");
    return null;
  }
  Collection<Object> providers = this.applicationContext.getBeansWithAnnotation(Provider.class).values();

  JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();
  factory.setBus(springBus());
  factory.setAddress(URL_FOLDER_REST);
  // factory.set
  factory.setServiceBeans(new ArrayList<>(restServices));
  factory.setProviders(new ArrayList<>(providers));

  return factory.create();
}
CocoRestServer.java 文件源码 项目:coco 阅读 23 收藏 0 点赞 0 评论 0
public void start() {

        ResteasyDeployment dp = new ResteasyDeployment();

        Collection<Object> providers = ac.getBeansWithAnnotation(Provider.class).values();
        Collection<Object> controllers = ac.getBeansWithAnnotation(Controller.class).values();

        Assert.notEmpty(controllers);

        // extract providers
        if (providers != null) {
            dp.getProviders().addAll(providers);
        }
        // extract only controller annotated beans
        dp.getResources().addAll(controllers);

        netty = new NettyJaxrsServer();
        netty.setDeployment(dp);
        netty.setIoWorkerCount(ioWorkerCount);
        netty.setExecutorThreadCount(executorThreadCount);
        netty.setPort(port);
        netty.setRootResourcePath(rootResourcePath);
        netty.setSecurityDomain(null);
        netty.start();
        LOGGER.info("rest-netty-server started , port {}", port);
    }
RestResourceConfig.java 文件源码 项目:Cheddar 阅读 21 收藏 0 点赞 0 评论 0
@Autowired
public RestResourceConfig(final ApplicationContext applicationContext) {
    property("contextConfig", applicationContext);
    scanner = new ClassPathScanningCandidateComponentProvider(true);
    scanner.resetFilters(false);
    scanner.addIncludeFilter(new AnnotationTypeFilter(Path.class));
    scanner.addIncludeFilter(new AnnotationTypeFilter(Provider.class));
    register(RequestContextFilter.class);
    register(MultiPartFeature.class);
    register(ObjectMapperProvider.class);
    register(JacksonFeature.class);
    registerResources("com.clicktravel.cheddar.rest.exception.mapper", "com.clicktravel.cheddar.server.http.filter",
            "com.clicktravel.cheddar.server.rest.resource.status", "com.clicktravel.services",
            "com.clicktravel.cheddar.rest.body.writer");
    property(ServerProperties.LOCATION_HEADER_RELATIVE_URI_RESOLUTION_DISABLED, true);
}
RestApplication.java 文件源码 项目:LICPRO-Android-Server-FileBox 阅读 27 收藏 0 点赞 0 评论 0
/**
 * Default constructor
 */
public RestApplication() {
    List<Class<?>> classes = CPScanner.scanClasses(new ClassFilter().packageName("fr.devnied.filebox.*").annotation(Provider.class));
    for (Class<?> clazz : classes) {
        try {
            Object obj = null;
            try {
                obj = SpringContextHolder.getApplicationContext().getBean(clazz);
            } catch (BeansException e) {
                // do nothing
            }
            if (obj == null) {
                obj = clazz.newInstance();
            }
            singletons.add(obj);
        } catch (InstantiationException | IllegalAccessException ex) {
            Logger.getLogger(RestApplication.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}
BootstrapRestPackagesModule.java 文件源码 项目:shiro-guice-async-webapp 阅读 26 收藏 0 点赞 0 评论 0
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
protected void configure() {
    logger.entry();
    String[] pkgs = GenericBootstrapConstants.REST_EASY_REST_PACKAGES.split(",");

    for(String pkg:pkgs){
        //if(pkg.trim().endsWith(GenericBootstrapConstants.REST_EASY_REST_PACKAGES_SUFFIX)){
            logger.info("found RESTful package: {}",pkg.trim());
            Class[] lst = null;
            try {
                lst = getClasses(pkg.trim());
            } catch (ClassNotFoundException | IOException e) {
                logger.error("{}, {}", e.getClass().getName() ,e.getMessage());
                e.printStackTrace();
            }
            for (Class c: lst){
                if(c.isAnnotationPresent(Path.class) || c.isAnnotationPresent(Provider.class)){
                    logger.info("found RestEasy Resource: {}",c.getName());
                    bind(c);
                }
            }
        //}
    }
    logger.exit();
}
GitServerModule.java 文件源码 项目:git-server 阅读 26 收藏 0 点赞 0 评论 0
@Override
protected void configure() {
    install(new RequestScopeModule());
    install(new JaxrsModule());
    requireBinding(ObjectMapper.class);

    findResourcesWith(Path.class);
    findResourcesWith(Provider.class);

    bind(BaseApi.class).to(BaseApiImpl.class);
    bind(UsersApi.class).to(UsersApiImpl.class);
    bind(GroupsApi.class).to(GroupsApiImpl.class);
    bind(RepositoriesApi.class).to(RepositoriesApiImpl.class);
    bind(RepositoryFacadeFactory.class).to(JGitRepositoryFacadeFactory.class);

    bindSubResourceFactory(GroupApi.class, GroupApiImpl.class, GroupApiFactory.class);
    bindSubResourceFactory(CommitApi.class, CommitApiImpl.class, CommitApiFactory.class);
    bindSubResourceFactory(BranchApi.class, BranchApiImpl.class, BranchApiFactory.class);
    bindSubResourceFactory(RepositoryApi.class, RepositoryApiImpl.class, RepositoryApiFactory.class);

    bind(Config.class).toInstance(config);
}
GuiceRestEasyFilterDispatcher.java 文件源码 项目:shiro-guice-resteasy-webapp 阅读 24 收藏 0 点赞 0 评论 0
@Override
public void init(FilterConfig servletConfig) throws ServletException {
    super.init(servletConfig);

    Registry registry = getDispatcher().getRegistry();
    ResteasyProviderFactory providerFactory = getDispatcher().getProviderFactory();

    for (final Binding<?> binding : injector.getBindings().values()) {
        Type type = binding.getKey().getTypeLiteral().getType();
        if (type instanceof Class) {
            Class<?> beanClass = (Class<?>) type;
            if (GetRestful.isRootResource(beanClass)) {
                ResourceFactory resourceFactory = new GuiceResourceFactory(binding.getProvider(), beanClass);
                log.info("registering factory for {}", beanClass.getName());
                registry.addResourceFactory(resourceFactory);
            }

            if (beanClass.isAnnotationPresent(Provider.class)) {
                log.info("registering provider instance for {}", beanClass.getName());
                providerFactory.registerProviderInstance(binding.getProvider().get());
            }
        }
    }
}
CXFServerBootstrap.java 文件源码 项目:camunda-bpm-platform 阅读 21 收藏 0 点赞 0 评论 0
private void separateProvidersAndResources(Application application, List<Class<?>> resourceClasses, List<Object> providerInstances) {
  Set<Class<?>> classes = application.getClasses();

  for (Class<?> clazz : classes) {
    Annotation[] annotations = clazz.getAnnotations();
    for (Annotation annotation : annotations) {
      if (annotation.annotationType().equals(Provider.class)) {
        // for providers we have to create an instance
        try {
          providerInstances.add(clazz.newInstance());
          break;
        } catch (Exception e) {
          throw new RuntimeException(e);
        }
      } else if (annotation.annotationType().equals(Path.class)) {
        resourceClasses.add(clazz);
        break;
      }
    }
  }
}
ComponentTestCase.java 文件源码 项目:Mastering-Java-EE-Development-with-WildFly 阅读 27 收藏 0 点赞 0 评论 0
@Test
public void testConfiguration() throws Exception {
    logger.info("start REST Configuration test");
    Client client = newClient();
    Configuration configuration = client.getConfiguration();
    Set<Class<?>> classes = configuration.getClasses();
    for (Class<?> clazz : classes) {
        assertTrue("verify if the class is a rest component or provider",
                MessageBodyReader.class.isAssignableFrom(clazz) || MessageBodyWriter.class.isAssignableFrom(clazz)
                        || clazz.isAnnotationPresent(Provider.class)
                        || DynamicFeature.class.isAssignableFrom(clazz));
        Map<Class<?>, Integer> contracts = configuration.getContracts(clazz);
        assertFalse("each class has different contracts", contracts.isEmpty());
        for (Class<?> contract : contracts.keySet()) {
            int value = contracts.get(contract);
            assertTrue("verify if the contract is a rest component or provider",
                    value == 5000 || value == 4000 || value == 3000 || value == 0);
        }
    }
    Set<Object> instances = configuration.getInstances();
    assertTrue("by default there are not instances", instances.isEmpty());
    Map<String, Object> properties = configuration.getProperties();
    assertTrue("by default there are not properties", properties.isEmpty());
    MyComponent myComponent = new MyComponent();
    client.register(myComponent);
    instances = configuration.getInstances();
    assertFalse("Added instance", instances.isEmpty());
    for (Object instance : instances) {
        if (instance instanceof MyComponent)
            assertTrue("MyComponent is registered and active", configuration.isEnabled((Feature) instance));
    }
    assertEquals("Added property through MyComponent", 1, properties.size());
    boolean property = (Boolean) properties.get("configured_myComponent");
    assertEquals("configured_myComponent ok!", true, property);
    assertEquals("type CLIENT by default", CLIENT, configuration.getRuntimeType());
}
RestModule.java 文件源码 项目:act-platform 阅读 27 收藏 0 点赞 0 评论 0
@Override
protected void configure() {
  bindAnnotatedClasses(API_PACKAGE, Path.class);
  bindAnnotatedClasses(MAPPINGS_PACKAGE, Provider.class);
  bindSwagger();
  bind(ApiServer.class).in(Scopes.SINGLETON);
}
EurekaServerAutoConfiguration.java 文件源码 项目:didi-eureka-server 阅读 29 收藏 0 点赞 0 评论 0
/**
 * Construct a Jersey {@link javax.ws.rs.core.Application} with all the resources
 * required by the Eureka server.
 */
@Bean
public javax.ws.rs.core.Application jerseyApplication(Environment environment,
        ResourceLoader resourceLoader) {

    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(
            false, environment);

    // Filter to include only classes that have a particular annotation.
    //
    provider.addIncludeFilter(new AnnotationTypeFilter(Path.class));
    provider.addIncludeFilter(new AnnotationTypeFilter(Provider.class));

    // Find classes in Eureka packages (or subpackages)
    //
    Set<Class<?>> classes = new HashSet<Class<?>>();
    for (String basePackage : EUREKA_PACKAGES) {
        Set<BeanDefinition> beans = provider.findCandidateComponents(basePackage);
        for (BeanDefinition bd : beans) {
            Class<?> cls = ClassUtils.resolveClassName(bd.getBeanClassName(),
                    resourceLoader.getClassLoader());
            classes.add(cls);
        }
    }

    // Construct the Jersey ResourceConfig
    //
    Map<String, Object> propsAndFeatures = new HashMap<String, Object>();
    propsAndFeatures.put(
            // Skip static content used by the webapp
            ServletContainer.PROPERTY_WEB_PAGE_CONTENT_REGEX,
            EurekaConstants.DEFAULT_PREFIX + "/(fonts|images|css|js)/.*");

    DefaultResourceConfig rc = new DefaultResourceConfig(classes);
    rc.setPropertiesAndFeatures(propsAndFeatures);

    return rc;
}
RestApplication.java 文件源码 项目:payara-micro-docker-starter-kit 阅读 25 收藏 0 点赞 0 评论 0
@Override
public Set<Class<?>> getClasses() {
    Set<Class<?>> resources = new HashSet<>();
    String PACKAGE_NAME = RestApplication.class.getPackage().getName();
    resources.addAll(getTypesAnnotatedWith(PACKAGE_NAME, Path.class));
    resources.addAll(getTypesAnnotatedWith(PACKAGE_NAME, Provider.class));
    resources.add(JacksonFeature.class);
    return resources;
}
AddonsServiceTrackerCustomizer.java 文件源码 项目:osgi-jaxrs-extracted 阅读 23 收藏 0 点赞 0 评论 0
@Override
public CXFJaxRsServiceRegistrator addingService(
    ServiceReference<CXFJaxRsServiceRegistrator> reference) {

    Thread thread = Thread.currentThread();

    ClassLoader contextClassLoader =
        thread.getContextClassLoader();

    CXFJaxRsServiceRegistrator cxfJaxRsServiceRegistrator =
        _bundleContext.getService(reference);

    try {
        thread.setContextClassLoader(_classLoader);

        if (_serviceClass.isAnnotationPresent(Provider.class)) {
            cxfJaxRsServiceRegistrator.addProvider(_service);
        } else {
            cxfJaxRsServiceRegistrator.addService(_service);
        }


        return cxfJaxRsServiceRegistrator;
    }
    catch (Exception e) {
        _bundleContext.ungetService(reference);

        throw e;
    }
    finally {
        thread.setContextClassLoader(contextClassLoader);
    }
}
AddonsServiceTrackerCustomizer.java 文件源码 项目:osgi-jaxrs-extracted 阅读 19 收藏 0 点赞 0 评论 0
@Override
public void removedService(
    ServiceReference<CXFJaxRsServiceRegistrator> reference,
    CXFJaxRsServiceRegistrator cxfJaxRsServiceRegistrator) {

    if (_serviceClass.isAnnotationPresent(Provider.class)) {
        cxfJaxRsServiceRegistrator.removeProvider(_service);
    } else {
        cxfJaxRsServiceRegistrator.removeService(_service);
    }

    _bundleContext.ungetService(reference);
}
ConsistencyFilter.java 文件源码 项目:openregister-java 阅读 16 收藏 0 点赞 0 评论 0
@Inject
public ConsistencyFilter(final javax.inject.Provider<RegisterName> registerPrimaryKey,
                         final UriInfo uriInfo,
                         javax.inject.Provider<RegisterContext> registerContext) {
    this.registerPrimaryKey = registerPrimaryKey;
    this.uriInfo = uriInfo;
    this.registerContext = registerContext;
}
NettyServer.java 文件源码 项目:Netty-Resteasy-Spring 阅读 24 收藏 0 点赞 0 评论 0
public void start() {
    ResteasyDeployment dp = new ResteasyDeployment();
    Collection<Object> providers = ac.getBeansWithAnnotation(Provider.class).values();
    Collection<Object> controllers = ac.getBeansWithAnnotation(Controller.class).values();
    Assert.notEmpty(controllers);
    // extract providers
    if (providers != null) {
        dp.getProviders().addAll(providers);
    }
    // extract only controller annotated beans
    dp.getResources().addAll(controllers);
    Map<String, Object> channelOptions = new HashMap<String, Object>();
    channelOptions.put("reuseAddress", true);
    List<ChannelHandler> channelHandlerList = new ArrayList<ChannelHandler>();
    channelHandlerList.add(channelHandler);
    channelHandlerList.add(idleStateHandler);
    channelHandlerList.add(healthCheckHandler);
    netty = new NettyJaxrsServer();
    netty.setChannelOptions(channelOptions);
    netty.setDeployment(dp);
    netty.setPort(port);
    netty.setRootResourcePath("/resteasy");
    netty.setIoWorkerCount(ioWorkerCount);
    netty.setExecutorThreadCount(executorThreadCount);
    netty.setMaxRequestSize(maxRequestSize);
    netty.setSSLContext(sslContext);
    netty.setKeepAlive(true);
    netty.setChannelHandlers(channelHandlerList);
    netty.setSecurityDomain(null);
    netty.start();
}
RestModule.java 文件源码 项目:sample.consulservicediscovery 阅读 28 收藏 0 点赞 0 评论 0
public RestModule(String host, int port, String contextRoot, WebAnnotations webAnnotations) {
    try {
        InfoStore infoStore = webAnnotations.getInfoStore();

        webAnnotations.openInfoStore();

        // Ignore all complexities like @Parent annotations for the moment,
        // and also inheritance.

        AnnotationTargets_Targets annotationTargets = webAnnotations.getAnnotationTargets();

        String applicationPath = "";
        Set<String> classesWithApplicationPath = annotationTargets
                .getAnnotatedClasses(ApplicationPath.class.getName(), POLICY_SEED);
        if (classesWithApplicationPath.size() == 0) {
            System.err.println("The REST application path must be set using annotations. ");
        } else if (classesWithApplicationPath.size() > 1) {
            System.err.println("There should only be one REST application path per application.");
        } else {
            applicationPath = getValue(infoStore, ApplicationPath.class,
                    classesWithApplicationPath.iterator().next());
        }

        // Scan annotation for @Provider, @Path
        processAnnotations(host, port, contextRoot, infoStore, annotationTargets, Provider.class, applicationPath);
        processAnnotations(host, port, contextRoot, infoStore, annotationTargets, Path.class, applicationPath);

    } catch (Exception e) {
        e.printStackTrace();
    }
}
GuiceRestEasyFilterDispatcher.java 文件源码 项目:webshooters 阅读 28 收藏 0 点赞 0 评论 0
@Override
public void init(FilterConfig servletConfig) throws ServletException {
    logger.entry();
    servletContainerDispatcher = new ServletContainerDispatcher();
    FilterBootstrap bootstrap = new FilterBootstrap(servletConfig);
    servletContext = servletConfig.getServletContext();
    servletContainerDispatcher.init(servletContext, bootstrap, this, this);
    servletContainerDispatcher.getDispatcher().getDefaultContextObjects().put(FilterConfig.class, servletConfig);

    if (injector == null)
        injector = (Injector) servletConfig.getServletContext().getAttribute(Injector.class.getName());

    Registry registry = getDispatcher().getRegistry();
    ResteasyProviderFactory providerFactory = getDispatcher().getProviderFactory();

    for (final Binding<?> binding : injector.getBindings().values()) {
        Type type = binding.getKey().getTypeLiteral().getType();
        if (type instanceof Class) {
            Class<?> beanClass = (Class<?>) type;
            if (GetRestful.isRootResource(beanClass)) {
                ResourceFactory resourceFactory = new GuiceResourceFactory(binding.getProvider(), beanClass);
                logger.info("registering factory for {}", beanClass.getName());
                registry.addResourceFactory(resourceFactory);
            }

            if (beanClass.isAnnotationPresent(Provider.class)) {
                logger.info("registering provider instance for {}", beanClass.getName());
                providerFactory.registerProviderInstance(binding.getProvider().get());
            }
        }
    }
    logger.exit();
}
ResteasyEmbeddedServletInitializer.java 文件源码 项目:resteasy-spring-boot 阅读 18 收藏 0 点赞 0 评论 0
private void findJaxrsResourcesAndProviderClasses(ConfigurableListableBeanFactory beanFactory) {
    logger.debug("Finding JAX-RS resources and providers Spring bean classes");

    String[] resourceBeans = beanFactory.getBeanNamesForAnnotation(Path.class);
    String[] providerBeans = beanFactory.getBeanNamesForAnnotation(Provider.class);

    if(resourceBeans != null) {
        for(String resourceBean : resourceBeans) {
            allResources.add(beanFactory.getType(resourceBean));
        }
    }

    if(providerBeans != null) {
        for(String providerBean : providerBeans) {
            providers.add(beanFactory.getType(providerBean));
        }
    }

    if(logger.isDebugEnabled()) {
        for (Object resourceClass : allResources.toArray()) {
            logger.debug("JAX-RS resource class found: {}", ((Class) resourceClass).getName());
        }
    }
    if(logger.isDebugEnabled()) {
        for (Object providerClass: providers.toArray()) {
            logger.debug("JAX-RS provider class found: {}", ((Class) providerClass).getName());
        }
    }
}
ProviderScanner.java 文件源码 项目:robe 阅读 23 收藏 0 点赞 0 评论 0
@Override
public void scanAndAdd(Environment environment, Injector injector, Reflections reflections) {
    Set<Class<?>> providerClasses = reflections.getTypesAnnotatedWith(Provider.class);
    for (Class<?> provider : providerClasses) {
        environment.jersey().register(provider);
        LOGGER.info("Added provider class: " + provider);
    }
}
JaxrsServer.java 文件源码 项目:jaxrs-unit 阅读 27 收藏 0 点赞 0 评论 0
public Collection<Class<?>> getProviders() {
    List<Class<?>> providers = new ArrayList<>();
    for (Class<?> classObject : classes) {
        if (classObject.isAnnotationPresent(Provider.class)) {
            providers.add(classObject);
        }
    }
    return providers;
}
ApplicationConfig.java 文件源码 项目:dohko 阅读 21 收藏 0 点赞 0 评论 0
/**
 * Register JAX-RS application components.
 */
public ApplicationConfig()
{
    Reflections reflections = new Reflections("org.excalibur");
    RESOURCES = Collections.unmodifiableList(new ArrayList<Class<?>>(reflections.getTypesAnnotatedWith(Path.class)));

    register(RequestContextFilter.class);
    registerResources(RESOURCES);
    registerResources(reflections.getTypesAnnotatedWith(Provider.class));


}
EurekaServerAutoConfiguration.java 文件源码 项目:spring-cloud-netflix 阅读 29 收藏 0 点赞 0 评论 0
/**
 * Construct a Jersey {@link javax.ws.rs.core.Application} with all the resources
 * required by the Eureka server.
 */
@Bean
public javax.ws.rs.core.Application jerseyApplication(Environment environment,
        ResourceLoader resourceLoader) {

    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(
            false, environment);

    // Filter to include only classes that have a particular annotation.
    //
    provider.addIncludeFilter(new AnnotationTypeFilter(Path.class));
    provider.addIncludeFilter(new AnnotationTypeFilter(Provider.class));

    // Find classes in Eureka packages (or subpackages)
    //
    Set<Class<?>> classes = new HashSet<>();
    for (String basePackage : EUREKA_PACKAGES) {
        Set<BeanDefinition> beans = provider.findCandidateComponents(basePackage);
        for (BeanDefinition bd : beans) {
            Class<?> cls = ClassUtils.resolveClassName(bd.getBeanClassName(),
                    resourceLoader.getClassLoader());
            classes.add(cls);
        }
    }

    // Construct the Jersey ResourceConfig
    //
    Map<String, Object> propsAndFeatures = new HashMap<>();
    propsAndFeatures.put(
            // Skip static content used by the webapp
            ServletContainer.PROPERTY_WEB_PAGE_CONTENT_REGEX,
            EurekaConstants.DEFAULT_PREFIX + "/(fonts|images|css|js)/.*");

    DefaultResourceConfig rc = new DefaultResourceConfig(classes);
    rc.setPropertiesAndFeatures(propsAndFeatures);

    return rc;
}
GuiceRestEasyFilterDispatcher.java 文件源码 项目:shiro-guice-async-webapp 阅读 23 收藏 0 点赞 0 评论 0
@Override
public void init(FilterConfig servletConfig) throws ServletException {
    logger.entry();
    servletContainerDispatcher = new ServletContainerDispatcher();
    FilterBootstrap bootstrap = new FilterBootstrap(servletConfig);
    servletContext = servletConfig.getServletContext();
    servletContainerDispatcher.init(servletContext, bootstrap, this, this);
    servletContainerDispatcher.getDispatcher().getDefaultContextObjects().put(FilterConfig.class, servletConfig);

    if(injector == null)
        injector = (Injector) servletConfig.getServletContext().getAttribute(Injector.class.getName());

    Registry registry = getDispatcher().getRegistry();
    ResteasyProviderFactory providerFactory = getDispatcher().getProviderFactory();

    for (final Binding<?> binding : injector.getBindings().values()) {
        Type type = binding.getKey().getTypeLiteral().getType();
        if (type instanceof Class) {
            Class<?> beanClass = (Class<?>) type;
            if (GetRestful.isRootResource(beanClass)) {
                ResourceFactory resourceFactory = new GuiceResourceFactory(binding.getProvider(), beanClass);
                logger.info("registering factory for {}", beanClass.getName());
                registry.addResourceFactory(resourceFactory);
            }

            if (beanClass.isAnnotationPresent(Provider.class)) {
                logger.info("registering provider instance for {}", beanClass.getName());
                providerFactory.registerProviderInstance(binding.getProvider().get());
            }
        }
    }
    logger.exit();
}
JerseyCdiExtension.java 文件源码 项目:hammock 阅读 31 收藏 0 点赞 0 评论 0
public <T> void observeProviders(@WithAnnotations({ Provider.class }) @Observes ProcessAnnotatedType<T> event) {
    AnnotatedType<T> annotatedType = event.getAnnotatedType();

    if (!annotatedType.getJavaClass().isInterface()) {
        this.providers.add(annotatedType.getJavaClass());
    }
}
SpringResourceConfigTest.java 文件源码 项目:pi 阅读 24 收藏 0 点赞 0 评论 0
@SuppressWarnings("unchecked")
@Before
public void doBefore() throws IOException {
    resourceConfig = new SpringResourceConfig("com.bt.pi.ops.website");

    myPathClass = new MyPathClass();
    myProviderClass = new MyProviderClass();
    appContext = mock(ApplicationContext.class);
    objectMap = mock(Map.class);
    beans = new ArrayList<Object>();

    when(objectMap.values()).thenReturn(beans);
    when(appContext.getBeansWithAnnotation(Path.class)).thenReturn(objectMap);
    when(appContext.getBeansWithAnnotation(Provider.class)).thenReturn(objectMap);
}


问题


面经


文章

微信
公众号

扫码关注公众号