Closed martinvw closed 5 years ago
IMHO
- If there are artifacts that are already OSGi bundles: use Maven dependencies and adapt the features to rely on that, too
- If there are artifacts but they are not OSGi bundles: use Maven dependencies and bnd instructions (Conditional / Private Package) to include the content.
@maggu2810 I did not yet do this
@wborn / @openhab/2-x-add-ons-maintainers I also did not check whether all the results are still fine, but my childs do also deserve some attention now. PR to this branch are welcome
Also the paper-ui is misbehaving a little when it comes to the tests :-(
EDIT: on my Mac they do succeed...
Thanks for your work on this POM-first proposal @martinvw! It also builds well on my Ubuntu machine. :+1:
There are now several modified files for Basic UI after building the code:
$ git status
On branch web-ui-to-pom-first
Your branch is up-to-date with 'martinvw/feature/web-ui-to-pom-first'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: org.openhab.ui.basic/src/main/resources/web/fonts/Roboto-Medium.eot
modified: org.openhab.ui.basic/src/main/resources/web/fonts/Roboto-Medium.svg
modified: org.openhab.ui.basic/src/main/resources/web/fonts/Roboto-Medium.ttf
modified: org.openhab.ui.basic/src/main/resources/web/fonts/Roboto-Medium.woff
modified: org.openhab.ui.basic/src/main/resources/web/fonts/Roboto-Regular.eot
modified: org.openhab.ui.basic/src/main/resources/web/fonts/Roboto-Regular.svg
modified: org.openhab.ui.basic/src/main/resources/web/fonts/Roboto-Regular.ttf
modified: org.openhab.ui.basic/src/main/resources/web/fonts/Roboto-Regular.woff
modified: org.openhab.ui.habmin/web/index.html
modified: org.openhab.ui.habmin/web/lib/ace-builds/src-min-noconflict/ace.js
The modified files for HABmin is already an issue on the current master (see #20).
There also seems to be an issue preventing the UIs from installing correctly with the "Demo" package on a local build with this code:
org.apache.felix.resolver.reason.ReasonException: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=openhab-ui-restdocs; type=karaf.feature; version="[2.5.0.SNAPSHOT,2.5.0.SNAPSHOT]"; filter:="(&(osgi.identity=openhab-ui-restdocs)(type=karaf.feature)(version>=2.5.0.SNAPSHOT)(version<=2.5.0.SNAPSHOT))" [caused by: Unable to resolve openhab-ui-restdocs/2.5.0.SNAPSHOT: missing requirement [openhab-ui-restdocs/2.5.0.SNAPSHOT] osgi.identity; osgi.identity=org.openhab.ui.restdocs; type=osgi.bundle; version="[2.5.0.201902231107,2.5.0.201902231107]"; resolution:=mandatory [caused by: Unable to resolve org.openhab.ui.restdocs/2.5.0.201902231107: missing requirement [org.openhab.ui.restdocs/2.5.0.201902231107] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.openhab.ui.dashboard)(version>=2.5.0)(!(version>=3.0.0)))"]]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1343)
at org.apache.felix.resolver.ResolverImpl.doResolve(ResolverImpl.java:392)
at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:378)
at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:332)
at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:257)
at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:388)
at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1025)
at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:964)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve openhab-ui-restdocs/2.5.0.SNAPSHOT: missing requirement [openhab-ui-restdocs/2.5.0.SNAPSHOT] osgi.identity; osgi.identity=org.openhab.ui.restdocs; type=osgi.bundle; version="[2.5.0.201902231107,2.5.0.201902231107]"; resolution:=mandatory [caused by: Unable to resolve org.openhab.ui.restdocs/2.5.0.201902231107: missing requirement [org.openhab.ui.restdocs/2.5.0.201902231107] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.openhab.ui.dashboard)(version>=2.5.0)(!(version>=3.0.0)))"]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1343)
... 12 more
Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve org.openhab.ui.restdocs/2.5.0.201902231107: missing requirement [org.openhab.ui.restdocs/2.5.0.201902231107] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.openhab.ui.dashboard)(version>=2.5.0)(!(version>=3.0.0)))"
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1343)
... 13 more
13:52:51.992 [ERROR] [.core.karaf.internal.FeatureInstaller] - Failed installing 'openhab-binding-hue, openhab-binding-avmfritz, openhab-binding-wemo, openhab-binding-sonos, openhab-ui-habpanel, openhab-misc-hueemulation, openhab-binding-ipp, openhab-ui-restdocs, openhab-persistence-rrd4j, openhab-ui-basic, openhab-transformation-map, openhab-binding-ntp, openhab-misc-homekit, openhab-binding-astro, openhab-ui-paper': Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=openhab-ui-restdocs; type=karaf.feature; version="[2.5.0.SNAPSHOT,2.5.0.SNAPSHOT]"; filter:="(&(osgi.identity=openhab-ui-restdocs)(type=karaf.feature)(version>=2.5.0.SNAPSHOT)(version<=2.5.0.SNAPSHOT))" [caused by: Unable to resolve openhab-ui-restdocs/2.5.0.SNAPSHOT: missing requirement [openhab-ui-restdocs/2.5.0.SNAPSHOT] osgi.identity; osgi.identity=org.openhab.ui.restdocs; type=osgi.bundle; version="[2.5.0.201902231107,2.5.0.201902231107]"; resolution:=mandatory [caused by: Unable to resolve org.openhab.ui.restdocs/2.5.0.201902231107: missing requirement [org.openhab.ui.restdocs/2.5.0.201902231107] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.openhab.ui.dashboard)(version>=2.5.0)(!(version>=3.0.0)))"]]
This does work with the current master.
When I install the "Standard" package the UIs do install. However when I open Basic UI I am presented with an NPE:
HTTP ERROR 500
Problem accessing /basicui/app. Reason:
Server Error
Caused by:
java.lang.NullPointerException
at org.openhab.ui.basic.internal.render.AbstractWidgetRenderer.getSnippet(AbstractWidgetRenderer.java:149)
at org.openhab.ui.basic.internal.render.PageRenderer.renderSitemapList(PageRenderer.java:225)
at org.openhab.ui.basic.internal.servlet.WebAppServlet.showSitemapList(WebAppServlet.java:142)
at org.openhab.ui.basic.internal.servlet.WebAppServlet.service(WebAppServlet.java:173)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535)
at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:503)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
at java.lang.Thread.run(Thread.java:748)
The other UIs seem to work properly.
Sorry for the merge conflicts my PRs caused on your masterpiece @martinvw. :disappointed: Luckily it's only 8 out of the 1138 files (0,7%) you've changed in this PR!
@wborn merge conflict and part of the git changes resolved. Habmin needs some live love with respect to that, maybe some dirs have to removed / ignored? Feel free to create a PR.
I did briefly look into the problem about the basic ui, but did not yet spot something.
@wborn I found something really fishy with the poms pointing to the old location of the dashboard, it could be resolved now, but I did not yet test to confirm. I might have more time later this week :-(
@maggu2810 I think there is a thing with me and BND:
The old manifest of the basicUI and the classicUI has:
Bundle-Activator: org.openhab.ui.basic.internal.WebAppActivator
while the new one does not have one, searching for it I found this, what would you propose? Where should that be solved?
https://bnd.bndtools.org/chapters/920-faq.html?#automaticActivator
Thanks!
@maggu2810 @wborn might have a solution inspired by the core bnd files
But I have another question:
I have the following XML:
<feature name="openhab-ui-habot" description="HABot" version="${project.version}">
<feature>openhab-runtime-base</feature>
<feature>openhab-ui-dashboard</feature>
<feature>openhab-core-automation</feature>
<bundle>mvn:org.openhab.ui/org.openhab.ui.habot/${project.version}</bundle>
<bundle>mvn:org.openhab.core.bundles/org.openhab.core.semantics/${project.version}</bundle>
<bundle>mvn:org.openhab.core.bundles/org.openhab.core.io.rest/${project.version}</bundle>
<bundle dependency="true">mvn:org.bouncycastle/bcprov-jdk15on/1.54</bundle>
<bundle dependency="true">mvn:org.apache.opennlp/opennlp-tools/1.8.3</bundle>
<bundle dependency="true">mvn:org.bitbucket.b_c/jose4j/0.6.3</bundle>
</feature>
But now it can't find those dependencies, I can understand that but how should I make sure that it can find them? Of was it caused by my local kar file (which I used for testing)?
... 7 more
Suppressed: shaded.org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.apache.opennlp:opennlp-tools:jar:1.8.3 in openhab (https://openhab.jfrog.io/openhab/online-repo-snapshot/2.5/)
at shaded.org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:39)
at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355)
at shaded.org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67)
at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:581)
at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:249)
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520)
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421)
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223)
at shaded.org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294)
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:705)
... 12 more
Caused by: shaded.org.eclipse.aether.resolution.ArtifactResolutionException: Error resolving artifact org.apache.opennlp:opennlp-tools:jar:1.8.3
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444)
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223)
at shaded.org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294)
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:705)
... 12 more
Error executing command: Error:
Error downloading mvn:org.bouncycastle/bcprov-jdk15on/1.54
Error downloading mvn:org.bitbucket.b_c/jose4j/0.6.3
Error downloading mvn:org.apache.opennlp/opennlp-tools/1.8.3
Will have a look at.
@martinvw At which time did you see that error? I can build the whole reactor without errors. Did you see it on installation time?
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for openHAB UI Components 2.5.0-SNAPSHOT:
[INFO]
[INFO] openHAB UI Components .............................. SUCCESS [ 25.808 s]
[INFO] Icon Sets .......................................... SUCCESS [ 0.191 s]
[INFO] Classic Icon Set ................................... SUCCESS [ 5.590 s]
[INFO] openHAB Dashboard UI ............................... SUCCESS [ 0.780 s]
[INFO] Basic UI ........................................... SUCCESS [01:48 min]
[INFO] Classic UI ......................................... SUCCESS [ 1.136 s]
[INFO] openHAB CometVisu Backend .......................... SUCCESS [ 2.008 s]
[INFO] PHP Support for the CometVisu Backend .............. SUCCESS [ 7.451 s]
[INFO] HABmin User Interface .............................. SUCCESS [ 57.225 s]
[INFO] HABot Interactive Bot .............................. SUCCESS [01:05 min]
[INFO] HABPanel user interface ............................ SUCCESS [ 1.822 s]
[INFO] openHAB HomeBuilder UI ............................. SUCCESS [ 55.612 s]
[INFO] Paper UI ........................................... SUCCESS [01:50 min]
[INFO] openHAB REST API Documentation ..................... SUCCESS [ 0.716 s]
[INFO] openHAB 2 Feature Addons ........................... SUCCESS [ 1.256 s]
[INFO] openHAB UI P2 Repository ........................... SUCCESS [ 32.611 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 08:09 min
[INFO] Finished at: 2019-02-28T11:07:27+01:00
[INFO] ------------------------------------------------------------------------
Did you see it on installation time?
Yes indeed, while running the bundle, so I suppose that openHAB runtime does not lookup its dependencies in maven.repo but some specific repo, so that step seems to be missing.
If I start the build openHAB it looks like (I enabled the Karaf debug feature globally):
$ ./start.sh
Launching the openHAB runtime...
/home/rathgeb/bin/pkgs/eclipse/oh2/git/openhab-distro/distributions/openhab/target/_/runtime/bin/setenv: line 140: java-config: command not found
karaf: Enabling Java debug options: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Listening for transport dt_socket at address: 5005
__ _____ ____
____ ____ ___ ____ / / / / | / __ )
/ __ \/ __ \/ _ \/ __ \/ /_/ / /| | / __ |
/ /_/ / /_/ / __/ / / / __ / ___ |/ /_/ /
\____/ .___/\___/_/ /_/_/ /_/_/ |_/_____/
/_/ 2.5.0-SNAPSHOT
- local build -
Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown openHAB.
openhab> org.apache.karaf.features.internal.util.MultiException: Error:
Error downloading mvn:org.openhab.ui/org.openhab.ui.dashboard/2.5.0-SNAPSHOT
at org.apache.karaf.features.internal.download.impl.MavenDownloadManager$MavenDownloader.<init>(MavenDownloadManager.java:91)
at org.apache.karaf.features.internal.download.impl.MavenDownloadManager.createDownloader(MavenDownloadManager.java:72)
at org.apache.karaf.features.internal.region.Subsystem.downloadBundles(Subsystem.java:457)
at org.apache.karaf.features.internal.region.Subsystem.downloadBundles(Subsystem.java:452)
at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:224)
at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:388)
at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1025)
at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:964)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Suppressed: java.io.IOException: Error downloading mvn:org.openhab.ui/org.openhab.ui.dashboard/2.5.0-SNAPSHOT
at org.apache.karaf.features.internal.download.impl.AbstractRetryableDownloadTask.run(AbstractRetryableDownloadTask.java:77)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
... 3 more
Caused by: java.io.IOException: Error resolving artifact org.openhab.ui:org.openhab.ui.dashboard:jar:2.5.0-SNAPSHOT: [Could not transfer artifact org.openhab.ui:org.openhab.ui.dashboard:jar:2.5.0-SNAPSHOT from/to openhab (https://openhab.jfrog.io/openhab/online-repo-snapshot/2.5/): RSA premaster secret error]
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:720)
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:659)
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:600)
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:567)
at org.apache.karaf.features.internal.download.impl.MavenDownloadTask.download(MavenDownloadTask.java:47)
at org.apache.karaf.features.internal.download.impl.AbstractRetryableDownloadTask.run(AbstractRetryableDownloadTask.java:60)
... 7 more
Suppressed: shaded.org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.openhab.ui:org.openhab.ui.dashboard:jar:2.5.0-SNAPSHOT from/to openhab (https://openhab.jfrog.io/openhab/online-repo-snapshot/2.5/): RSA premaster secret error
at shaded.org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:43)
at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355)
at shaded.org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67)
at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:581)
at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:249)
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520)
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421)
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223)
at shaded.org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294)
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:705)
... 12 more
Caused by: shaded.org.apache.maven.wagon.TransferFailedException: RSA premaster secret error
at shaded.org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:1085)
at shaded.org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:977)
at shaded.org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116)
at shaded.org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88)
at shaded.org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)
at shaded.org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run(WagonTransporter.java:560)
at shaded.org.eclipse.aether.transport.wagon.WagonTransporter.execute(WagonTransporter.java:427)
at shaded.org.eclipse.aether.transport.wagon.WagonTransporter.get(WagonTransporter.java:404)
at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:447)
at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:350)
... 21 more
Caused by: javax.net.ssl.SSLKeyException: RSA premaster secret error
at sun.security.ssl.RSAClientKeyExchange.<init>(RSAClientKeyExchange.java:87)
at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:972)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:369)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:965)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
at shaded.org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:290)
at shaded.org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:259)
at shaded.org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:125)
at shaded.org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:319)
at shaded.org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363)
at shaded.org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219)
at shaded.org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)
at shaded.org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86)
at shaded.org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
at shaded.org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at shaded.org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.ops4j.pax.url.mvn.internal.wagon.ConfigurableHttpWagon.execute(ConfigurableHttpWagon.java:149)
at shaded.org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:1000)
... 30 more
Caused by: java.security.NoSuchAlgorithmException: SunTls12RsaPremasterSecret KeyGenerator not available
at javax.crypto.KeyGenerator.<init>(KeyGenerator.java:169)
at javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:223)
at sun.security.ssl.JsseJce.getKeyGenerator(JsseJce.java:251)
at sun.security.ssl.RSAClientKeyExchange.<init>(RSAClientKeyExchange.java:78)
... 51 more
Caused by: shaded.org.eclipse.aether.resolution.ArtifactResolutionException: Error resolving artifact org.openhab.ui:org.openhab.ui.dashboard:jar:2.5.0-SNAPSHOT
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444)
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246)
at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223)
at shaded.org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294)
at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:705)
... 12 more
I used a kar, maybe that is a/the difference.
Ignoring the RSA error, the dependency seems to be there:
Sure, it is present... But there seems to be something wrong with the Java security.
13:26:46.382 [WARN ] [org.apache.karaf.shell.ssh.SshUtils ] - Configured keyexchange 'diffie-hellman-group-exchange-sha256' not available
13:26:46.395 [WARN ] [org.apache.karaf.shell.ssh.SshUtils ] - Configured keyexchange 'ecdh-sha2-nistp521' not available
13:26:46.396 [WARN ] [org.apache.karaf.shell.ssh.SshUtils ] - Configured keyexchange 'ecdh-sha2-nistp384' not available
13:26:46.396 [WARN ] [org.apache.karaf.shell.ssh.SshUtils ] - Configured keyexchange 'ecdh-sha2-nistp256' not available
13:26:46.397 [WARN ] [org.apache.karaf.shell.ssh.SshUtils ] - Configured keyexchange 'diffie-hellman-group-exchange-sha1' not available
13:26:46.397 [WARN ] [org.apache.karaf.shell.ssh.SshUtils ] - Configured keyexchange 'diffie-hellman-group1-sha1' not available
13:26:46.461 [WARN ] [org.apache.karaf.shell.ssh.Activator ] - Error starting activator
java.lang.IllegalArgumentException: KeyExchangeFactories not set
I will test it in my own custom Karaf distribution as I don't know what openHAB distro changes in the default Karaf configuration.
Any reason to depend on "openhab-runtime-base"? Is it the common approach for openHAB distro based features?
I wonder because it makes all the features unusable for other distributions.
I don't like to get bundles like ... injected just because I install an UI:
mvn:org.openhab.core.bundles/org.openhab.core.auth.oauth2client/2.5.0-SNAPSHOT
mvn:org.openhab.core.bundles/org.openhab.core.io.jetty.certificate/2.5.0-SNAPSHOT
mvn:org.openhab.core.bundles/org.openhab.core.karaf/2.5.0-SNAPSHOT
mvn:org.openhab.core.bundles/org.openhab.core.boot/2.5.0-SNAPSHOT
IMHO the feature could depend on openhab-core-base
.
That should be a more or less minimum openHAB bundle collection.
The feature openhab-runtime-base
should be installed by the distribution already and so there is no need to bloat other runtimes.
I see, the dashboard needs org.openhab.core.boot ...
So, I changed your features a little bit to use openhab-core-base
(just for me).
I installed openhab Core boot bundle in my Karaf dist.
I was able to install the dashboard feature without anyone complaining anything.
@maggu2810 my main errors came when installing openhab-ui-habot
in my karaf env
I see, the dashboard needs org.openhab.core.boot ... So, I changed your features a little bit to use
openhab-core-base
(just for me). I installed openhab Core boot bundle in my Karaf dist. I was able to install the dashboard feature without anyone complaining anything.
Would be great if you could do a PR or post a small diff here :-)
As I tried to import the existing projects of your branch in my Eclipse IDE I identified a misleading / wrong naming:
I would expect that ever project name starts with org.openhab.ui
.
@maggu2810 fixing that
I also think I'm close to the changes you did locally.
diff --git a/features/src/main/feature/feature.xml b/features/src/main/feature/feature.xml
index 89ed817..2f9617a 100644
--- a/features/src/main/feature/feature.xml
+++ b/features/src/main/feature/feature.xml
@@ -16,12 +16,11 @@
<features name="${project.artifactId}-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
<feature name="openhab-ui-dashboard" description="Dashboard UI" version="${project.version}">
- <feature>openhab-runtime-base</feature>
+ <feature>openhab-core-base</feature>
<bundle>mvn:org.openhab.ui/org.openhab.ui.dashboard/${project.version}</bundle>
</feature>
<feature name="openhab-ui-basic" description="Basic UI" version="${project.version}">
- <feature>openhab-runtime-base</feature>
<feature>openhab-iconset-classic</feature>
<feature>openhab-core-io-rest-sitemap</feature>
<feature>openhab-ui-dashboard</feature>
@@ -32,7 +31,6 @@
</feature>
<feature name="openhab-ui-classic" description="Classic UI" version="${project.version}">
- <feature>openhab-runtime-base</feature>
<feature>openhab-iconset-classic</feature>
<feature>openhab-ui-dashboard</feature>
<bundle>mvn:org.openhab.ui/org.openhab.ui.classic/${project.version}</bundle>
@@ -42,14 +40,13 @@
</feature>
<feature name="openhab-ui-cometvisu" description="CometVisu Backend" version="${project.version}">
- <feature>openhab-runtime-base</feature>
<feature>openhab-core-model-item</feature>
<feature>openhab-core-model-sitemap</feature>
<feature>openhab-core-ui-icon</feature>
<feature>openhab-core-ui</feature>
<feature>openhab-ui-dashboard</feature>
<bundle>mvn:org.openhab.ui/org.openhab.ui.cometvisu/${project.version}</bundle>
- <bundle dependency="true">mvn:org.rrd4j/rrd4j/3.3.1</bundle>
+ <bundle dependency="true">mvn:org.rrd4j/rrd4j/3.4</bundle>
<config name="org.openhab.cometvisu">
webFolder=../../../CometVisu/src/
webAlias=/cometvisu
@@ -75,21 +72,19 @@
</feature>
<feature name="openhab-ui-cometvisu-php" description="PHP support for CometVisu" version="${project.version}">
- <feature>openhab-runtime-base</feature>
+ <feature>openhab-core-base</feature>
<feature>openhab-ui-cometvisu</feature>
<bundle>mvn:org.openhab.ui/org.openhab.ui.cometvisu.php/${project.version}</bundle>
<bundle>mvn:org.openhab/com.caucho.quercus/4.0.45</bundle>
</feature>
<feature name="openhab-ui-habmin" description="HABmin" version="${project.version}">
- <feature>openhab-runtime-base</feature>
<feature>openhab-ui-dashboard</feature>
<bundle>mvn:org.openhab.ui/org.openhab.ui.habmin/${project.version}</bundle>
<bundle dependency="true">mvn:commons-codec/commons-codec/1.10</bundle>
</feature>
<feature name="openhab-ui-habot" description="HABot" version="${project.version}">
- <feature>openhab-runtime-base</feature>
<feature>openhab-ui-dashboard</feature>
<feature>openhab-core-automation</feature>
<bundle>mvn:org.openhab.ui/org.openhab.ui.habot/${project.version}</bundle>
@@ -101,19 +96,16 @@
</feature>
<feature name="openhab-ui-habpanel" description="HABPanel" version="${project.version}">
- <feature>openhab-runtime-base</feature>
<feature>openhab-ui-dashboard</feature>
<bundle>mvn:org.openhab.ui/org.openhab.ui.habpanel/${project.version}</bundle>
</feature>
<feature name="openhab-ui-homebuilder" description="Home Builder" version="${project.version}">
- <feature>openhab-runtime-base</feature>
<feature>openhab-ui-dashboard</feature>
<bundle>mvn:org.openhab.ui/org.openhab.ui.homebuilder/${project.version}</bundle>
</feature>
<feature name="openhab-ui-paper" description="Paper UI" version="${project.version}">
- <feature>openhab-runtime-base</feature>
<feature>openhab-io-javasound</feature>
<feature>openhab-io-webaudio</feature>
<feature>openhab-ui-dashboard</feature>
@@ -121,14 +113,12 @@
</feature>
<feature name="openhab-ui-restdocs" description="REST Documentation" version="${project.version}">
- <feature>openhab-runtime-base</feature>
<feature>openhab-ui-dashboard</feature>
<feature>openhab.tp-swagger-jax-rs-provider</feature>
<bundle>mvn:org.openhab.ui/org.openhab.ui.restdocs/${project.version}</bundle>
</feature>
<feature name="openhab-iconset-classic" version="${project.version}">
- <feature>openhab-runtime-base</feature>
<feature>openhab-core-ui-icon</feature>
<bundle>mvn:org.openhab.ui.iconset/org.openhab.ui.iconset.classic/${project.version}</bundle>
</feature>
@wborn No, not really ;)
The feature itself missing the verification step and so it will crash at installation time (not compile time). Needs to be fixed but is not really a problem of your migration.
I would postpone the runtime-base
dependency drop to another step if the migration is done.
Just a few information:
IIRC there has been some comments in another topic about unbundle the hard dependency to the dashboard. This is what I want to suggest "later".
There could a simple interface (I already did that for other UIs to publish its existence over different communnication paths like a WebUI that shows all the others, DNS-SD (mDNS) that publishes the UIs so it can be found by e.g. Apps, ...) that defines an advertisable website. It contains for the beginning the information that is necessary for the current dashboard implementation. That interface itself can be part of e.g. core.
The dashboard implementation itself should consume the instances of the advertisable website services and provide an entry. Other implementations could e.g. publish the Website using mDNS, ...
The "hard wire" between the specific openHAB dashboard and the UIs will be removed and it is possible to install UIs without installing the dashbaord, installing openHAB boot, ...
For me it seems you kept the old .classpath files -- they contain references like:
./org.openhab.ui.cometvisu/.classpath: <classpathentry exported="true" kind="lib" path="lib/rrd4j-3.3.1.jar"/>
./org.openhab.ui.cometvisu/.classpath: <classpathentry exported="true" kind="lib" path="lib/sqlite-jdbc-3.8.7.jar"/>
./org.openhab.ui.habmin/.classpath: <classpathentry kind="lib" path="lib/xstream-1.4.6.jar"/>
./org.openhab.ui.habmin/.classpath: <classpathentry kind="lib" path="lib/commons-codec-1.10.jar" sourcepath="lib/commons-codec-1.10-sources.jar">
./org.openhab.ui.habmin/.classpath: <attribute name="javadoc_location" value="jar:file:/Users/chris/Development/HABmin2/openhab2/org.openhab.ui.habmin/lib/commons-codec-1.10-sources.jar!/"/>
./org.openhab.ui.habot/.classpath: <classpathentry kind="lib" path="lib/opennlp-tools-1.8.3.jar" sourcepath="C:/Users/ys/.m2/repository/org/apache/opennlp/opennlp-tools/1.8.3/opennlp-tools-1.8.3-sources.jar"/>
./org.openhab.ui.habot/.classpath: <classpathentry kind="lib" path="lib/bcprov-jdk15on-154.jar"/>
./org.openhab.ui.habot/.classpath: <classpathentry kind="lib" path="lib/jose4j-0.6.3.jar"/>
that one should be removed.
I don't know what should be cleaned up, too.
I assume you should remove all the Eclipse IDE files (.project, .classpath) and directories (.settings) first and then import the projects using "existing Maven projects". After that you just need to remove the project specific JDT files.
It could be simpler without reading all the files' content what is no more relevant...
It works :-)
The only thing is that some ui's deinstall automaticly with nothing in the log:
2019-03-01 12:46:33.618 [INFO ] [ashboard.internal.HABotDashboardTile] - Started HABot at /habot
2019-03-01 12:46:33.652 [INFO ] [internal.ModuleHandlerFactoryStarter] - WebPushNotificationModuleHandlerFactory started by ModuleHandlerFactoryStarter
2019-03-01 12:47:15.863 [INFO ] [ashboard.internal.HABotDashboardTile] - Stopped HABot
2019-03-01 12:47:15.981 [INFO ] [core.karaf.internal.FeatureInstaller] - Uninstalled 'openhab-ui-habot'
I would expect that ever project name starts with
org.openhab.ui
.
It deduces it from the folder name, should I change the folder name or just hack the .project file?
After that you just need to remove the project specific JDT files.
Should I just .gitignore
the .settings
?
After that you just need to remove the project specific JDT files.
Should I just
.gitignore
the.settings
?
@wborn I forgot to mention you for this one :-)
Usually you can just remove them so the projects use the default settings. Then if one day a project specific override is necessary it can still be easily added.
It works :-)
@martinvw Okay, perhaps I have been wrong, but I assume it works because if you use the openHAB Distro openhab-runtime-base
is installed. If you don't install openhab-runtime-base
but use another Karaf distribution and install openhab-ui-dashboard
(after you added the tp, core and ui feature repo) I assume it will not work.
@wborn / @maggu2810 I think it should be ready now, only the launch configuration might need love but that might also have to be integrated with the Eclipse-setup. And I suppose that I (as an Intellij user) am not the most sensible person.
I think that it requires one final test (I might have time for that tomorrow, but of others can do it it would also be great) and then we should be good to go.
Okay, perhaps I have been wrong, but I assume it works because if you use the openHAB Distro
openhab-runtime-base
is installed.
No I would expect you to be right on this matter :-D
So it works when starting from the openHAB distro, the rest should maybe be picked up seperatelly as I believe you already suggested.
Btw, I like the plan to be able to install ui-s without dashboard using some other way to find it!
And of course it would be great if the ui's would work purely using openhab-core stuff 👍
Now it is up to the @openhab/webui-maintainers
@martinvw Thanks for your work!
I found a little thing the homebuilder (again?) gained a lot of weight it went from 300 kb to 34MB, I had this before, just have to remember what I did to fix it :-D
You should not place node_modules
in web
as you add web
to the JAR.
You should not place
node_modules
inweb
as you addweb
to the JAR.
Jups, I had a part of much in the exclussion paths, commit soon to come
There is an xml generated in iconset/org.openhab.ui.iconset.classic/OSGI-INF/
There is an xml generated in
iconset/org.openhab.ui.iconset.classic/OSGI-INF/
:-( not here, generated by Maven or Eclipse? Is it regenerated if you remove it?
Cannot test ATM. We will see the situation for the other ones.
Final test looks okay, only relevant thing to mention is that habot and homebuilder tend to uninstall them self after some time? @wborn can you reproduce this?
2019-03-01 20:54:51.737 [INFO ] [ashboard.internal.HABotDashboardTile] - Started HABot at /habot
2019-03-01 20:54:51.787 [INFO ] [internal.ModuleHandlerFactoryStarter] - WebPushNotificationModuleHandlerFactory started by ModuleHandlerFactoryStarter
2019-03-01 20:55:34.443 [INFO ] [ashboard.internal.HABotDashboardTile] - Stopped HABot
2019-03-01 20:55:34.575 [INFO ] [core.karaf.internal.FeatureInstaller] - Uninstalled 'openhab-ui-habot'
==> distributions/openhab/target/openhab-2.5.0-SNAPSHOT/userdata/logs/events.log <==
2019-03-01 20:55:34.578 [thome.event.ExtensionEvent] - Extension 'ui-habot' has been uninstalled.
Okay, nevermind about the uninstalling the ui's stay installed when I do it though the paper-ui. I used karaf to install them, so they were not in the addons.cfg and on every rescan they were removed 😭
So now I'm confident that it should work :-)
With an empty local Maven repo this PR doesn't build for me.
So Jenkins may also have issues with this PR:
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM for org.openhab.ui:org.openhab.ui.repo:[unknown-version]: Could not find artifact org.openhab:pom:pom:2.5.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 6, column 11
[WARNING] 'build.plugins.plugin.version' for org.apache.karaf.tooling:karaf-maven-plugin is missing. @ org.openhab.ui:openhab-webui:[unknown-version], /home/wouter/git/openhab/openhab-webui/features/pom.xml, line 20, column 15
@
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR] The project org.openhab.ui:org.openhab.ui.repo:[unknown-version] (/home/wouter/git/openhab/openhab-webui/repo/pom.xml) has 1 error
[ERROR] Non-resolvable parent POM for org.openhab.ui:org.openhab.ui.repo:[unknown-version]: Could not find artifact org.openhab:pom:pom:2.5.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 6, column 11 -> [Help 2]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException
This has not been changed as part of this PR, I don't know about the how why?
But let me fix it.
@wborn done
@wborn squashed and edit the closes #20 I kept two commits, maybe it makes sense to merge it with those two commits as is, but feel free not to.
cc: @kaikreuzer
Thanks guys, great work! One question: As this PR removed 200.000 lines of code in the repo, would it make sense to actually change the repos history and squash some commits so that we get rid off all the rubbish in it? Although we just started with an empty history, cloning the repo isn't fun (with >25MB) already now. Wdyt?
One question: As this PR removed 200.000 lines of code in the repo, would it make sense to actually change the repos history and squash some commits so that we get rid off all the rubbish in it? Although we just started with an empty history, cloning the repo isn't fun (with >25MB) already now. Wdyt?
@kaikreuzer it could make sense indeed.
If we merge this and you give me access to push to master I can rewrite history to get rid of them even without squashing everything, so the little bit of history will remain, I could also just squash it to a single commit, that is up to you.
We only have 14 commits so far and it probably does not make sense to keep the "old" tycho build details here - so I'll just go ahead and squash it all...
@kaikreuzer could you give me the power then :-)
@kaikreuzer never mind you already did it :-D
I misread your sentence
Hi! Is this related? https://github.com/openhab/openhab-webui/issues/11