Java 类javax.ws.rs.container.DynamicFeature 实例源码

项目:bootique-jersey    文件:JerseyModule.java   
@Singleton
@Provides
private ResourceConfig createResourceConfig(Injector injector,
                                            Set<Feature> features,
                                            Set<DynamicFeature> dynamicFeatures,
                                            @JerseyResource Set<Object> resources, Set<Package> packages,
                                            @JerseyResource Map<String, Object> properties) {

    ResourceConfig config = new ResourceConfig();

    packages.forEach(p -> config.packages(true, p.getName()));
    resources.forEach(r -> config.register(r));

    features.forEach(f -> config.register(f));
    dynamicFeatures.forEach(df -> config.register(df));

    config.addProperties(properties);

    // TODO: make this pluggable?
    config.register(ResourceModelDebugger.class);

    // register Guice Injector as a service in Jersey HK2, and GuiceBridgeFeature as a
    GuiceBridgeFeature.register(config, injector);

    return config;
}
项目:baguette    文件:Server.java   
public Server() {
    register(FreemarkerMvcFeature.class);

    packages("ru.qatools.school.baguette.resources");

    register(new DynamicFeature() {
        @Override
        public void configure(ResourceInfo resourceInfo, FeatureContext context) {
            context.register(DatabaseProvider.class);

            if (resourceInfo.getResourceMethod().isAnnotationPresent(AuthenticationRequired.class)) {
                context.register(AuthenticationFilter.class);
            }
        }
    });
}
项目:Mastering-Java-EE-Development-with-WildFly    文件:ComponentTestCase.java   
@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());
}
项目:talk-observing-distributed-systems    文件:SearchServiceApplication.java   
public void run(Configuration configuration, Environment environment) throws Exception {
  final CollectorRegistry collectorRegistry = new CollectorRegistry();
  collectorRegistry.register(new DropwizardExports(environment.metrics()));
  environment.admin()
      .addServlet("metrics", new MetricsServlet(collectorRegistry))
      .addMapping("/metrics");

  final PrometheusMetricsReporter reporter = PrometheusMetricsReporter.newMetricsReporter()
      .withCollectorRegistry(collectorRegistry)
      .withConstLabel("service", getName())
      .build();

  final Tracer tracer = getTracer();
  final Tracer metricsTracer = io.opentracing.contrib.metrics.Metrics.decorate(tracer, reporter);
  GlobalTracer.register(metricsTracer);

  final DynamicFeature tracing = new ServerTracingDynamicFeature.Builder(metricsTracer).build();
  environment.jersey().register(tracing);

  final HttpHost httpHost = new HttpHost("tweets-elasticsearch", 9200);
  final RestClientBuilder restClientBuilder =
      RestClient.builder(httpHost).setHttpClientConfigCallback(new TracingHttpClientConfigCallback(metricsTracer));
  final RestClient restClient = restClientBuilder.build();
  final RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClient);
  final TweetRepository tweetRepository = new ElasticsearchTweetRepository(restHighLevelClient);
  final TweetsResource tweetsResource = new TweetsResource(tweetRepository);
  environment.jersey().register(tweetsResource);
}
项目:talk-observing-distributed-systems    文件:WorkerServiceApplication.java   
public void run(Configuration configuration, Environment environment) throws Exception {
  final CollectorRegistry collectorRegistry = new CollectorRegistry();
  collectorRegistry.register(new DropwizardExports(environment.metrics()));
  environment.admin()
      .addServlet("metrics", new MetricsServlet(collectorRegistry))
      .addMapping("/metrics");

  final PrometheusMetricsReporter reporter = PrometheusMetricsReporter.newMetricsReporter()
      .withCollectorRegistry(collectorRegistry)
      .withConstLabel("service", getName())
      .build();

  final Tracer tracer = getTracer();
  final Tracer metricsTracer = io.opentracing.contrib.metrics.Metrics.decorate(tracer, reporter);
  GlobalTracer.register(metricsTracer);

  final DynamicFeature tracing = new ServerTracingDynamicFeature.Builder(metricsTracer).build();
  environment.jersey().register(tracing);

  final Properties producerConfigs = new Properties();
  producerConfigs.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "tweets-kafka:9092");
  producerConfigs.put(ProducerConfig.ACKS_CONFIG, "all");
  producerConfigs.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, true);
  final KafkaProducer<Long, String> kafkaProducer =
      new KafkaProducer<>(producerConfigs, new LongSerializer(), new StringSerializer());
  final Producer<Long, String> tracingKafkaProducer =
      new TracingKafkaProducer<>(kafkaProducer, metricsTracer);
  final ObjectMapper objectMapper = environment.getObjectMapper();
  final TweetEventRepository tweetRepository = new KafkaTweetEventRepository(tracingKafkaProducer, objectMapper);
  final TweetsService tweetsService = new TweetsService(tweetRepository);
  final TweetsResource tweetsResource = new TweetsResource(tweetsService);
  environment.jersey().register(tweetsResource);
}
项目:talk-observing-distributed-systems    文件:TweetsServiceApplication.java   
public void run(Configuration configuration, Environment environment) {
  final CollectorRegistry collectorRegistry = new CollectorRegistry();
  collectorRegistry.register(new DropwizardExports(environment.metrics()));

  final PrometheusMetricsReporter reporter =
      PrometheusMetricsReporter.newMetricsReporter()
          .withCollectorRegistry(collectorRegistry)
          .withConstLabel("service", getName())
          .build();

  final Tracer tracer = getTracer();
  final Tracer metricsTracer = io.opentracing.contrib.metrics.Metrics.decorate(tracer, reporter);
  GlobalTracer.register(metricsTracer);

  final String jdbcUrl = "jdbc:tracing:postgresql://tweets-db/postgres";
  final String jdbcUsername = "postgres";
  final String jdbcPassword = "example";
  final TweetsRepository tweetsRepository = new JooqPostgresTweetsRepository(jdbcUrl, jdbcUsername, jdbcPassword);
  final TweetsService tweetsService = new TweetsService(tweetsRepository);
  final TweetsResource tweetsResource = new TweetsResource(tweetsService);

  environment.jersey().register(tweetsResource);

  final DynamicFeature tracing = new ServerTracingDynamicFeature.Builder(metricsTracer).build();
  environment.jersey().register(tracing);

  environment.admin()
      .addServlet("metrics", new MetricsServlet(collectorRegistry))
      .addMapping("/metrics");
}
项目:ya.blogo    文件:Server.java   
public Server() {
    register(FreemarkerMvcFeature.class);

    register(new DynamicFeature() {
        @Override
        public void configure(ResourceInfo resourceInfo, FeatureContext context) {
            context.register(DatabaseProvider.class);
            context.register(AuthUserProvider.class);
        }
    });

    packages(Server.class.getPackage().getName());
}
项目:switter    文件:Server.java   
public Server() {
    register(FreemarkerMvcFeature.class);

    register(new DynamicFeature() {
        @Override
        public void configure(ResourceInfo resourceInfo, FeatureContext context) {
            context.register(DatabaseProvider.class);
        }
    });

    packages(Server.class.getPackage().getName());
}
项目:splinter    文件:Server.java   
public Server() {
    Splinter splinter = new Splinter();
    registerBinders(splinter);

    SimpleContainer.getLogger().debug(
            String.format(
                    "Starting application in `%s` environment using `%s` database driver",
                    splinter.getEnvironment().toString().toLowerCase(),
                    splinter.getConfiguration().getDatabaseConfiguration().getDriver().toString().toLowerCase()
            )
    );

    property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true);
    property(ServerProperties.BV_DISABLE_VALIDATE_ON_EXECUTABLE_OVERRIDE_CHECK, true);
    register(FreemarkerMvcFeature.class);

    register(new DynamicFeature() {
        @Override
        public void configure(ResourceInfo resourceInfo, FeatureContext context) {
            context.register(DatabaseProvider.class);
            context.register(AuthProvider.class);
        }
    });

    packages(Server.class.getPackage().getName());

    registerSharedVariables();
}
项目:twister    文件:Server.java   
public Server() {
    register(FreemarkerMvcFeature.class);

    register(new DynamicFeature() {
        @Override
        public void configure(ResourceInfo resourceInfo, FeatureContext context) {

            context.register(DatabaseProvider.class);
            context.register(AuthUserProvider.class);
        }
    });

    packages(Server.class.getPackage().getName());
}
项目:nexus-public    文件:SisuResteasyProviderFactory.java   
/**
 * Unregisters a @Provider type from this factory.
 */
