Giter Site home page Giter Site logo

bmwcarit / joynr Goto Github PK

View Code? Open in Web Editor NEW
181.0 181.0 57.0 77.8 MB

A transport protocol agnostic (MQTT, HTTP, WebSockets etc.) Franca IDL based communication framework supporting multiple communication paradigms (RPC, Pub-Sub, broadcast etc.)

License: Apache License 2.0

C++ 34.50% Xtend 3.80% Shell 2.06% Java 44.52% JavaScript 0.26% CMake 1.29% Rust 0.07% Dockerfile 0.36% Kotlin 0.17% Python 0.26% TypeScript 12.65% Handlebars 0.01% AIDL 0.01% C 0.02% Gnuplot 0.02%
broadcast c-plus-plus communication events http idl java javascript middleware mqtt multicast rpc websocket

joynr's People

Contributors

agegov avatar asenkin avatar c-strobel avatar cainhauser avatar christianhoff avatar clive-jevons avatar david-katz avatar evisa-lumani avatar fleckol avatar maltgelt avatar manuel-schiller avatar michaelknapp avatar miroshko avatar ostkamp avatar renato-oliveira-ctw avatar shazledi avatar snieswand avatar sticha avatar tobiashenkel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

joynr's Issues

Dose the cluster controller support proxy configuration

Hi,
I wonder that can I configure the Mqtt client which inside the cluster controller to use the proxy instead of directing connecting to the broker?
I can't find some related document about that.
Thanks.
BRs//Teng Fei

[Feature Request] Enable Multicast QOS configuration

To allow more configurable multicast is it possible to enable QOS configuration?

In PublicationManagerImpl#multicastOccurred(String providerParticipantId,
String multicastName,
String[] partitions,
Object... values),
MessagingQos seems to be hardcoded to default qos (1) and default ttl.

Is it possible to configure some other way?
Thank you

consumer can not invoke the producer function after terminating the provider process and restart again

Hi Joynr guys,
I success to make the joynr consumer invoke the provider method every time I totally restart the whole environment(including joynr infra, consumer application, provider application& cluster controller). but after that, when I terminate the provider application without unregister it. and then restart provider application, my consumer application could not invoke the provider method successfully, even I try to restart the cluster controller located with the provider application. I would like to ask that is it a acceptable way to restart the provider application? or is there a official or workable way to restart the provider application?
Thanks.

Error parsing payload in jee

Here is an error from the radio-jee (joynr 18.4). Standalone works correctly. How it can be fixed?

Error parsing payload. msgId: 144fc8ce-df9a-4e1f-b3a6-47b0f2714746. from: 144fc8ce-df9a-4e1f-b3a6-47b0f2714746 to: 5ddbb385-3a14-4b6c-9ec2-a6552f0facca. Reason: Unexpected token (END_OBJECT), expected FIELD_NAME: missing property '_typeName' that is to contain type id  (for class java.lang.Object)
 at [Source: {"_typeName":"joynr.Reply","requestReplyId":"d6f1ae05-bb7e-4ede-b9ba-50951d9716cb","response":[{"country":"AUSTRALIA","location":{"_typeName":"joynr.vehicle.GeoPosition","latitude":-37.814107,"longitude":144.96328}}]}; line: 1, column: 215] (through reference chain: joynr.Reply["response"]->Object[][0]). Discarding joynr message.]]

Diff:
jee:

"response": [
        {
            "country": "AUSTRALIA",
            "location": {
                "_typeName": "joynr.vehicle.GeoPosition",
                "latitude": -37.814107,
                "longitude": 144.96328
            }
        }
    ]

standalone:

"response": [
        "AUSTRALIA",
        {
            "_typeName": "joynr.vehicle.GeoPosition",
            "latitude": -37.814107,
            "longitude": 144.96328
        }
    ]

Enforcer rules Fail

Hi,

Today I was trying to build JoyNR with Maven 3.5, but it failed with the message that I'm using the wrong version. As 3.5 is the version recommended by Apache, could you please take a look at it?
Message: "Wrong maven version. You must use use Maven 3.1.x to 3.3.x to build joynr"
With kind regards,
Sebastian Reichl

Build joynr C++ on Windows 10

Hi,

I want to build a JS Joynr application and it seems I need to build the C+ cluster controller first in order to run such an application (e.g. your radio app example).
Since I'm working on a Win 10 machine I am having troubles building the Joynr docker images as some scripts fail during joynr-docker build.
e.g. : /bin/sh: /data/scripts/gen-certificates.sh: /bin/bash^M: bad interpreter: No such file or directory

This seems to happen because of the line break differences between Unix and Windows.
Is this a known issue / expected behaviour ?

PS : I can change the scripts manually to be saved in Unix format but I don't know which of them - might take a while to change them all based on the errors I get and also I would have to do this every time I make a new pull / rebuild.
Until now I was building the framework using Maven but that does not compile the cluster controller.

Thanks,
Andrei

AndroidClusterController crash when start cluster controller

Hi:
when i input mqtt broker uri ,an click start button, cluster controller application run with crash.I don't know what happen,I need you to take a look,thank you very much!!

Caused by: java.lang.IllegalAccessError: Field 'io.joynr.messaging.routing.CcRoutingTableAddressValidator.ownAddressWriteLock' is inaccessible to class 'io.joynr.messaging.routing.CcRoutingTableAddressValidator$1' (declaration of 'io.joynr.messaging.routing.CcRoutingTableAddressValidator$1' appears in /data/app/~~iRNxmcKphS77x12--ITN_g==/io.joynr.android.clustercontrollerstandalone-IamKnrIAPv8VJNcF8Lx9HA==/base.apk)
at io.joynr.messaging.routing.CcRoutingTableAddressValidator$1.transportReady(CcRoutingTableAddressValidator.java:62)
at io.joynr.messaging.routing.GlobalAddressFactory.registerGlobalAddressReady(GlobalAddressFactory.java:47)
2021-12-17 16:40:49.734 5041-5041/? E/AndroidRuntime: at io.joynr.runtime.GlobalAddressProvider.registerGlobalAddressesReadyListener(GlobalAddressProvider.java:55)
at io.joynr.messaging.routing.CcRoutingTableAddressValidator.(CcRoutingTableAddressValidator.java:59)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:85)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:65)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:65)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:65)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:84)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:54)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:65)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)

Source deployed as .ts - please deploy as .d.ts

Current source is deployed as .ts files.

However, due to module resolution as a dependency, this causes compilation errors for us due to more stringent options.

Please consider deploying in library format (.d.ts) so that we can skip these files during compilation.

This can be done by specifying "declaration": true, in your tsconfig.json file.

Example of compilation errors:

> [email protected] lint /Users/xxxxxx/Documents/Projects/ts-joynr
> tslint -c tslint.json -p tsconfig.test.json

node_modules/joynr/joynr/util/UtilInternal.ts:27:22 - error TS2339: Property 'hasOwnProperty' does not exist on type 'U'.

