Package org.jboss.errai.bus.server.service

Examples of org.jboss.errai.bus.server.service.ErraiServiceConfiguratorImpl


        return null;
    }

    private static void createRPCScaffolding(final Class remoteIface, final Class<?> type, final BootstrapContext context) {

        final ErraiServiceConfiguratorImpl config = (ErraiServiceConfiguratorImpl) context.getConfig();
        final Injector injector = Guice.createInjector(new AbstractModule() {
            @Override
            protected void configure() {
                bind(MessageBus.class).toInstance(context.getBus());
                bind(RequestDispatcher.class).toInstance(context.getService().getDispatcher());

                // Add any extension bindings.
                for (Map.Entry<Class<?>, ResourceProvider> entry : config.getExtensionBindings().entrySet()) {
                    bind(entry.getKey()).toProvider(new GuiceProviderProxy(entry.getValue()));
                }
            }
        });
View Full Code Here


{
  private Logger log = LoggerFactory.getLogger(DiscoverServices.class);

  public void execute(final BootstrapContext context)
  {
    final ErraiServiceConfiguratorImpl config = (ErraiServiceConfiguratorImpl)context.getConfig();

    boolean autoScanModules = true;

    final Set<String> loadedComponents = new HashSet<String>();

    /*** Extensions  ***/
    if (config.hasProperty("errai.auto_discover_services")) {
      autoScanModules = Boolean.parseBoolean(config.getProperty("errai.auto_discover_services"));
    }
    if (autoScanModules) {

      log.info("beging searching for services ...");

      List<File> configRootTargets = ConfigUtil.findAllConfigTargets();

      visitAllTargets(configRootTargets,
          new ConfigVisitor() {
            public void visit(final Class<?> loadClass) {
              if (loadedComponents.contains(loadClass.getName())) return;


              if (Module.class.isAssignableFrom(loadClass)) {
                final Class<? extends Module> clazz = loadClass.asSubclass(Module.class);

                loadedComponents.add(loadClass.getName());

                if (clazz.isAnnotationPresent(LoadModule.class)) {
                  log.info("discovered module : " + clazz.getName() + " -- don't use Modules! Use @Service and MessageCallback!");
                  Guice.createInjector(new AbstractModule() {
                    @Override
                    protected void configure() {
                      bind(Module.class).to(clazz);
                      bind(MessageBus.class).toInstance(context.getBus());
                    }
                  }).getInstance(Module.class).init();
                }

              } else if (loadClass.isAnnotationPresent(Service.class)) {
                Object svc = null;

                Class remoteImpl = getRemoteImplementation(loadClass);
                if (remoteImpl != null) {
                  createRPCScaffolding(remoteImpl, loadClass, context);
                } else if (MessageCallback.class.isAssignableFrom(loadClass)) {
                  final Class<? extends MessageCallback> clazz = loadClass.asSubclass(MessageCallback.class);

                  loadedComponents.add(loadClass.getName());

                  log.info("discovered service: " + clazz.getName());
                  try {
                    svc = Guice.createInjector(new AbstractModule() {
                      @Override
                      protected void configure() {
                        bind(MessageCallback.class).to(clazz);
                        bind(MessageBus.class).toInstance(context.getBus());
                        bind(RequestDispatcher.class).toInstance(context.getService().getDispatcher());

                        // Add any extension bindings.
                        for (Map.Entry<Class<?>, ResourceProvider> entry : config.getExtensionBindings().entrySet()) {
                          bind(entry.getKey()).toProvider(new GuiceProviderProxy(entry.getValue()));
                        }
                      }
                    }).getInstance(MessageCallback.class);
                  }
                  catch (Throwable t) {
                    t.printStackTrace();
                  }


                  String svcName = clazz.getAnnotation(Service.class).value();

                  // If no name is specified, just use the class name as the service
                  // by default.
                  if ("".equals(svcName)) {
                    svcName = clazz.getSimpleName();
                  }

                  // Subscribe the service to the bus.
                  context.getBus().subscribe(svcName, (MessageCallback) svc);

                  RolesRequiredRule rule = null;
                  if (clazz.isAnnotationPresent(RequireRoles.class)) {
                    rule = new RolesRequiredRule(clazz.getAnnotation(RequireRoles.class).value(), context.getBus());
                  } else if (clazz.isAnnotationPresent(RequireAuthentication.class)) {
                    rule = new RolesRequiredRule(new HashSet<Object>(), context.getBus());
                  }
                  if (rule != null) {
                    context.getBus().addRule(svcName, rule);
                  }
                }

                if (svc == null) {
                  svc = Guice.createInjector(new AbstractModule() {
                    @Override
                    protected void configure() {
                      bind(MessageBus.class).toInstance(context.getBus());
                      bind(RequestDispatcher.class).toInstance(context.getService().getDispatcher());

                      // Add any extension bindings.
                      for (Map.Entry<Class<?>, ResourceProvider> entry : config.getExtensionBindings().entrySet()) {
                        bind(entry.getKey()).toProvider(new GuiceProviderProxy(entry.getValue()));
                      }
                    }
                  }).getInstance(loadClass);
                }

                Map<String, MessageCallback> epts = new HashMap<String, MessageCallback>();


                // we scan for endpoints
                for (final Method method : loadClass.getDeclaredMethods()) {
                  if (method.isAnnotationPresent(Endpoint.class)) {
                    epts.put(method.getName(), method.getReturnType() == Void.class ?
                        new EndpointCallback(svc, method) :
                        new ConversationalEndpointCallback(svc, method, context.getBus()));
                  }
                }

                if (!epts.isEmpty()) {
                  context.getBus().subscribe(loadClass.getSimpleName() + ":RPC", new RemoteServiceCallback(epts));
                }

              } else if (loadClass.isAnnotationPresent(ExposeEntity.class)) {
                log.info("Marked " + loadClass + " as serializable.");
                loadedComponents.add(loadClass.getName());
                config.getSerializableTypes().add(loadClass);
              }
            }
          }
      );
    } else {
      log.info("auto-discovery of services disabled.");
    }

    try {
      ResourceBundle bundle = ResourceBundle.getBundle("ErraiApp");
      if (bundle != null) {
        log.info("checking ErraiApp.properties for configured types ...");

        Enumeration<String> keys = bundle.getKeys();
        while(keys.hasMoreElements())
        {
          String key = keys.nextElement();
          if(key.equals(ErraiServiceConfigurator.CONFIG_ERRAI_SERIALIZABLE_TYPE))
          {
            for (String s : key.split(" ")) {
              try {
                Class<?> cls = Class.forName(s.trim());
                log.info("Marked " + cls + " as serializable.");
                loadedComponents.add(cls.getName());
                config.getSerializableTypes().add(cls);
              }
              catch (Exception e) {
                throw new ErraiBootstrapFailure(e);
              }

View Full Code Here

    return null;
  }

  private void createRPCScaffolding(final Class remoteIface, final Class<?> type, final BootstrapContext context) {

    final ErraiServiceConfiguratorImpl config = (ErraiServiceConfiguratorImpl)context.getConfig();
    final Injector injector = Guice.createInjector(new AbstractModule() {
      @Override
      protected void configure() {
        bind(MessageBus.class).toInstance(context.getBus());
        bind(RequestDispatcher.class).toInstance(context.getService().getDispatcher());

        // Add any extension bindings.
        for (Map.Entry<Class<?>, ResourceProvider> entry : config.getExtensionBindings().entrySet()) {
          bind(entry.getKey()).toProvider(new GuiceProviderProxy(entry.getValue()));
        }
      }
    });
View Full Code Here

*/
class DefaultResources implements BootstrapExecution
{
  public void execute(BootstrapContext context)
  {
    final ErraiServiceConfiguratorImpl config = (ErraiServiceConfiguratorImpl)context.getConfig();

    config.getResourceProviders().put(MessageBus.class.getName(), new BusProvider(context.getBus()));
    config.getResourceProviders().put(RequestDispatcher.class.getName(),
        new DispatcherProvider(context.getService().getDispatcher()));

    // configure the server-side taskmanager
    TaskManagerFactory.setTaskManagerProvider(new TaskManagerProvider() {
      public TaskManager get() {
View Full Code Here

{
  private Logger log = LoggerFactory.getLogger(LoadExtensions.class);

  public void execute(final BootstrapContext context)
  {
    final ErraiServiceConfiguratorImpl config = (ErraiServiceConfiguratorImpl)context.getConfig();

    boolean autoScanModules = true;

    final Set<String> loadedComponents = new HashSet<String>();

    /*** Extensions  ***/
    if (config.hasProperty("errai.auto_load_extensions")) {
      autoScanModules = Boolean.parseBoolean(config.getProperty("errai.auto_load_extensions"));
    }
    if (autoScanModules) {

      log.info("beging searching for Errai extensions ...");
     
      final ErraiConfig erraiConfig = new ErraiConfig() {
        public void addBinding(Class<?> type, ResourceProvider provider) {
          config.getExtensionBindings().put(type, provider);
        }

        public void addResourceProvider(String name, ResourceProvider provider) {
          config.getResourceProviders().put(name, provider);
        }

        public void addSerializableType(Class<?> type) {
          log.info("Marked " + type + " as serializable.");
          loadedComponents.add(type.getName());
          config.getSerializableTypes().add(type);
        }
      };

      // Search for Errai extensions.
      List<File> configRootTargets = context.getConfigTargets();
      visitAllTargets(configRootTargets, new ConfigVisitor() {
        public void visit(Class<?> loadClass) {
          if (ErraiConfigExtension.class.isAssignableFrom(loadClass)
              && loadClass.isAnnotationPresent(ExtensionComponent.class) && !loadedComponents.contains(loadClass.getName())) {

            loadedComponents.add(loadClass.getName());

            // We have an annotated ErraiConfigExtension.  So let's configure it.
            final Class<? extends ErraiConfigExtension> clazz =
                loadClass.asSubclass(ErraiConfigExtension.class);


            log.info("found extension " + clazz.getName());

            try {

              final Runnable create = new Runnable() {
                public void run() {
                  AbstractModule module = new AbstractModule() {
                    @Override
                    protected void configure() {
                      bind(ErraiConfigExtension.class).to(clazz);
                      bind(ErraiServiceConfigurator.class).toInstance(config);
                      bind(MessageBus.class).toInstance(context.getBus());

                      // Add any extension bindings.
                      for (Map.Entry<Class<?>, ResourceProvider> entry : config.getExtensionBindings().entrySet()) {
                        bind(entry.getKey()).toProvider(new GuiceProviderProxy(entry.getValue()));
                      }
                    }
                  };
                  Guice.createInjector(module)
                      .getInstance(ErraiConfigExtension.class)
                      .configure(erraiConfig);
                }
              };

              try {
                create.run();
              }
              catch (CreationException e) {
                log.info("extension " + clazz.getName() + " cannot be bound yet, deferring ...");
                context.defer(create);
              }

            }
            catch (Throwable e) {
              throw new ErraiBootstrapFailure("could not initialize extension: " + loadClass.getName(), e);
            }
          }
        }
      });


      for (Class bindingType : config.getExtensionBindings().keySet()) {
        log.info("added extension binding: " + bindingType.getName());
      }

      log.info("total extension binding: " + config.getExtensionBindings().keySet().size());

    } else {
      log.info("auto-loading of extensions disabled.");
    }
  }
View Full Code Here

*/
class RegisterEntities implements BootstrapExecution
{
  public void execute(BootstrapContext context)
  {
    final ErraiServiceConfiguratorImpl config = (ErraiServiceConfiguratorImpl)context.getConfig();
    JSONEncoder.setSerializableTypes(config.getSerializableTypes());
  }
View Full Code Here

*/
class RegisterTypes implements BootstrapExecution
{
  public void execute(BootstrapContext context)
  {
    final ErraiServiceConfiguratorImpl config = (ErraiServiceConfiguratorImpl)context.getConfig();
    JSONEncoder.setSerializableTypes(config.getSerializableTypes());
  }
View Full Code Here

  private Logger log = LoggerFactory.getLogger(DefaultComponents.class);

  public void execute(final BootstrapContext context)
  {

    /*** Authentication Adapter ***/

    final ErraiServiceConfiguratorImpl config = (ErraiServiceConfiguratorImpl)context.getConfig();

    if (config.hasProperty("errai.authentication_adapter")) {
      try {
        final Class<? extends AuthenticationAdapter> authAdapterClass = Class.forName(config.getProperty("errai.authentication_adapter"))
            .asSubclass(AuthenticationAdapter.class);

        log.info("authentication adapter configured: " + authAdapterClass.getName());

        final Runnable create = new Runnable() {
          public void run() {
            final AuthenticationAdapter authAdapterInst = Guice.createInjector(new AbstractModule() {
              @Override
              protected void configure() {
                bind(AuthenticationAdapter.class).to(authAdapterClass);
                bind(ErraiServiceConfigurator.class).toInstance(context.getConfig());
                bind(MessageBus.class).toInstance(context.getBus());
                bind(ServerMessageBus.class).toInstance(context.getBus());
              }
            }).getInstance(AuthenticationAdapter.class);

            config.getExtensionBindings().put(AuthenticationAdapter.class, new ResourceProvider() {
              public Object get() {
                return authAdapterInst;
              }
            });
          }
        };

        try {
          create.run();
        }
        catch (Throwable e) {
          log.info("authentication adapter " + authAdapterClass.getName() + " cannot be bound yet, deferring ...");
          context.defer(create);
        }

      }
      catch (ErraiBootstrapFailure e) {
        throw e;
      }
      catch (Exception e) {
        throw new ErraiBootstrapFailure("cannot configure authentication adapter", e);
      }
    }


    /*** Dispatcher ***/

    RequestDispatcher dispatcher = createInjector(new AbstractModule() {
      @Override
      protected void configure() {
        Class<? extends RequestDispatcher> dispatcherImplementation = SimpleDispatcher.class;

        if (config.hasProperty(ErraiServiceConfigurator.ERRAI_DISPATCHER_IMPLEMENTATION)) {
          try {
            dispatcherImplementation = Class.forName(config.getProperty(ErraiServiceConfigurator.ERRAI_DISPATCHER_IMPLEMENTATION))
                .asSubclass(RequestDispatcher.class);
          }
          catch (Exception e) {
            throw new ErraiBootstrapFailure("could not load request dispatcher implementation class", e);
          }
        }

        log.info("using dispatcher implementation: " + dispatcherImplementation.getName());

        bind(RequestDispatcher.class).to(dispatcherImplementation);
        bind(ErraiService.class).toInstance(context.getService());
        bind(MessageBus.class).toInstance(context.getBus());
        bind(ErraiServiceConfigurator.class).toInstance(config);
      }
    }).getInstance(RequestDispatcher.class);

    context.getService().setDispatcher(dispatcher);

    /*** Session Provider ***/

    SessionProvider sessionProvider = createInjector(new AbstractModule() {
      @Override
      protected void configure() {
        Class<? extends SessionProvider> sessionProviderImplementation = HttpSessionProvider.class;

        if (config.hasProperty(ErraiServiceConfigurator.ERRAI_SESSION_PROVIDER_IMPLEMENTATION)) {
          try {
            sessionProviderImplementation = Class.forName(config.getProperty(ErraiServiceConfigurator.ERRAI_SESSION_PROVIDER_IMPLEMENTATION))
                .asSubclass(SessionProvider.class);
          }
          catch (Exception e) {
            throw new ErraiBootstrapFailure("could not load session provider implementation class", e);
          }
View Full Code Here

TOP

Related Classes of org.jboss.errai.bus.server.service.ErraiServiceConfiguratorImpl

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.