Search in sources :

Example 1 with ProviderScope

use of joynr.types.ProviderScope in project joynr by bmwcarit.

the class MyRadioProviderApplication method main.

public static void main(String[] args) throws Exception {
    // run application from cmd line using Maven:
    // mvn exec:java -Dexec.mainClass="io.joynr.demo.MyRadioProviderApplication" -Dexec.args="<arguments>"
    // where arguments provided as
    // -d provider-domain [-h websocket-host] [-p websocket-port] [-t [(websocket | websocketCC):[http]:[mqtt]] [-l]
    ProviderScope tmpProviderScope = ProviderScope.GLOBAL;
    String host = "localhost";
    int port = 4242;
    String localDomain = "domain";
    String transport = null;
    CommandLine line;
    Options options = new Options();
    Options helpOptions = new Options();
    setupOptions(options, helpOptions);
    CommandLineParser parser = new DefaultParser();
    // to just get help / usage info.
    try {
        line = parser.parse(helpOptions, args);
        if (line.hasOption('h')) {
            HelpFormatter formatter = new HelpFormatter();
            // use 'options' here to print help about all possible parameters
            formatter.printHelp(MyRadioProviderApplication.class.getName(), options, true);
            System.exit(0);
        }
    } catch (ParseException e) {
    // ignore, since any option except '-h' will cause this exception
    }
    try {
        line = parser.parse(options, args);
        if (line.hasOption('d')) {
            localDomain = line.getOptionValue('d');
            LOG.info("found domain = " + localDomain);
        }
        if (line.hasOption('H')) {
            host = line.getOptionValue('H');
            LOG.info("found host = " + host);
        }
        if (line.hasOption('l')) {
            tmpProviderScope = ProviderScope.LOCAL;
            LOG.info("found scope local");
        }
        if (line.hasOption('p')) {
            port = Integer.parseInt(line.getOptionValue('p'));
            LOG.info("found port = " + port);
        }
        if (line.hasOption('t')) {
            transport = line.getOptionValue('t').toLowerCase();
            LOG.info("found transport = " + transport);
        }
    } catch (ParseException e) {
        LOG.error("failed to parse command line: " + e);
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp(MyRadioProviderApplication.class.getName(), options, true);
        System.exit(1);
    }
    Properties joynrConfig = new Properties();
    Module runtimeModule = getRuntimeModule(transport, host, port, joynrConfig);
    final ProviderScope providerScope = tmpProviderScope;
    LOG.info("Using the following runtime module: " + runtimeModule.getClass().getSimpleName());
    LOG.info("Registering provider with the following scope: " + providerScope.name());
    LOG.info("Registering provider on domain \"{}\"", localDomain);
    // joynr config properties are used to set joynr configuration at
    // compile time. They are set on the
    // JoynrInjectorFactory.
    // Set a custom static persistence file (default is joynr.properties in
    // the working dir) to store
    // joynr configuration. It allows for changing the joynr configuration
    // at runtime. Custom persistence
    // files support running the consumer and provider applications from
    // within the same directory.
    joynrConfig.setProperty(MessagingPropertyKeys.PERSISTENCE_FILE, STATIC_PERSISTENCE_FILE);
    // How to use custom infrastructure elements:
    // 1) Set them programmatically at compile time using the joynr
    // configuration properties at the
    // JoynInjectorFactory. E.g. uncomment the following lines to set a
    // certain joynr server
    // instance.
    // joynrConfig.setProperty(MessagingPropertyKeys.BOUNCE_PROXY_URL,
    // "http://localhost:8080/bounceproxy/");
    // joynrConfig.setProperty(MessagingPropertyKeys.DISCOVERYDIRECTORYURL,
    // "http://localhost:8080/discovery/channels/discoverydirectory_channelid/");
    // Each joynr instance has a local domain. It identifies the execution
    // device/platform, e.g. the
    // vehicle. Normally, providers on that instance are registered for the
    // local domain.
    joynrConfig.setProperty(PROPERTY_JOYNR_DOMAIN_LOCAL, localDomain);
    // 2) Or set them in the static persistence file (default:
    // joynr.properties in working dir) at
    // runtime. If not available in the working dir, it will be created
    // during the first launch
    // of the application. Copy the following lines to the custom
    // persistence file to set a
    // certain joynr server instance.
    // NOTE: This application uses a custom static persistence file
    // provider-joynr.properties.
    // Copy the following lines to the custom persistence file to set a
    // certain joynr server
    // instance.
    // joynr.messaging.bounceproxyurl=http://localhost:8080/bounceproxy/
    // joynr.messaging.discoverydirectoryurl=http://localhost:8080/discovery/channels/discoverydirectory_channelid/
    // 3) Or set them in Java System properties.
    // -Djoynr.messaging.bounceProxyUrl=http://localhost:8080/bounceproxy/
    // -Djoynr.messaging.capabilitiesDirectoryUrl=http://localhost:8080/discovery/channels/discoverydirectory_channelid/
    // NOTE:
    // Programmatically set configuration properties override properties set
    // in the static persistence file.
    // Java system properties override both
    // Application-specific configuration properties are injected to the
    // application by setting
    // them on the JoynApplicationModule.
    Properties appConfig = new Properties();
    // Use injected static provisioning of access control entries to allow access to anyone to this interface
    provisionAccessControl(joynrConfig, localDomain);
    JoynrApplication joynrApplication = new JoynrInjectorFactory(joynrConfig, runtimeModule, new StaticDomainAccessControlProvisioningModule()).createApplication(new JoynrApplicationModule(MyRadioProviderApplication.class, appConfig) {

        @Override
        protected void configure() {
            super.configure();
            bind(ProviderScope.class).toInstance(providerScope);
        }
    });
    joynrApplication.run();
    joynrApplication.shutdown();
}
Also used : Options(org.apache.commons.cli.Options) Properties(java.util.Properties) StaticDomainAccessControlProvisioningModule(io.joynr.accesscontrol.StaticDomainAccessControlProvisioningModule) JoynrApplication(io.joynr.runtime.JoynrApplication) AbstractJoynrApplication(io.joynr.runtime.AbstractJoynrApplication) JoynrInjectorFactory(io.joynr.runtime.JoynrInjectorFactory) HelpFormatter(org.apache.commons.cli.HelpFormatter) CommandLine(org.apache.commons.cli.CommandLine) ProviderScope(joynr.types.ProviderScope) CommandLineParser(org.apache.commons.cli.CommandLineParser) ParseException(org.apache.commons.cli.ParseException) Module(com.google.inject.Module) CCWebSocketRuntimeModule(io.joynr.runtime.CCWebSocketRuntimeModule) LibjoynrWebSocketRuntimeModule(io.joynr.runtime.LibjoynrWebSocketRuntimeModule) StaticDomainAccessControlProvisioningModule(io.joynr.accesscontrol.StaticDomainAccessControlProvisioningModule) AtmosphereMessagingModule(io.joynr.messaging.AtmosphereMessagingModule) MqttPahoModule(io.joynr.messaging.mqtt.paho.client.MqttPahoModule) CCInProcessRuntimeModule(io.joynr.runtime.CCInProcessRuntimeModule) JoynrApplicationModule(io.joynr.runtime.JoynrApplicationModule) WebsocketModule(io.joynr.messaging.websocket.WebsocketModule) JoynrApplicationModule(io.joynr.runtime.JoynrApplicationModule) DefaultParser(org.apache.commons.cli.DefaultParser)

