예제 #1
0
  /**
   * Create a new Jersey server-side application handler configured by an instance of a {@link
   * Application JAX-RS Application sub-class}.
   *
   * @param application an instance of a JAX-RS {@code Application} (sub-)class that will be used to
   *     configure the new Jersey application handler.
   */
  public ApplicationHandler(Application application) {
    this.locator = Injections.createLocator(new ServerBinder(), new ApplicationBinder());
    this.application = application;
    if (application instanceof ResourceConfig) {
      final ResourceConfig rc = (ResourceConfig) application;
      if (rc.getApplicationClass() != null) {
        rc.setApplication(createApplication(rc.getApplicationClass()));
      }
    }
    this.runtimeConfig = ResourceConfig.createRuntimeConfig(application);

    Errors.processWithException(
        new Runnable() {
          @Override
          public void run() {
            initialize();
          }
        });
  }
예제 #2
0
 private Application createApplication(Class<? extends Application> applicationClass) {
   // need to handle ResourceConfig and Application separately as invoking forContract() on these
   // will trigger the factories which we don't want at this point
   if (applicationClass == ResourceConfig.class) {
     return new ResourceConfig();
   } else if (applicationClass == Application.class) {
     return new Application();
   } else {
     Application app = locator.createAndInitialize(applicationClass);
     if (app instanceof ResourceConfig) {
       final ResourceConfig _rc = (ResourceConfig) app;
       final Class<? extends Application> innerAppClass = _rc.getApplicationClass();
       if (innerAppClass != null) {
         final Application innerApp = createApplication(innerAppClass);
         _rc.setApplication(innerApp);
       }
     }
     return app;
   }
 }