public void removeRegistrations(final Class<?> type) {
  checkNotNull(type);

  log.debug("Removing registrations for: {}", type.getName());

  classContracts.remove(type);

  removeInstancesOf(type, providerInstances);
  providerClasses.remove(type);

  if (ExceptionMapper.class.isAssignableFrom(type)) {
    removeInstancesOf(type, exceptionMappers.values());
  }
  else if (MessageBodyReader.class.isAssignableFrom(type)) {
    clearInstancesOf(type, clientMessageBodyReaders, DUMMY_READER);
    clearInstancesOf(type, serverMessageBodyReaders, DUMMY_READER);
  }
  else if (MessageBodyWriter.class.isAssignableFrom(type)) {
    clearInstancesOf(type, clientMessageBodyWriters, DUMMY_WRITER);
    clearInstancesOf(type, serverMessageBodyWriters, DUMMY_WRITER);
  }
  else if (ContextResolver.class.isAssignableFrom(type)) {
    Type[] args = Types.getActualTypeArgumentsOfAnInterface(type, ContextResolver.class);
    contextResolvers.remove(Types.getRawType(args[0]));
  }
  else if (Feature.class.isAssignableFrom(type)) {
    removeInstancesOf(type, featureInstances);
    removeInstancesOf(type, enabledFeatures);
    featureClasses.remove(type);
  }
  else if (DynamicFeature.class.isAssignableFrom(type)) {
    removeInstancesOf(type, clientDynamicFeatures);
    removeInstancesOf(type, serverDynamicFeatures);
  }
  else if (ParamConverterProvider.class.isAssignableFrom(type)) {
    removeInstancesOf(type, paramConverterProviders);
  }
  else if (StringConverter.class.isAssignableFrom(type)) {
    removeInstancesOf(type, stringConverters.values());
  }
  else if (StringParameterUnmarshaller.class.isAssignableFrom(type)) {
    stringParameterUnmarshallers.values().remove(type);
  }
  else {
    log.warn("Unable to remove registrations for: {}", type.getName());
  }
}
项目:bootique-jersey    文件:JerseyModuleExtender.java   
public JerseyModuleExtender addDynamicFeature(DynamicFeature feature) {
    contributeDynamicFeatures().addBinding().toInstance(feature);
    return this;
}
项目:bootique-jersey    文件:JerseyModuleExtender.java   
public <T extends DynamicFeature> JerseyModuleExtender addDynamicFeature(Class<T> featureType) {
    contributeDynamicFeatures().addBinding().to(featureType);
    return this;
}
项目:bootique-jersey    文件:JerseyModuleExtender.java   
protected Multibinder<DynamicFeature> contributeDynamicFeatures() {
    if (dynamicFeatures == null) {
        dynamicFeatures = newSet(DynamicFeature.class);
    }
    return dynamicFeatures;
}
项目:bootique-jersey    文件:JerseyModule.java   
/**
 * @param binder DI binder passed to the Module that invokes this method.
 * @return returns a {@link Multibinder} for JAX-RS DynamicFeatures.
 * @since 0.12
 * @deprecated since 0.21 call {@link #extend(Binder)} and then call
 * {@link JerseyModuleExtender#addDynamicFeature(DynamicFeature)}.
 */
@Deprecated
public static Multibinder<DynamicFeature> contributeDynamicFeatures(Binder binder) {
    return Multibinder.newSetBinder(binder, DynamicFeature.class);
}