edgent-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christofer Dutz <christofer.d...@c-ware.de>
Subject Re: Java7 compatability issue in analytics/sensors
Date Mon, 19 Jun 2017 14:13:53 GMT
Ok guys … now some MAJOR update :-)

I managed to setup a build that build all modules with Java8, if the profile “platform-java7”
is enabled, also Java7 versions are produced by unpacking the Java8 versions in some pom-only
modules, applying retrolambda there and then running all unit- and integration-tests with
Java7. The cool thing is, I didn’t port only the ones build for java7 in the past, but all
edgent modules and fixed the ones that were having problems (I added a helper that does the
same as the Java8 extensions did). Now all modules except some examples are also available
on Java7 (I had do disable some Tests though, as they were using Java8 APIs, but this should
be fixable quite easily). The cool thing … all should also work on Travis too (I found a
place where the Java paths were documented …  see the .travis.yml).

The build of Java8 should work out of the box on any machine with Maven and Java8, if you
want to build the Java7 versions, you need to activate the profile “platform-java7” and
provide a so-called toolchain (either you create a toolchain.xml in your .m2 directory or
you create a file elsewhere and pass that files path in with the “-t” command-line option).
As retrolambda needs Java8 to run, you also need to provide a property: “java8.home” that
points to your Java8 home directory.

Regarding the Android package, I would start working on this next. If the “android” modules
are only used in the “android” platform, I would suggest building a similar structure
for android as for Java7 and to move the real android modules into that directory. Then they
wouldn’t be part of the Java8 and Java7 package and be included only in the android package.

You can use the toolchains-travis.xml file as a template to create your own. I added an git
exclusion for toolchains-local.xml. So, if you just copy that to toolchains-local.xml and
adjust your java-home paths inside, you should be able to build everything with the following

mvn –Pplatform-java7,platform-android –Djava8.home={JAVA8_HOME} –t toolchains-local.xml
clean install

Hope it works on your machines too … if not I’ll handle the problems as soon as possible.


Am 19.06.17, 15:20 schrieb "Dale LaBossiere" <dml.apache@gmail.com>:

    Nice catch!
    I created https://issues.apache.org/jira/browse/EDGENT-423
    — Dale
    > On Jun 18, 2017, at 8:04 AM, Christofer Dutz <christofer.dutz@c-ware.de> wrote:
    > While fine tuning my maven migration, I stumbled over a problem in the analytics/sensors
    > As part of the build I am validating the classes for Java7 against the signatures
of the Java 7 SDK. Here my plugin found an issue I thought was worth reporting.
    > In the class org.apache.edgent.analytics.sensors.Range almost at the end in the method
toUnsignedString we are using Byte.toUnsignedInt, which is only available in Java 8 … there
is no back-port for java 7 for this code. Eventually we should replace this with code that
works on Java 7 too.

View raw message