Aggregations

Module (com.google.inject.Module)1 StaticDomainAccessControlProvisioningModule (io.joynr.accesscontrol.StaticDomainAccessControlProvisioningModule)1 AtmosphereMessagingModule (io.joynr.messaging.AtmosphereMessagingModule)1 MqttPahoModule (io.joynr.messaging.mqtt.paho.client.MqttPahoModule)1 WebsocketModule (io.joynr.messaging.websocket.WebsocketModule)1 AbstractJoynrApplication (io.joynr.runtime.AbstractJoynrApplication)1 CCInProcessRuntimeModule (io.joynr.runtime.CCInProcessRuntimeModule)1 CCWebSocketRuntimeModule (io.joynr.runtime.CCWebSocketRuntimeModule)1 JoynrApplication (io.joynr.runtime.JoynrApplication)1 JoynrApplicationModule (io.joynr.runtime.JoynrApplicationModule)1 JoynrInjectorFactory (io.joynr.runtime.JoynrInjectorFactory)1 LibjoynrWebSocketRuntimeModule (io.joynr.runtime.LibjoynrWebSocketRuntimeModule)1 Properties (java.util.Properties)1 ProviderScope (joynr.types.ProviderScope)1 CommandLine (org.apache.commons.cli.CommandLine)1 CommandLineParser (org.apache.commons.cli.CommandLineParser)1 DefaultParser (org.apache.commons.cli.DefaultParser)1 HelpFormatter (org.apache.commons.cli.HelpFormatter)1 Options (org.apache.commons.cli.Options)1 ParseException (org.apache.commons.cli.ParseException)1