27             if (from.hasOwnProperty(key)) {
                        ~~~~~~~~~~~~~~
node_modules/joynr/joynr/util/UtilInternal.ts:90:31 - error TS2345: Argument of type 'any' is not assignable to parameter of type 'never'.

90         transformedArray.push(transformFunction(value, i));
                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
Found 2 errors.

npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! [email protected] build: `npm run lint && tsc  -p tsconfig.json`
npm ERR! Exit status 2
npm ERR! 
npm ERR! Failed at the [email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/xxxxxx/.npm/_logs/2019-08-16T20_57_34_914Z-debug.log
LCHI605847:ts-joynr xxxxxx$ 

Java: MqttPahoClientTest test fails because keystore and truststore are not always present

Problem

Running the tests in MqttPahoClientTest results in test errors if clientkeystore and catruststore are not present. The required files are created only through docker/joynr-android/scripts/build/java-android-clean-build. So running docker/joynr-java/scripts/build/java-clean-build will result in test errors, if these files where not created before.

The following error is reported:

Running io.joynr.messaging.mqtt.paho.client.MqttPahoClientTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.664 sec <<< FAILURE! - in io.joynr.messaging.mqtt.paho.client.MqttPahoClientTest
mqttClientTestWithDisabledMessageSizeCheckWithTlsAndDefaultJksStore(io.joynr.messaging.mqtt.paho.client.MqttPahoClientTest)  Time elapsed: 0.243 sec  <<< ERROR!
java.lang.NullPointerException: null
	at io.joynr.messaging.mqtt.paho.client.MqttPahoClientTest.getResourcePath(MqttPahoClientTest.java:158)
	at io.joynr.messaging.mqtt.paho.client.MqttPahoClientTest.mqttClientTestWithDisabledMessageSizeCheckWithTlsAndDefaultJksStore(MqttPahoClientTest.java:310)


Results :

Tests in error: 
  MqttPahoClientTest.mqttClientTestWithDisabledMessageSizeCheckWithTlsAndDefaultJksStore:310->getResourcePath:158 NullPointer

All users which follow this example Building joynr Java and common components will run into this problem. These errors don't prevent a successful build (-Dmaven.test.failure.ignore=true in docker/joynr-java/scripts/build/java-clean-build).

The required files have been added by commit [Java] support MQTT TLS connection (Nov 29, 2017).

Steps to reproduce

  • Delete the following files, if present, from java/messaging/mqtt/joynr-mqtt-client/src/test/resource:
    • catruststore.jks
    • catruststore.p12
    • clientkeystore.jks
    • clientkeystore.p12
  • Run the tests (replace FULL_PATH_TO_JOYNR_SOURCES and FULL_PATH_TO_MAVEN_DIRECTORY with the right values):
docker run -it --rm --sig-proxy -e DEV_UID="$(id -u)"  \
    -v <FULL_PATH_TO_JOYNR_SOURCES>:/data/src \
    -v <FULL_PATH_TO_MAVEN_DIRECTORY>:/home/joynr/.m2 \
    joynr-java \
    "mvn clean test -f /data/src/java/messaging/mqtt/joynr-mqtt-client/pom.xml -P no-license-and-notice,no-java-formatter,no-checkstyle -DskipTests=false -Dtest=MqttPahoClientTest"
  • Or use the long way (replace FULL_PATH_TO_JOYNR_SOURCES and FULL_PATH_TO_MAVEN_DIRECTORY with the right values):
docker run --rm --sig-proxy -e DEV_UID="$(id -u)"  \
    -v <FULL_PATH_TO_JOYNR_SOURCES>:/data/src \
    -v <FULL_PATH_TO_MAVEN_DIRECTORY>:/home/joynr/.m2 \
    joynr-java \
    /data/src/docker/joynr-java/scripts/build/java-clean-build

Cannot build joynr sources

I'm trying to build joynr with the docker images ,which were successfully built. But the call fails always, e.g. for Java:
docker run --rm --sig-proxy -e DEV_UID="$(id -u)"
-v /media/sf_nfo/joynr:/data/src
-v /media/sf_nfo/.m2:/home/joynr/.m2
joynr-java
/data/src/docker/joynr-java/scripts/build/java-clean-build

When i'm running on root i get:

useradd: UID 0 is not unique
chown: invalid user: 'joynr:joynr'
error: failed switching to "joynr": get supplementary groups Unable to find user joynr

So when i use another user or add a unique number, e.g. 1000 i get:

useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
/bin/bash: /home/joynr/.bashrc: No such file or directory
/bin/bash: /data/src/docker/joynr-java/scripts/build/java-clean-build: Permission denied

I'm running on Kali Linux 64bit mounted in a virtual box.
My joynr root directory is at /media/sf_nfo/joynr
My maven directory is at /media/sf_nfo/.m2

Do you have any idea what the error is? I checked passwd, no joynr user is created here.

Thanks a lot

Java: two test cases in MqttPahoClientTest result in an infinite loop

Problem

Test case mqttClientTestWithDisabledMessageSizeCheckWithTlsAndDefaultJksStore and mqttClientTestWithDisabledMessageSizeCheckWithTlsAndP12Store create an infinite loop.

If these tests are running without an additional mosquitto process with ssl enabled (listener on port 8883 + cert, cat and key file), each of these tests will result in an infinite loop. The following error is reported multiple times:

io.joynr.messaging.mqtt.paho.client.MqttPahoClient: MQTT Connect failed. Error code 32103
Unable to connect to server (32103) - java.net.ConnectException: Connection refused (Connection refused)

The mosquitto process, which is started by the test class, listens only on port 1883.

All users which follow this example Building joynr Java and common components will run into this problem. The problem described here is part of this problem: Building joynr Java failed

Steps to reproduce

Before running the commands, replace FULL_PATH_TO_JOYNR_SOURCES and FULL_PATH_TO_MAVEN_DIRECTORY with the right values.
The docker container can be "killed" with ctrl+c.

  • Run the following command for test case mqttClientTestWithDisabledMessageSizeCheckWithTlsAndDefaultJksStore:
docker run -it --rm --sig-proxy -e DEV_UID="$(id -u)"  \
    -v <FULL_PATH_TO_JOYNR_SOURCES>:/data/src \
    -v <FULL_PATH_TO_MAVEN_DIRECTORY>:/home/joynr/.m2 \
    joynr-java \
    "mvn clean test -f /data/src/java/messaging/mqtt/joynr-mqtt-client/pom.xml -P no-license-and-notice,no-java-formatter,no-checkstyle -DskipTests=false -Dtest=MqttPahoClientTest#mqttClientTestWithDisabledMessageSizeCheckWithTlsAndDefaultJksStore"
  • Run the following command for test case mqttClientTestWithDisabledMessageSizeCheckWithTlsAndP12Store:
docker run -it --rm --sig-proxy -e DEV_UID="$(id -u)"  \
    -v <FULL_PATH_TO_JOYNR_SOURCES>:/data/src \
    -v <FULL_PATH_TO_MAVEN_DIRECTORY>:/home/joynr/.m2 \
    joynr-java \
    "mvn clean test -f /data/src/java/messaging/mqtt/joynr-mqtt-client/pom.xml -P no-license-and-notice,no-java-formatter,no-checkstyle -DskipTests=false -Dtest=MqttPahoClientTest#mqttClientTestWithDisabledMessageSizeCheckWithTlsAndP12Store"

Solution

Run mosquitto process with ssl enabled (listener on port 8883 + required files).

In my environment I copied the mosquitto.conf from /docker/joynr-base to java/messaging/mqtt/joynr-mqtt-client/src/test/resources. And modified the startBroker method of the test class to load the configuration file mosquitto.conf:

//ProcessBuilder processBuilder = new ProcessBuilder(path + "mosquitto", "-p", Integer.toString(mqttBrokerPort));
	ProcessBuilder processBuilder = new ProcessBuilder(path + "mosquitto", "-c", getResourcePath("mosquitto.conf"));

Misleading error logs in Settings::fillEmptySettingsWithDefaults()

There is an error logged each time Settings::fillEmptySettingsWithDefaults() is called, if there are no default settings files found under the relative path "resources/<default_settings_filename>".
This error is logged also if a settings file is found under CMAKE_JOYNR_SETTINGS_INSTALL_DIR.

As the constructors of WebSocketSettings and others call Settings::fillEmptySettingsWithDefaults(), each time one of those settings instances is created, this error is logged.

[error] Settings Could not read settings file: resources/default-websocket.settings: cannot open file

Please remove this log message by checking if the paths exists before, or reduce the log-level.

Generator build failed

Hi,
I'd like to ask regarding building generator.

I used to build JoynR in a server A, with aids of scripts 'cpp-generate.sh' and 'cpp-clean-build.sh'.
And I have opportunity to setup environment in another server, B.
When I run 'cpp-generate.sh' in docker, I get following error in building generator-framework and generation fails:

[INFO] ------------------------------------------------------------------------
[INFO] Building io.joynr.tools.generator:generator-framework 1.6.2
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ generator-framework ---
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:display-info (display-platform-info) @ generator-framework ---
[INFO] Maven Version: 3.3.9
[INFO] JDK Version: 1.8.0_141 normalized as: 1.8.0-141
[INFO] OS Info: Arch: amd64 Family: unix Name: linux Version: 4.4.0-140-generic
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (enforce-maven-and-java-version) @ generator-framework ---
[INFO]
[INFO] --- maven-antrun-plugin:1.7:run (default) @ generator-framework ---
[INFO] Executing tasks

main:
[INFO] Executed tasks
[INFO]
[INFO] --- build-helper-maven-plugin:1.10:add-source (add-source) @ generator-framework ---
[INFO] Source directory: /data/src/tools/generator/framework/src/main/xtend-gen added.
[INFO]
[INFO] --- xtend-maven-plugin:2.11.0:compile (default) @ generator-framework ---
[WARNING] Compilation of stubs had errors.
[ERROR]
ERROR: JoynrGeneratorExtensions.xtend - /data/src/tools/generator/framework/src/main/xtend/io/joynr/generator/templates/util/JoynrGeneratorExtensions.xtend
23: io.joynr.generator.templates.BroadcastTemplate cannot be resolved to a type.
[ERROR]
ERROR: JoynrGeneratorExtensions.xtend - /data/src/tools/generator/framework/src/main/xtend/io/joynr/generator/templates/util/JoynrGeneratorExtensions.xtend
28: io.joynr.generator.templates.TypeDefTemplate cannot be resolved to a type.
[ERROR]
ERROR: JoynrGeneratorExtensions.xtend - /data/src/tools/generator/framework/src/main/xtend/io/joynr/generator/templates/util/JoynrGeneratorExtensions.xtend
205: BroadcastTemplate cannot be resolved to a type.
[ERROR]
ERROR: JoynrGeneratorExtensions.xtend - /data/src/tools/generator/framework/src/main/xtend/io/joynr/generator/templates/util/JoynrGeneratorExtensions.xtend
259: TypeDefTemplate cannot be resolved to a type.
[INFO] ------------------------------------------------------------------------

When not using docker, i.e., just run 'mvn clean install -P no-license-and-notice,no-java-formatter,no-checkstyle -DskipTests' at JoynR top dir, it shows the same error.

I try to find out why, then I find some interesting.
I tried to move '/home/user/.m2' from server A and run 'mvn' command, it also fails to generate. When I recover '/home/user/.m2', it works again.
And I copy '/home/user/.m2' from server A to server B, and it works in server B.
So, I'm generating code in server B as copying .m2 from server A as workaround, but it is not clear solution.

I don't know anything about maven or java, but in my opinion, it seems that settings like pom.xml is missing something comparing with past. Could you have a look at this problem, please?

Misleading exception message "No @JoynrVersion found on interface" while proxy creation

Hi all,

as I was creating some integration tests for a joynr application, I came over the following scenario with Joynr Version 1.2.0.

I created a backend proxy like:

this.backendProxy = runtime.getProxyBuilder(
           "my.domain", 
           MyServiceBackendSync.class)
       .build();

and received the exception No @JoynrVersion found on interface [...]

I found out that I just used the backend sync class instead of the backend proxy class. So as I exchanged MyServiceBackendSync.class with MyServiceBackendProxy.class everything was fine.

Nevertheless, to realize that, it took me some time. Therefore I would like to suggest, that the ProxyBuilderDefaultImpl checks whether the given interface class is really a proxy specification before running into the exception thrown from the VersionUtil.
From my perspective, I cannot suggest a solution because the BackendProxy classes seem to have no common interface which one could check.

As this is suggestion is more about convenience, it might won't be on your prio list for a long time but maybe sometimes in the future. =)

EDIT: To be honest, the exception is not misleading at all, as there is really no @JoynrVersion on the interface.
But maybe a message like "ProxyBuilderException: The given interface class does not define a Proxy." would improve the debugging.

BR,
Sven

[Java] [Joynr 1.6.5] Cannot implement the Keyword arbitration strategy

Hi, I tried to implement the Keyword arbitration strategy, unfortunately I am stuck ... Can you please help me and provide support what I missed?

The LastSeen and HighestPriority works fine, but Keyword arbitration strategy ...

Provider:

@OverRide
public void run() {
// global variable ...
provider = new BatteryStateProvider();

ProviderQos providerQos = new ProviderQos();
CustomParameter[] qosParameters = {// "keyword"
            new CustomParameter(ArbitrationConstants.KEYWORD_PARAMETER, "keyword_joynr_sdsdsd")
};
providerQos.setCustomParameters(qosParameters);
providerQos.setScope(ProviderScope.GLOBAL);

runtime.registerProvider("joynr-infrastructure", provider, providerQos);

// timer task to send battery data
SendBatteryData task = new SendBatteryData(VIN, provider);
    Timer timer = new Timer(true);
    timer.scheduleAtFixedRate(task, 0, 5 * 1000);

    while (true) {
        // just to keep app running
    }

}

Consumer:

@OverRide
public void run() {
long discoveryTimeout = 20000L;
DiscoveryQos discoveryQos = new DiscoveryQos(discoveryTimeout,
ArbitrationStrategy.Keyword, Long.MAX_VALUE);
discoveryQos.setDiscoveryScope(DiscoveryScope.LOCAL_AND_GLOBAL);
discoveryQos.addCustomParameter(ArbitrationConstants.KEYWORD_PARAMETER, "keyword_joynr_sdsdsd");

MessagingQos messagingQos = new MessagingQos();
messagingQos.setTtl_ms(30000L);

ProxyBuilder<BatteryStateProxy> batteryProxyBuilder = runtime.getProxyBuilder("joynr-infrastructure",
            BatteryStateProxy.class);

MulticastSubscriptionQos executeServiceSubscriptionQos = new MulticastSubscriptionQos();
    executeServiceSubscriptionQos.setValidityMs(10 * 6000 * 20);

try {
batteryProxy = batteryProxyBuilder.
setMessagingQos(messagingQos). // optional
setDiscoveryQos(discoveryQos). // optional
build();
subscriptionFutureBatteryState = subscribeToBatteryState(executeServiceSubscriptionQos);
} catch (DiscoveryException e) {
LOG.error("The consumer could not find any provider. {}", e);
} catch (JoynrCommunicationException e) {
LOG.error("The consumer could not send message. {}", e);
}

....
}

Result:
2019-02-04 15:45:34,725 [ERROR] DispatcherImpl: Error parsing payload. msgId: 6a1b97b0-d7cd-4c4a-9d62-310395b37bda. from: capabilitiesdirectory_participantid to: 67ee9c03-8f41-4dd7-b2d1-d7b06aa08bb7. Reason: Could not resolve type id 'io.joynr.capabilities.CustomParameterPersisted' as a subtype of [simple type, class joynr.types.CustomParameter]: no such class found
at [Source: (StringReader); line: 1, column: 674] (through reference chain: joynr.Reply["response"]->java.lang.Object[][0]->joynr.types.GlobalDiscoveryEntry["qos"]->joynr.types.ProviderQos["customParameters"]->java.lang.Object[][0]). Discarding joynr message.

and after the timeout error:
2019-02-04 15:45:54,513 [ERROR] ProxyBuilderDefaultImpl: error creating proxy: interface: battery/BatteryState domains: [joynr-infrastructure], error: ttl expired on: 04/02 15:45:54:054
2019-02-04 15:45:54,543 [ERROR] DispatcherImpl: Error processing request: Request: lookup, requestReplyId: 1eb38f70-facd-420b-ba0e-4c128bf05e47, params: [[Ljava.lang.String;@2695dff2, battery/BatteryState, DiscoveryQos [cacheMaxAge=0, discoveryTimeout=20000, discoveryScope=LOCAL_AND_GLOBAL, providerMustSupportOnChange=false]]
joynr.exceptions.ProviderRuntimeException: io.joynr.exceptions.JoynrTimeoutException: ttl expired on: 04/02 15:45:54:054

Cay you please help me to understand what is wrong here? If you can please provide an example how to implement the Keyword arbitration strategy.

Thank you.

Missing Franca dependencies on 1.4.0

Hi,

I am trying to create some docker images from my Joynr based applications but when running mvn install in the docker container the Franca dependencies are not retrieved. I first noticed this yesterday and waited to see if this is a temporary issue.

Failed to execute goal io.joynr.tools.generator:joynr-generator-maven-plugin:1.4.0:generate (generate-java) on project provider_api: Execution generate-java of goal io.joynr.tools.generator:joynr-generator-maven-plugin:1.4.0:generate failed: Plugin io.joynr.tools.generator:joynr-generator-maven-plugin:1.4.0 or one of its dependencies could not be resolved: The following artifacts could not be resolved: org.franca:org.franca.core.dsl:jar:0.10.0, org.franca:org.franca.deploymodel.dsl:jar:0.10.0, org.franca:org.franca.core:jar:0.10.0: Could not find artifact org.franca:org.franca.core.dsl:jar:0.10.0 in central (https://repo.maven.apache.org/maven2)

There seems to be no Franca folder on the Maven Central repository (not sure if there was one before).
If I rename the Franca folder in my local .m2 repository a new one is created and populated but there are no .jar or .pom files for any of the artifacts .

franca

I know this is a Franca artifacts issue but could be that Joynr framework needs a reference update.

For Joynr 1.5.0 the joynr backend services are also missing from the repository :

[ERROR] Failed to execute goal on project radio-app: Could not resolve dependencies for project io.joynr.examples:radio-app:jar:1.5.0: The following artifacts could not be resolved: io.joynr.java.messaging.bounceproxy:single-bounceproxy:war:1.5.0, io.joynr.java.backend-services:discovery-directory-jee:war:1.5.0, io.joynr.java.backend-services:domain-access-controller-jee:war:1.5.0: Failure to find io.joynr.java.messaging.bounceproxy:single-bounceproxy:war:1.5.0 in https://repo.maven.apache.org/maven2

If I comment out these dependencies I get the same Franca missing artifacts problem as described above (with Franca version 0.13.0).

Thanks,
Andrei

Error while building the Joynr Docker image(MoC0Crw)

Hi all,

I am following the tutorials, and on one of the first steps to build the Joynr Docker image the following error occurs:

sudo docker run --rm --sig-proxy -e DEV_UID="$(id -u)" \

-v /home/jaehoon88.lee/joynr_master/joynr:/data/src \
-v /usr/share/maven:/home/joynr/.m2 \
-v /home/jaehoon88.lee/joynr_master/joynr/build:/data/build \
joynr-cpp-gcc \
/data/src/docker/joynr-cpp-base/scripts/build/cpp-clean-build.sh --jobs 4

useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.

========================================
= CPP CLEAN BUILD GCOV: OFF JOBS: 4

========================================
= Enable core dumps

========================================
= ENVIRONMENT

HOSTNAME=a45d880b051f
INSTALL_DIR=/data/install
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/payara41/glassfish/bin
SRC_DIR=/data/src
REFRESHED_AT=2017-02-13
PWD=/home/joynr
FGC=f24
SHLVL=2
HOME=/home/joynr
DEV_UID=1033
TINI_VERSION=v0.13.1
DISTTAG=f24docker
BUILD_DIR=/data/build
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig::/usr/local/lib64/pkgconfig
GOSU_VERSION=1.3
_=/usr/bin/env
ADDITIONAL_CMAKE_ARGS is

========================================
= CLEAN BUILD DIRECTORY

  • cmake -DENABLE_GCOV=OFF -DPYTHON_EXECUTABLE=/usr/bin/python -DJOYNR_SERVER=localhost:8080 -DCMAKE_BUILD_TYPE=Debug -DENABLE_CLANG_FORMATTER=ON -DBUILD_TESTS=ON -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_PREFIX=/usr -DJOYNR_ENABLE_ACCESS_CONTROL:BOOL=ON /data/src/cpp

========================================
= RUN CMAKE

-- The C compiler identification is GNU 6.3.1
-- The CXX compiler identification is GNU 6.3.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- variable CMAKE_MODULE_PATH=/data/src/cpp/CMake
-- variable CMAKE_PREFIX_PATH=
-- variable CMAKE_VERSION=3.9.0
-- variable CMAKE_ROOT=/usr/share/cmake
-- variable CMAKE_SOURCE_DIR=/data/src/cpp
-- variable CMAKE_CURRENT_SOURCE_DIR=/data/src/cpp
-- variable BUILD_PACKAGE_SHLIB=
-- variable BUILD_PACKAGE_BIN=
-- variable BUILD_PACKAGE_DEV=
-- variable BUILD_PACKAGE_LIBRARY=
-- variable BUILD_PACKAGE_TESTS=
-- ----------------- INSTALL LOCATIONS -----------------
-- CMAKE_INSTALL_PREFIX = /usr
-- CMAKE_INSTALL_BINDIR = bin
-- INSTALL_TEST_DIR = bin
-- CMAKE_INSTALL_LIBDIR = lib64
-- INSTALL_CMAKE_DIR = lib64/cmake/joynr
-- CMAKE_INSTALL_INCLUDEDIR = include
-- CMAKE_INSTALL_SYSCONFDIR = /etc
-- CMAKE_INSTALL_FULL_SYSCONFDIR = /etc
-- JOYNR_INSTALL_FULL_SYSCONFDIR = /etc/joynr


-- option ENABLE_CCACHE=OFF
-- option GENERATE_SOURCES=OFF
-- option USE_PLATFORM_SPDLOG=ON
-- option USE_PLATFORM_MUESLI=ON
-- option USE_PLATFORM_MOSQUITTO=ON
-- option USE_PLATFORM_GTEST_GMOCK=ON
-- option USE_PLATFORM_WEBSOCKETPP=ON
-- option JOYNR_ENABLE_DLT_LOGGING=OFF
-- option JOYNR_ENABLE_STDOUT_LOGGING=ON
-- option USE_PLATFORM_SMRF=ON
-- option USE_PLATFORM_MOCOCRW=ON
-- option BUILD_TESTS=ON
-- option ENABLE_GCOV=OFF
-- option ENABLE_DOXYGEN=ON
-- option BUILD_CLUSTER_CONTROLLER=ON
-- option BUILD_SHARED_LIBS=ON
-- option ENABLE_CLANG_FORMATTER=ON
-- CLANG_FORMAT_PATH=/usr/local/bin/clang-format
-- option ENABLE_INCLUDE_WHAT_YOU_USE=OFF
-- option ENABLE_CLANG_TIDY=OFF
-- variable JOYNR_SERVER_HOST=localhost
-- variable CMAKE_BUILD_TYPE=Debug
-- variable JOYNR_SERVER_HTTP_PORT=8080
-- variable JOYNR_SERVER_MQTT_PORT=1883
-- variable JOYNR_SERVER_MQTT_TLS_PORT=8883
-- variable JOYNR_BINARY_DIR=/data/build/joynr/bin
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.11") found components: doxygen missing components: dot
-- doxygen DOXYGEN_FOUND=YES
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Boost version: 1.60.0
-- Found the following Boost libraries:
-- system
-- filesystem
-- thread
-- chrono
-- date_time
-- atomic
-- variable Boost_FOUND=1
-- variable Boost_INCLUDE_DIRS=/usr/include
-- variable Boost_LIBRARY_DIRS=/usr/lib64
-- variable Boost_LIBRARIES=/usr/lib64/libboost_system.so;/usr/lib64/libboost_filesystem.so;/usr/lib64/libboost_thread.so;/usr/lib64/libboost_chrono.so;/usr/lib64/libboost_date_time.so;/usr/lib64/libboost_atomic.so
-- variable Boost_VERSION=1.60.0
-- ############ Import: cURL ############
-- Found CURL: /usr/lib64/libcurl.so (found version "7.47.1")
-- variable CURL_FOUND=TRUE
-- variable CURL_VERSION_STRING=7.47.1
-- variable CURL_INCLUDE_DIRS=/usr/include
-- variable CURL_LIBRARIES=/usr/lib64/libcurl.so
-- cURL::curl target not defined. Creating IMPORTED target.
-- CMAKE_GENERATOR=Unix Makefiles
-- compiler CMAKE_C_COMPILER=/usr/bin/cc
-- compiler CMAKE_C_COMPILER_ID=GNU
-- compiler CMAKE_C_COMPILER_VERSION=6.3.1
-- compiler CMAKE_CXX_COMPILER=/usr/bin/c++
-- compiler CMAKE_CXX_COMPILER_ID=GNU
-- compiler CMAKE_CXX_COMPILER_VERSION=6.3.1
-- variable spdlog_INCLUDE_DIRS=/usr/local/include/usr/local/include
-- RapidJSON found. Headers: /usr/local/include
-- variable muesli_INCLUDE_DIRECTORIES= /usr/local/include;/usr/local/include;/usr/local/include
CMake Error at CMakeLists.txt:700 (find_package):
Could not find a package configuration file provided by "MoCOCrW"
(requested version 0.1.0) with any of the following names:

MoCOCrWConfig.cmake
mococrw-config.cmake

Add the installation prefix of "MoCOCrW" to CMAKE_PREFIX_PATH or set
"MoCOCrW_DIR" to a directory containing one of the above files. If
"MoCOCrW" provides a separate development package or SDK, be sure it has
been installed.

-- Configuring incomplete, errors occurred!

Could you help me debug this issue? It's really related to my environment or it is something missing in the image configuration?

Thanks and regards.

Gradle plugin requires Android in non-android project

Hi,

I'm trying to configure the gradle plugin in a pure Java application and the build fails because says it requires android tools gradle.

Does this requirement makes sense?
In joynr/tools/generator/joynr-generator-gradle-plugin/build.gradle
implementation 'com.android.tools.build:gradle:4.0.0'

cpp docker build doesn't work

After run

sudo docker run --rm --sig-proxy -e DEV_UID="$(id -u)"
-v <FULL_PATH_TO_JOYNR_SOURCES>:/data/src
-v <FULL_PATH_TO_MAVEN_DIRECTORY>:/home/joynr/.m2
-v <FULL_PATH_TO_BUILD_DIRECTORY>:/data/build
joynr-cpp-gcc
/data/src/docker/joynr-cpp-base/scripts/build/cpp-clean-build.sh --jobs 4

CMake Error at CMakeLists.txt:732 (find_package):
Could not find a package configuration file provided by "MoCOCrW"
(requested version 0.1.0) with any of the following names:

MoCOCrWConfig.cmake
mococrw-config.cmake

Add the installation prefix of "MoCOCrW" to CMAKE_PREFIX_PATH or set
"MoCOCrW_DIR" to a directory containing one of the above files. If
"MoCOCrW" provides a separate development package or SDK, be sure it has
been installed.

-- Configuring incomplete, errors occurred!

Building joynr Java and common components does not work on Windows

I am using the docker toolbox for Windows 10 (64 Bit). Either the instructions on the page "Building joynr Java and common components" are incorrect / incomplete or there is an error in the scripts. Anyway the last step does not work.

Building the docker image with ./joynr-docker build does work fine. But when I enter:
docker run --rm --sig-proxy -e DEV_UID="$(id -u)" -v /c/Projekte/joynr:/data/src -v /c/Users/fso/.m2:/home/joynr/.m2 joynr-java /data/src/docker/joynr-java/scripts/build/java-clean-build
(where C:\Projekte\joynr is my joynr directory and C:\Users\fso.m2 is my local maven repository), the result is:
C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: Container command '/data/scripts/boot2user.sh' not found or does not exist..

Any ideas? Did I miss anything?

what is FULL_PATH_TO_HOST_MAVEN_DIRECTORY

Hi,
I try to build joynr-java, but I am confusing sure about <FULL_PATH_TO_HOST_MAVEN_DIRECTORY>. it means maven home dir or repository dir?
and when I build joynr-java, the mosquitto and payara running is required?

$ docker run --rm --sig-proxy -e DEV_UID="$(id -u)" \ -v <FULL_PATH_TO_JOYNR_SOURCES>:/data/src \ -v <FULL_PATH_TO_MAVEN_DIRECTORY>:/home/joynr/.m2 \ joynr-java \ /data/src/docker/joynr-java/scripts/build/java-clean-build

[Java] Register multiple providers using the same domain

Hi,

I would like to register multiple providers using the same domain. My problem is, that only the last started provider can communicate with my consumer.

I have already tried multiple ways to resolve my problem, but none of the following approaches seem to work:

  1. using keyword arbitration strategy, specifying the CustomParameter as in the consumer:
discoveryQos.setArbitrationStrategy(ArbitrationStrategy.Keyword);
discoveryQos.addCustomParameter(ArbitrationConstants.KEYWORD_PARAMETER, "keyword");

as in the provider:

CustomParameter customParameter =
                new CustomParameter(ArbitrationConstants.KEYWORD_PARAMETER, "keyword");
CustomParameter[] params = {customParameter};
providerQos.setCustomParameters(params);
  1. trying to register multiple provider domains
 final Properties appConfig = new Properties();
 appConfig.setProperty(APP_CONFIG_PROVIDER_DOMAIN, providerDomainOne);
 appConfig.setProperty(APP_CONFIG_PROVIDER_DOMAIN1, providerDomainTwo);
Set<String> domains = new HashSet<>();
domains.add(providerDomainOne);
domains.add(providerDomainTwo);
ProxyBuilder<<Interface>Proxy> proxyBuilder =
		runtime.getProxyBuilder(domains, <Interface>Proxy.class);
  1. using custom arbitration function:
    I returned the whole list.

Could you help me finding a solution how to register multiple providers using a single domain?

Thanks,
Melinda

Release Notes for JOYnr 0.25.X

Hello JOYnr Developer,

please append the release notes for JOYnr 0.25.x, so the developer, who should integrate this version know whats changed and if there are some tasks to do.

Thank you,
Br
Philipp Beyerlein

build joynr-java failed

Hi, I try to build joynr java against guide: "https://github.com/bmwcarit/joynr/blob/master/wiki/java_building_joynr.md"
but error got:

INFO] clustercontroller-inprocess-runtime ................ SUCCESS [ 2.149 s]
[INFO] io.joynr.java.messaging:mqtt ....................... SUCCESS [ 0.842 s]
[INFO] io.joynr.java.messaging.mqtt:joynr-mqtt-client ..... FAILURE [ 46.420 s]
[INFO] io.joynr.java:jeeintegration ....................... SKIPPED
[INFO] io.joynr.java:backend-services ..................... SKIPPED

and the exception message is "io.joynr.messaging.mqtt.paho.client.MqttPahoClientTest.mqttClientTLSCreationFailsIfKeystorePasswordIsWrongOrMissing"

My build env: MacOS, docker engine 18.09

How to use TLS on Websocket

We are trying to check TLS operation on websocket.

But, I didn't find TLS handshake , and encrypted data in pcap file.
(I checked working fine only TCP connection)

Test Environment

MyRadioProviderApplication <-(WebSocket)-> JoynClusterController(standalone)

  • JoynrClusterController
    default-websocket.settings
    [websocket]
    cluster-controller-messaging-url=wss://localhost:4243
    reconnect-sleep-time-ms=100
    tls-encryption=true

certificate-authority-pem-filename=/home/jaehoon88lee/work/bmw/joynr_build/joynr/certs/ca.cert.pem
certificate-pem-filename=/home/jaehoon88lee/work/bmw/joynr_build/joynr/certs/server.cert.pem
private-key-pem-filename=/home/jaehoon88lee/work/bmw/joynr_build/joynr/private/server.key.pem

default-messaging.settings
[cluster-controller]
ws-tls-port=4243
ws-port=4242

certificate-authority-pem-filename=/home/jaehoon88lee/work/bmw/joynr_build/joynr/certs/ca.cert.pem
certificate-pem-filename=/home/jaehoon88lee/work/bmw/joynr_build/joynr/certs/server.cert.pem
private-key-pem-filename=/home/jaehoon88lee/work/bmw/joynr_build/joynr/certs/server.key.pem

mqtt-certificate-authority-pem-filename=/home/jaehoon88lee/work/bmw/joynr_build/joynr/certs/ca.cert.pem
mqtt-certificate-pem-filename=/home/jaehoon88lee/work/bmw/joynr_build/joynr/certs/client.cert.pem
mqtt-private-key-pem-filename=/home/jaehoon88lee/work/bmw/joynr_build/joynr/private/client.key.pem
mqtt-tls-enabled=true

  • MyRadioProviderApplication.cpp

following code is that register keychain to runtime.
....
// Init Ket Chain
std::shared_ptrjoynr::IKeychain keyChain;
bool useKeyChain = true;
if (useKeyChain) {
DummyKeyChainParameters keyChainInputParams;
keyChainInputParams.rootCertFileName = "/home/jaehoon88lee/work/bmw/joynr_build/joynr/certs/ca.cert.pem";
keyChainInputParams.pubCertFileName = "/home/jaehoon88lee/work/bmw/joynr_build/joynr/certs/client.cert.pem";
keyChainInputParams.privKeyFileName = "/home/jaehoon88lee/work/bmw/joynr_build/joynr/private/client.key.pem";
keyChainInputParams.privKeyPassword = "";
keyChain = DummyKeychainImpl::createFromPEMFiles(keyChainInputParams);
std::shared_ptr runtime =
JoynrRuntime::createRuntime(pathToLibJoynrSettings, pathToMessagingSettings, keyChain);
}
...
default-websocket.settings(radio)
[websocket]
cluster-controller-messaging-url=wss://localhost:4243
reconnect-sleep-time-ms=100
tls-encryption=true

I think setting file seems to be a problem.
Could you give me a guide for testing TLS on Websocket?
(Note that, I check working fine TLS connection between JoynrClustercontroller and MQTT Daemon(mosquitto)

Thank you ~

Error while building the Joynr Docker image

Hi all,

I am following the tutorials, and on one of the first steps to build the Joynr Docker image the following error occurs:

➜ docker git:(master) ./joynr-docker build
after command:
in params:
Sending build context to Docker daemon 20.99kB
Step 1/28 : FROM fedora:24
---> 971e0f0a8b71
Step 2/28 : ENV REFRESHED_AT 2017-02-13
---> Using cache
---> 544198ff1457
Step 3/28 : RUN rm /etc/localtime && ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
---> Using cache
---> eed254826211
Step 4/28 : RUN dnf update -y && dnf install -y autoconf automake cmake corkscrew dbus-x11 expat-devel file gcc-c++ gdb git glibc.i686 icecream libcurl libcurl-devel libstdc++.i686 libtool libxcb libxcb-devel libX11-devel libXi-devel libXrender-devel openssl openssl-devel patch perl-version tar unzip wget which xcb-util xcb-util-devel xcb-util--devel zlib.i686 java-1.8.0-openjdk xz maven hostname.x86_64 clang libcxx-devel && dnf groupinstall -y 'Development Tools' && dnf clean all
---> Running in b7a02b717f0c
Error: Failed to synchronize cache for repo 'updates'
The command '/bin/sh -c dnf update -y && dnf install -y autoconf automake cmake corkscrew dbus-x11 expat-devel file gcc-c++ gdb git glibc.i686 icecream libcurl libcurl-devel libstdc++.i686 libtool libxcb libxcb-devel libX11-devel libXi-devel libXrender-devel openssl openssl-devel patch perl-version tar unzip wget which xcb-util xcb-util-devel xcb-util-
-devel zlib.i686 java-1.8.0-openjdk xz maven hostname.x86_64 clang libcxx-devel && dnf groupinstall -y 'Development Tools' && dnf clean all' returned a non-zero code: 1

I don't really know if it's a error in the build itself or a problem with my environment, I am using a Mac behind a proxy, below the output of my docker info:

➜ docker git:(master) docker info
Containers: 6
Running: 0
Paused: 0
Stopped: 6
Images: 4
Server Version: 17.09.1-ce
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 06b9cb35161009dcb7123345749fef02f7cea8e0
runc version: 3f2f8b84a77f73d38244dd690525642a72156c64
init version: 949e6fa
Security Options:
seccomp
Profile: default
Kernel Version: 4.9.49-moby
Operating System: Alpine Linux v3.5
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 1.952GiB
Name: moby
ID: VBL2:Y2QH:LFWD:KOFW:4OHF:DGSX:LBVJ:D7QV:E4DK:HFEI:AQRV:UNQ6
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors: 19
Goroutines: 31
System Time: 2018-01-12T11:16:30.165006687Z
EventsListeners: 1
Http Proxy: http://xxxxx:yyyyyy@host:8080
Https Proxy: http://xxxxx:yyyyyy@host:8080
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false

I replaced the data about proxies as they contain my user name and password, but trust me on this, they are correct. I can download machines and run commands, for example, if I run docker run -it alpine env, that's the output:

➜ docker git:(master) docker run -it alpine env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=710f886eecc8
TERM=xterm
HTTP_PROXY=http://xxxxx:yyyyyy@host:8080
http_proxy=http://xxxxx:yyyyyy@host:8080
HTTPS_PROXY=http://xxxxx:yyyyyy@host:8080
https_proxy=http://xxxxx:yyyyyy@host:8080
HOME=/root

Could you help me debug this issue? It's really related to my environment or it is something missing in the image configuration?

Thanks and regards.

[Java] [Joynr 1.6.1] Register a new provider after the consumer has started

Hi,

I'm trying to have a running consumer that would collect data from any new provider that would use a domain / interface combination known by the consumer.

I've build a consumer and a provider and I would want to register multiple provider instances (so using the same domain / interface) running on different machines / devices.
I've written a custom ArbitrationStrategyFunction that would return all the discovery entries for a given domain / interface combination.

Steps:

  • start 2 instances of the provider on 2 different machines (each provider with a different participantId)
  • start the consumer -> the custom arbitration strategy function will return both entries for the 2 providers and the consumer will start getting data from them
  • start a new instance of the provider - the consumer won't connect to this provider
  • restart the consumer -> the custom arbitration strategy function will return all 3 discovery entries
    for the providers and the consumer will start getting data from all of them

Is there a way for the consumer to subscribe to a provider registered by the Discovery service after the consumer started ? Can the Discovery service update the consumer on a new provider being available ?

Thanks,
Andrei

[Java] scripts with invalid shebang

build joynr java failed

Hi, I try to build joynr java against guide: "https://github.com/bmwcarit/joynr/blob/master/wiki/java_building_joynr.md"
but error got:

[INFO] Reactor Summary: [INFO] [INFO] io.joynr:joynr 1.10.0 .............................. SUCCESS [03:12 min] [INFO] io.joynr:tools ..................................... SUCCESS [ 4.558 s] [INFO] io.joynr.tools:build-resources ..................... SUCCESS [ 54.592 s] [INFO] io.joynr.tools:generator ........................... SUCCESS [ 0.938 s] [INFO] io.joynr.tools.generator:generator-framework ....... SUCCESS [03:39 min] [INFO] io.joynr.tools.generator:cpp-generator ............. SUCCESS [ 42.909 s] [INFO] io.joynr.tools.generator:java-generator ............ SUCCESS [ 28.307 s] [INFO] io.joynr.tools.generator:js-generator .............. SUCCESS [ 19.167 s] [INFO] io.joynr.tools.generator:joynr-generator-gradle-plugin FAILURE [22:23 min] [INFO] io.joynr.tools.generator:joynr-generator-maven-plugin SKIPPED [INFO] io.joynr:basemodel ................................. SKIPPED
and the exception message is "Downloading https://services.gradle.org/distributions/gradle-5.4.1-all.zip
...............................................................................................................
Exception in thread "main" javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLException: SSL peer shut down incorrectly"

My build env: MacOS, docker engine 18.09

Joynr Android Runtime problem

We are new in Joynr environment and we are trying to configure Android Runtime.

The build process seems to be fine and we are able to create through eclipse (neon) the android-location-provider and android-location-consumer apks.

We are not able to have the apks up&running
The android-location-consumer crashes when we tap the "Create Joynr Proxy" button but we have an "joynr runtime not started" error when application starts.
Attached logcat report.

In the android-location-provider when we tap the "Start Joynr Runtime" button we have actually a "joynr runtime started" message but application crashes when we press "Register Location Provider"
Attached logcat report.

We wonder if we have all required dependencies installed on android device and if the java build process it's enough to have a complete joynr android runtime environment or if we need some specific action for android application.

NOTE: looking at Building Joynr Java it seems to us that running
cd /docker
/docker$ ./joynr-docker build
includes the android image build which is listed among the available images

Are we missing anything?

Thanks in advance
android-location-provider.error.txt
android-location-consumer.error.txt

Regards
Alex, Domenico

SSL Properties

Hello,

we must use SSL for the communication between Joynr and an MQTT broker instace. To enable SSL, we added the following properties to our Joynr properties (@JoynrProperties):

PROPERTY_KEY_MQTT_KEYSTORE_PATH
PROPERTY_KEY_MQTT_TRUSTSTORE_PATH
PROPERTY_KEY_MQTT_KEYSTORE_PWD
PROPERTY_KEY_MQTT_TRUSTSTORE_PWD

The properties are set correctly (I can see that when I set a breakpoint in DefaultJoynrRuntimeFactory). However, when the SSL properties are injected in MqttPahoClientFactory, the default system properties (e.g., PROPERTY_KEY_MQTT_TRUSTSTORE_PWD=changeit) are used instead. This only happens for the SSL properties.

Have somebody any idea where the problem is?

Thanks!

Building joynr Java failed

For me # ./joynr-docker build working fine and when i trying to run the following command
docker run --rm --sig-proxy -e DEV_UID="$(id -u)"
-v <FULL_PATH_TO_JOYNR_SOURCES>:/data/src
-v <FULL_PATH_TO_MAVEN_DIRECTORY>:/home/joynr/.m2 \
joynr-java
/data/src/docker/joynr-java/scripts/build/java-clean-build ,that time i am getting the error this type of error
ERROR:-
useradd: UID 0 is not unique
chown: invalid user: 'joynr:joynr'
error: failed switching to "joynr": get supplementary groups Unable to find user joynr

2.After removing the [ -e DEV_UID="$(id -u)" ] from the above command it is building, but after some time it is showing below error and same things repeated .
ERROR:-
[ERROR] io.joynr.messaging.mqtt.paho.client.MqttPahoClient: MQTT Connect failed. Error code 32103

Please give some suggestions on the above issue.
You can follow to this (link:-https://github.com/bmwcarit/joynr/blob/master/wiki/java_building_joynr.md)

Double provider register in ClusteControllerRuntime

final boolean awaitGlobalRegistration = false;
capabilitiesRegistrar.registerProvider(systemServicesDomain,
localCapabilitiesDirectory,
providerQos,
new String[]{},
awaitGlobalRegistration);
capabilitiesRegistrar.registerProvider(systemServicesDomain,
routingProvider,
providerQos,
new String[]{},
awaitGlobalRegistration);

the codes for register duplicated itself , it does not make any sense

Example radio-node npm install not working

I tried to initialize the example node radio app by cloning the git repository (master branch) followed the README in examples\radio-node.

  1. mvn install produced BUILD SUCCESS
  2. When running npm install I got the following error:
C:\workspace\github\bmwcarit\joynr\examples\radio-node>npm install

> [email protected] preinstall C:\workspace\github\bmwcarit\joynr\examples\radio-node
> npm install ../../javascript/libjoynr-js/target/node-classes

npm ERR! addLocal Could not install C:\workspace\github\bmwcarit\joynr\javascript\libjoynr-js\target\node-classes
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "../../javascript/libjoynr-js/target/node-classes"
npm ERR! node v7.4.0
npm ERR! npm  v4.0.5
npm ERR! path C:\workspace\github\bmwcarit\joynr\javascript\libjoynr-js\target\node-classes
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall open

npm ERR! enoent ENOENT: no such file or directory, open 'C:\workspace\github\bmwcarit\joynr\javascript\libjoynr-js\target\node-classes'
npm ERR! enoent ENOENT: no such file or directory, open 'C:\workspace\github\bmwcarit\joynr\javascript\libjoynr-js\target\node-classes'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! Please include the following file with any support request:
npm ERR!     C:\workspace\github\bmwcarit\joynr\examples\radio-node\npm-debug.log

npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! node v7.4.0
npm ERR! npm  v4.0.5
npm ERR! code ELIFECYCLE
npm ERR! [email protected] preinstall: `npm install ../../javascript/libjoynr-js/target/node-classes`
npm ERR! Exit status 4294963238
npm ERR!
npm ERR! Failed at the [email protected] preinstall script 'npm install ../../javascript/libjoynr-js/target/node-classes'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the radio-node package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     npm install ../../javascript/libjoynr-js/target/node-classes
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs radio-node
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls radio-node
npm ERR! There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?

npm ERR! Please include the following file with any support request:
npm ERR!     C:\workspace\github\bmwcarit\joynr\examples\radio-node\npm-debug.log

[Java] java-android-clean-build - generating of keystores/truststores breaks the maven build

The script docker/joynr-android/scripts/build/java-android-clean-build runs with set -e, which means exit immediately if a command exits with a non-zero status. Running this script again, without deleting the keystores/truststores, will generate the following error and abort the whole script:

keytool error: java.lang.Exception: Certificate not imported, alias <mykey> already exists

Therefore it isn't possible to do a clean maven build again with the current implementation.

Another problem with the keytool part in this script is, that the following lines:

require an additional -noprompt, otherwise the following output is printed to the console if the script runs again:

Existing entry alias mykey exists, overwrite? [no]:  keytool error: java.lang.NullPointerException
Existing entry alias 1 exists, overwrite? [no]:  keytool error: java.lang.NullPointerException

In this case the keytool expects input from the user, which is not possible if the docker container wasn't started in interactive mode.

example radio app problem

Hi,

I've tried the radio-app in both 0.17.2 and 0.18.0-SNAPSHOT versions and it didn't work.

Here are my steps:
0. compiled joynr with mvn clean package install

  1. I started the backend from backend-services\discovery-directory-servlet with mvn jetty:run
  2. started hivemq
  3. started the radio app provider with the parameters "test mqtt testlocal"
    4 started the ratio app consumer with the same parameters

The provider cannot run because of the error message:

"
2016-06-02 15:20:33,503 [ERROR] MessageRouterImpl: ERROR SENDING: aborting send of messageId: 2f7a5017-bb8a-4b2d-bc7b-40ac37fee412 to Address: ChannelAddress [Address [], messagingEndpointUrl=http://localhost:8080/discovery/channels/discoverydirectory_channelid/, channelId=discoverydirectory_channelid]. Error: Failed to send Request: Address type not supported: joynr.system.RoutingTypes.ChannelAddress
"

Attached the whole log:

error.txt

Is it a configuration issue or a different error?

[Java] [Joynr 1.19.8] Restart consumer application and then it can't receive broadcast information

Hi,
operate as follow steps:
1.start a provider service and a consumer service
2.consumer service subscribe to provider's broadcast
3.restart consumer service
4.use provider service publish a broadcast information then consumer service will print the following log

2022-04-29 11:05:40,446 [DEBUG] HivemqMqttClient: (clientHash=5b69d40d, GBID=gwmsoagbid1, bidirectional): Received publication: topic: Hw7dWStkSjWXrc53EbAIRg/systemMessage, size: 528, qos: AT_LEAST_ONCE, retain: false, expiryInterval: 120. 2022-04-29 11:05:40,447 [DEBUG] MqttMessagingSkeleton: <<< INCOMING FROM gwmsoagbid1 <<< messageId: SUjiE8_-TZOMkwJiMBByZg, type: m, sender: Hw7dWStkSjWXrc53EbAIRg, recipient: Hw7dWStkSjWXrc53EbAIRg/systemMessage, expiryDate: 1651201660441, size: 528 2022-04-29 11:05:40,448 [ERROR] CcMessageRouter: ERROR SENDING: aborting send. Error: Failed to route multicast publication: No recipient found for given message: messageId: SUjiE8_-TZOMkwJiMBByZg, type: m, sender: Hw7dWStkSjWXrc53EbAIRg, recipient: Hw7dWStkSjWXrc53EbAIRg/systemMessage, expiryDate: 1651201660441, size: 528

the consumer's receiverid is not change,so I think it should receive the broadcast information rather than print error log

SMRF Prioritisation

Hi, All.

Regarding SMRF Prioritisation,
I wonder if Joynr Cluster Controller supports SMRF prioritisation.
I have analyzed code and SMRF packet, and checked priority header in SMRF message.
But, I couldn't find prioritisation logic in code and operation.

Could you comment regarding it?

Thank you.

docker: cpp-clean-build fail

I am using ./joynr-docker build and after a successful run of
docker run --rm --sig-proxy -e DEV_UID="1002"
-v /prg/tmp/joynr:/data/src
-v /prg/tmp/apache-maven-3.5.0:/home/joynr/.m2
-v /prg/tmp/build:/data/build
joynr-cpp-gcc
/data/src/docker/joynr-cpp-base/scripts/build/cpp-generate.sh

I get a fail with
docker run --rm --sig-proxy -e DEV_UID="1002"
-v /prg/tmp/joynr:/data/src
-v /prg/tmp/apache-maven-3.5.0:/home/joynr/.m2
-v /prg/tmp/build:/data/build
joynr-cpp-gcc
/data/src/docker/joynr-cpp-base/scripts/build/cpp-clean-build.sh --jobs 4

[ 18%] Building CXX object libjoynr/CMakeFiles/Joynr.dir/in-process/generated/infrastructure/GlobalDomainAccessControllerInProcessConnector.cpp.o
[ 18%] Building CXX object libjoynr/CMakeFiles/Joynr.dir/in-process/generated/infrastructure/GlobalDomainRoleControllerInProcessConnector.cpp.o
{standard input}: Assembler messages:
{standard input}:240693: Warning: end of file not at end of a line; newline inserted
{standard input}:240938: Error: expected comma after name `ZSt11' in .size directive
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See http://bugzilla.redhat.com/bugzilla for instructions.
make[2]: *** [libjoynr/CMakeFiles/Joynr.dir/in-process/generated/infrastructure/GlobalDomainAccessControlListEditorInProcessConnector.cpp.o] Error 4
make[2]: *** Waiting for unfinished jobs....
libjoynr/CMakeFiles/Joynr.dir/build.make:1478: recipe for target 'libjoynr/CMakeFiles/Joynr.dir/in-process/generated/infrastructure/GlobalDomainAccessControlListEditorInProcessConnector.cpp.o' failed
make[1]: *** [libjoynr/CMakeFiles/Joynr.dir/all] Error 2
make: *** [all] Error 2
CMakeFiles/Makefile2:244: recipe for target 'libjoynr/CMakeFiles/Joynr.dir/all' failed
Makefile:127: recipe for target 'all' failed

is this a known issue?

No communication between provider and consumer

Hi,

I want to build a provider (Java Spring Boot) / consumer (Java JSF) pair using Joynr Java but I'm running into an issue when messages are sent from one to the other.

I am working on a Win 10 machine, Payara 4.1, Mosquitto MQTT and the needed joynr infrastructure. I already have a running provider / consumer as Java console apps (Joynr 0.25.2) which work fine.

I tried out your example (radio-app) from the last releases but none seem to work for me:
Steps:

  • Maven install in the radio-app folder
  • start the database / domain
  • deploy the joynr backend services
  • MQTT broker is up-and-running
  • start the provider app using my local domain as parameter
  • start the consumer app using my local domain as parameter

Tag 1.3.2:

  • both applications start, consumer crashes after a few seconds :
    [ERROR] MyRadioConsumerApplication: No provider found
    io.joynr.exceptions.DiscoveryException: Arbitration and Connector failed: domain: [joynr-infrastructure] interface: vehicle/Radio qos: io.joynr.arbitration.DiscoveryQos@15e3929: Arbitration could not be finished in time.
  • I am able to trigger a broadcast or a shuffling on the provider side via command line

Tag 1.4.0 :

  • both applications start, consumer crashes after a few seconds :
    [ERROR] MyRadioConsumerApplication: No provider found
    io.joynr.exceptions.DiscoveryException: Arbitration and Connector failed: domain: [joynr-infrastructure] interface: vehicle/Radio qos: io.joynr.arbitration.DiscoveryQos@15e3929: Arbitration could not be finished in time.
  • no command line input is accepted by the provider (e.g. 'w' or 's')

For both these releases I can see all the messages coming from the provider or the consumer in the MQTT broker (using MQTT Lens) but is seems the messages don't get across to the other app (similar with what I see on the applications written by me).

Any ideas / hints on what I am missing ?

Thanks,
Andrei

Build failed with kotlin

Hi
I'm building Android project with joynr, but there is something wrong.
joynrVersion:1.19.4
kotlinVersion:1.5.20
gradle-build-tools:7.0.4

When I using kotlin file extends XXXAbstractProvider, I will got an error when building the project
Cannot access 'joynr.xxx.XXXSubscriptionPublisherInjection' which is a supertype of 'com.xxx.xxxx.XXXProvider'. Check your module classpath for missing or conflicting dependencies
But if I using Java file to extends XXXAbstractProvider, it can build success.

Hope for some help

Java: MqttPahoClientTest::mqttClientTLSCreationFailsIfTrustorePathIsWrongOrMissing can result in an endless loop

If this test is running without an external started mosquitto which supports ssl, the test will result in an endless loop. In this case the test runs forever and the following error is reported multiple times:

io.joynr.messaging.mqtt.paho.client.MqttPahoClient: MQTT Connect failed. Error code 32103
Unable to connect to server (32103) - java.net.ConnectException: Connection refused (Connection refused)

If another mosquitto process has started which supports ssl, the test case can connect to mosquitto and fails with the following error (ignore the linenumbers in this message, I added some debug code for my own):

Failed tests: 
  MqttPahoClientTest.mqttClientTLSCreationFailsIfTrustorePathIsWrongOrMissing:443->testCreateMqttClientFailsWithJoynrIllegalArgumentException:355 Expected JoynrIllegalStateException

It seems that the test case can't handle the real behavior if a wrong truststore path is set.

If this will be fixed, the typos in the following method names could also be fixed (Trustore -> TrustStore) :

  • mqttClientTLSCreationFailsIfTrustorePathIsWrongOrMissing
  • mqttClientTLSCreationFailsIfTrustorePasswordIsWrongOrMissing

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.