Git Product home page Git Product logo

kapua's Introduction

Eclipse Kapua™ logo

Eclipse Kapua™

GitHub Release GitHub

GitHub Issues GitHub Pull Requests GitHub Contributors GitHub Forks

Gitter

GitHub Actions CI
Jenkins

Eclipse Kapua™ is a modular platform providing the services required to manage IoT gateways and smart edge devices. Kapua provides a core integration framework and an initial set of core IoT services including a device registry, device management services, messaging services, data management, and application enablement.

Quick Start Guide

Running an Eclipse Kapua™ demo instance on your local machine is a simple task.

Eclipse Kapua™ runs as distributed application that exposes three basic services:

  • The Messaging Service
  • The RESTful API
  • The Web Administration Console

Two more backend services are required that implement the data tier:

  • The Event Bus Service
  • The SQL database
  • The NoSQL datastore

Eclipse Kapua™ can be deployed in a variety of modes. A practical way for running a local demo is through Docker containers.

Requirements

Before starting, check that your environment has the following prerequisites:

  • 64 bit architecture
  • Java VM Version 8
  • Java VM Version 11
  • Docker Version 1.2+
  • Swagger CLI 4+ (Installed via NPM or separately)
  • Node 16+
  • Internet Access (needed to download the artifacts)

Demo Setup

The team maintains some docker images in a Docker Hub repository at Kapua Repository. Check the repo to view the list of available images, if you haven't found one fitting your needs you may create your own. Please refer to the paragraph More deployment info to find more about creating your own images and/or alternative demo deployment scenarios.


Note: the Docker Hub repository mentioned above is not the official project repository from Eclipse Foundation.


Suppose the target is the current snapshot 2.1.0-SNAPSHOT.

  • Clone Eclipse Kapua™ into a local directory
  • Open an OS shell and move to Kapua project root directory
  • Start Docker runtime

The Kapua repository mentioned above hosts only images of released versions. It is possible to test different versions of Kapua doing a checkout into the release branches (for example, "release-1.6.x") and to the tagged commits to select the specific version (for example, the commit tagged as "1.6.7"). Doing so, it is assured that the following step will pull proper images from the Docker Hub. If, on the other hand, your target is a SNAPSHOT version (for example, the 2.1.0-SNAPSHOT), a local build is required in order to create the docker images and proceed to the next step. Instructions for building can be found in the building.md file under the path docs/developer-guide. Assuming that your interest is to deploy a release before 2.0.0 and that you want to pull images from the Docker Hub, it is important to set now the IMAGE_VERSION environment variable with a value equal to the target version. For example, in the case of the 1.6.7

export IMAGE_VERSION=1.6.7
  • Start Kapua:

On Linux/MacOS:

    ./deployment/docker/unix/docker-deploy.sh

On Windows (PowerShell):

    ./deployment/docker/win/docker-deploy.ps1

The command starts all the Kapua containers using Docker Compose.

You can check if the containers are running by typing the following command:

    docker ps -as

Docker will list the containers currently running.

To stop Kapua, run

On Linux/MacOS:

    ./deployment/docker/unix/docker-undeploy.sh

On Windows (PowerShell):

    ./deployment/docker/win/docker-undeploy.ps1

Access

Once the containers are running, the Kapua services can be accessed. Eclipse Kapua™ is a multi tenant system. The demo installation comes with one default tenant, called kapua-sys, which is also the root tenant. In Eclipse Kapua™ a tenant is commonly referred to as an account.

The console

The administration console is available at http://localhost:8080/. Copy paste the URL above to a Web browser, as the login screen appears, type the following credentials:

  • Username: kapua-sys
  • Password: kapua-password

Press Login button and start working with the console.

Note: If you are using Docker on Windows the hostname will most likely not be localhost but the IP address of your docker instance.

RESTful APIs

The documentation of RESTful API is available at http://localhost:8081/doc/ while the mount points are available at http://localhost:8081/v1/ .

The documentation is available through Swagger UI which greatly helps testing and exploring the exposed services.

In order to get access a REST resource through an API, an authentication token is needed. Fortunately the token can be easily obtained by executing the authentication API. There are several ways to invoke the API, an easy one is by using the Swagger UI:

  • Open the URL http://localhost:8081/doc/
  • Select item Authentication
  • Select item /authentication/user
  • Using the test feature run 'POST /authentication/user' by specifying the following body:
{
  "password": [
    "kapua-password"
  ],
  "username": "kapua-sys"
}

Note: as an alternative to the previous, if curl is available on your machine, execute the following from the shell:

curl -X POST  'http://localhost:8081/v1/authentication/user' --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{
  "password": [
    "kapua-password"
  ],
  "username": "kapua-sys"
}'

The system will return a JSON object.

  • Copy the value of the field tokenId
  • Paste the value in the box labelled api_key at the top of the web page

Swagger will automatically add the authentication token to each subsequent request done using the Swagger UI. You're ready to try executing the documented APIs.

Note: If you are using Docker on Windows the hostname will most likely not be localhost but the IP address of your docker instance.

The Broker

The broker container exposes an Mqtt end point at tcp://localhost:1883/. The broker can be accessed through either Eclipse Kura™ or a plain Mqtt client like, for example, Eclipse Paho™.

In order for a client to establish a Mqtt connection with the broker, a client must provide a valid identity. The kapua-sys account provides the user named kapua-broker which has been pre-seeded and profiled for the purpose.

The credentials for the user kapua-broker are the following:

  • Username: kapua-broker
  • Password: kapua-password

Note: do not use the user kapua-sys to establish Mqtt connections.

Note: If you are using Docker on Windows the hostname will most likely not be localhost but the IP address of your docker instance.

Simulation

Kapua comes with a framework that you can use to simulate Kura gateways. It can be used to test your Kapua deployments easily. See Simulator documentation for more info.

More deployment info

Installing and running a demo using Docker is easy, but it's not the only way. There are other scenarios that the users may be interested in. We provide advanced setup scenarios in the following guides:

They will provide more advanced deployment scenarios.

User & Developer guides

Contributing

If you're interested to get involved in IoT and Eclipse Kapua™ project, join the community and give your contribution to the project, please read how to contribute to Eclipse Kapua™.

Community

Acknowledgments

Thanks to YourKit for providing us an open source license of YourKit Java Profiler!

YourKit supports open source projects with innovative and intelligent tools for monitoring and profiling Java and .NET applications. YourKit is the creator of YourKit Java Profiler, YourKit .NET Profiler, and YourKit YouMonitor.

kapua's People

Contributors

agnul97 avatar alezzandro avatar andrejn-ct avatar arthurdeschamps avatar bojanutkovic avatar coduz avatar ct-ajovanovic avatar ct-anaalbic avatar ct-goranpalibrk avatar ctron avatar dejanb avatar dometec avatar dseurotech avatar eclipsewebmaster avatar elbert3 avatar gbarbon avatar hekonsek avatar leonerdog avatar markodragicevicct avatar mdeluise avatar mgogic avatar miricy avatar muros-ct avatar riccardomodanese avatar sonja-ct avatar stefanomorson avatar stzilli avatar vesnagrumic avatar xshiart avatar zanpizmoht 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

kapua's Issues

Roles integration

Hi all,

we need to add roles integration in Authorization process and console views.
Role Service implementation is mostly completed and working. It is likely that will need some changes while integrating in console and authorization process.

Regards,

Alberto

Getting started on the website is invalid and incomplete

It does not reflect the use of the new "dev-tools" folder, but also there is no explanation on where to expect the console to be accessible from the browser, what username/pwd to use, etc.
I think the new README.md in dev-tools/vagrant has some up-to-date content that should now be copied over to the website.

Device event date bug

Hi all,

while working on issue #47 I discovered that the broker deployend into develop vagrant machine stores device events two hours before the actual time.

Then by looking at the SQL db table I saw that actually seems that the console stores events in UTC+2 rather than use UTC+0.

We need to find from where this timezone issue generates.

Regards,

Alberto

Console Device Command broker

Hi all,

the device command is broker in console. Requesting the execution of any command will pop up 404 error.

Regards,

Alberto

New authentication on REST APIs

Hi all,

Since we've started the design of the new JavaScript console, based on AngularJS and Patternfly, the first challenge we are facing is how to implement the console authentication.

With the current GWT console the authentication is managed through GwtAuthorizationService, which extends GWT's RemoteService. Of course we can't use this service anymore, since the AngularJS console can't make any use of the GWT server side features. So we need to expose the authentication service as a standard REST API.

The idea is to have a REST method who accepts, in both XML and JSON, an username and a password, deserializes it to a UsernamePasswordToken and forwards said object to AuthenticationService.login(AuthenticationCredentials). This method should:

  • Generate a token
  • Associate it to the credential who submitted the authentication request
  • Calculate an expiration date to be associated to the token
  • Persist all the informations in the database
  • Return the token to the REST method and to the original requester.

Said token should be then used in every next request to the REST APIs as an HTTP header (a name could be X-Access-Token) instead of the basic authentication we use now for any REST request. A new HTTP filter is hence needed to verify said token, understand who the requester is, and eventually postpone the token expiration on the database if the authorization is successful or return an error to the requester.

What do you think? Feedbacks are welcome!

Console blank page on startup

Hi all,

while trying to use console app I run into the issue of a blank page.

EDIT: this is happening while running console inside Eclipse.

Please fix it!

Regards,

Alberto

New Console device event layout

Hi all,

we need to make some updates to the device event view to reflect new fields of the device event.

Regards,

Alberto

web-console and rest-api unable to log

I don't know exactly from when but currently, both the web-console and the rest-api, don't log anything in the tomcat log file.
Looking at the web-apps startup log and at the libraries inside the wars we are missing to include the log4j bridge (so slf4j-log4j12 arctifact).
This arctifact is already included in the root pom (toghether with slf4j-api), but for some reason in the generated war it's present only the slf4j-api arctifact.

Provide H2 Docker image

As standalone H2 is not a particularly popular choice for production database, I can't see find any H2 Docker image suitable for our needs.

We should dockerize H2 by ourselves then and release the image together with Kapua release.

Add support for join entities in the same service

Hi all,

we need to add the support of join in our Query wrapper over JPA.

Currently queries are restricted to one entity domain a time.
This is fine when a service has only one domain, but can limit querying flexibility that we are trying to pursue.

An example is the DeviceRegistryService.
It has 3 domains:

  • Device
  • DeviceConnection
  • DeviceEvent

It is fine for queries on single domains, but what if I need to find all connected devices? That would require two domains (Device and DeviceConnection) to be joined and filtered at the same time.

Regards,

Alberto

Exception when unmarshalling Devices-related objects in console

Hello all,

By navigating in the console I noticed that several tabs in the Devices section are throwing an exception. I'll attach the stack trace for Packages and Bundles sections.

Packages:

15:11:37,919 [http-nio-8080-exec-7] WARN  KapuaExceptionHandler:90  - RPC service non-application error
15:11:37,932 [http-nio-8080-exec-7] WARN  KapuaException:90  - Could not load Exception Messages Bundle for Locale en_US
org.eclipse.kapua.translator.exception.TranslatorException: Error: <?xml version="1.0" encoding="UTF-8"?><packages><package><name>org.eclipse.iot.greenhouse</name><version>0.1.0</version><bundles><bundle><name>org.eclipse.iot.greenhouse.sensors</name><version>0.1.0.SNAPSHOT</version></bundle><bundle><name>org.eclipse.iot.greenhouse.publisher</name><version>0.1.0.SNAPSHOT</version></bundle><bundle><name>org.eclipse.iot.greenhouse.sensors.raspberrypi</name><version>0.1.0.SNAPSHOT</version></bundle><bundle><name>org.eclipse.iot.greenhouse.coap</name><version>0.1.0.SNAPSHOT</version></bundle></bundles></package></packages>
    at org.eclipse.kapua.translator.kura.kapua.TranslatorAppPackageKuraKapua.translate(TranslatorAppPackageKuraKapua.java:173)
    at org.eclipse.kapua.translator.kura.kapua.TranslatorAppPackageKuraKapua.translate(TranslatorAppPackageKuraKapua.java:87)
    at org.eclipse.kapua.translator.kura.kapua.TranslatorAppPackageKuraKapua.translate(TranslatorAppPackageKuraKapua.java:58)
    at org.eclipse.kapua.service.device.management.commons.call.DeviceCallExecutor.send(DeviceCallExecutor.java:104)
    at org.eclipse.kapua.service.device.management.packages.internal.DevicePackageManagementServiceImpl.getInstalled(DevicePackageManagementServiceImpl.java:94)
    at org.eclipse.kapua.app.console.server.GwtDeviceManagementServiceImpl.findDevicePackages(GwtDeviceManagementServiceImpl.java:118)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:78)
    at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:131)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
    at org.eclipse.kapua.app.console.filter.KapuaWebFilter.executeChain(KapuaWebFilter.java:44)
    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: javax.xml.bind.JAXBException: 
Descriptor Exceptions: 
---------------------------------------------------------

Exception [EclipseLink-63] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The instance creation method [org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar], with no parameters, does not exist, or is not accessible.
Internal Exception: java.lang.NoSuchMethodException: org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar()
Descriptor: XMLDescriptor(org.eclipse.kapua.model.config.metatype.KapuaTscalar --> [DatabaseTable(ns0:OCD)])

Runtime Exceptions: 
---------------------------------------------------------

 - with linked exception:
[Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.IntegrityException
Descriptor Exceptions: 
---------------------------------------------------------

Exception [EclipseLink-63] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The instance creation method [org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar], with no parameters, does not exist, or is not accessible.
Internal Exception: java.lang.NoSuchMethodException: org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar()
Descriptor: XMLDescriptor(org.eclipse.kapua.model.config.metatype.KapuaTscalar --> [DatabaseTable(ns0:OCD)])

Runtime Exceptions: 
---------------------------------------------------------
]
    at org.eclipse.kapua.app.console.ConsoleJAXBContextProvider.getJAXBContext(ConsoleJAXBContextProvider.java:71)
    at org.eclipse.kapua.commons.util.xml.XmlUtil.get(XmlUtil.java:285)
    at org.eclipse.kapua.commons.util.xml.XmlUtil.unmarshal(XmlUtil.java:197)
    at org.eclipse.kapua.commons.util.xml.XmlUtil.unmarshal(XmlUtil.java:160)
    at org.eclipse.kapua.commons.util.xml.XmlUtil.unmarshal(XmlUtil.java:143)
    at org.eclipse.kapua.translator.kura.kapua.TranslatorAppPackageKuraKapua.translate(TranslatorAppPackageKuraKapua.java:171)
    ... 50 more
Caused by: javax.xml.bind.JAXBException: 
Descriptor Exceptions: 
---------------------------------------------------------

Exception [EclipseLink-63] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The instance creation method [org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar], with no parameters, does not exist, or is not accessible.
Internal Exception: java.lang.NoSuchMethodException: org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar()
Descriptor: XMLDescriptor(org.eclipse.kapua.model.config.metatype.KapuaTscalar --> [DatabaseTable(ns0:OCD)])

Runtime Exceptions: 
---------------------------------------------------------

 - with linked exception:
[Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.IntegrityException
Descriptor Exceptions: 
---------------------------------------------------------

Exception [EclipseLink-63] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The instance creation method [org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar], with no parameters, does not exist, or is not accessible.
Internal Exception: java.lang.NoSuchMethodException: org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar()
Descriptor: XMLDescriptor(org.eclipse.kapua.model.config.metatype.KapuaTscalar --> [DatabaseTable(ns0:OCD)])

Runtime Exceptions: 
---------------------------------------------------------
]
    at org.eclipse.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:1127)
    at org.eclipse.persistence.jaxb.JAXBContext.<init>(JAXBContext.java:192)
    at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:165)
    at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:152)
    at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:112)
    at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:102)
    at org.eclipse.kapua.app.console.ConsoleJAXBContextProvider.getJAXBContext(ConsoleJAXBContextProvider.java:45)
    ... 55 more
Caused by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.IntegrityException
Descriptor Exceptions: 
---------------------------------------------------------

Exception [EclipseLink-63] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The instance creation method [org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar], with no parameters, does not exist, or is not accessible.
Internal Exception: java.lang.NoSuchMethodException: org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar()
Descriptor: XMLDescriptor(org.eclipse.kapua.model.config.metatype.KapuaTscalar --> [DatabaseTable(ns0:OCD)])

Runtime Exceptions: 
---------------------------------------------------------

    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:715)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:651)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:582)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:818)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:775)
    at org.eclipse.persistence.oxm.XMLContext$XMLContextState.setupSession(XMLContext.java:749)
    at org.eclipse.persistence.oxm.XMLContext$XMLContextState.setupSession(XMLContext.java:1)
    at org.eclipse.persistence.internal.oxm.Context$ContextState.<init>(Context.java:80)
    at org.eclipse.persistence.oxm.XMLContext$XMLContextState.<init>(XMLContext.java:712)
    at org.eclipse.persistence.oxm.XMLContext.<init>(XMLContext.java:194)
    at org.eclipse.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:1151)
    at org.eclipse.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:1124)
    ... 61 more
15:11:37,947 [http-nio-8080-exec-7] WARN  KapuaException:230  - Could not load Exception Messages Bundle for Locale en_US
15:11:37,954 [http-nio-8080-exec-7] WARN  KapuaException:230  - Could not load Exception Messages Bundle for Locale en_US

Bundles:

15:11:48,496 [http-nio-8080-exec-8] WARN  KapuaExceptionHandler:90 kapua-sys - RPC service non-application error
15:11:48,498 [http-nio-8080-exec-8] WARN  KapuaException:90 kapua-sys - Could not load Exception Messages Bundle for Locale en_US
org.eclipse.kapua.translator.exception.TranslatorException: Error: <?xml version="1.0" encoding="UTF-8"?><bundles><bundle><name>org.eclipse.osgi</name><version>3.8.1.v20120830-144521</version><id>0</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.equinox.cm</name><version>1.0.400.v20120522-1841</version><id>1</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.equinox.common</name><version>3.6.100.v20120522-1841</version><id>2</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.equinox.registry</name><version>3.5.200.v20120522-1841</version><id>3</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.equinox.http.registry</name><version>1.1.200.v20120522-2049</version><id>4</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.equinox.console</name><version>1.0.0.v20120522-1841</version><id>5</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.equinox.ds</name><version>1.4.0.v20120522-1841</version><id>6</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.equinox.event</name><version>1.2.200.v20120522-2049</version><id>7</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.equinox.io</name><version>1.0.400.v20120522-2049</version><id>8</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.equinox.metatype</name><version>1.2.0.v20120522-1841</version><id>9</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.equinox.util</name><version>1.0.400.v20120522-2049</version><id>10</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.osgi.services</name><version>3.3.100.v20120522-1822</version><id>11</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.osgi.util</name><version>3.2.300.v20120522-1822</version><id>12</id><state>ACTIVE</state></bundle><bundle><name>org.apache.felix.gogo.command</name><version>0.8.0.v201108120515</version><id>13</id><state>ACTIVE</state></bundle><bundle><name>org.apache.felix.gogo.runtime</name><version>0.8.0.v201108120515</version><id>14</id><state>ACTIVE</state></bundle><bundle><name>org.apache.felix.gogo.shell</name><version>0.8.0.v201110170705</version><id>15</id><state>ACTIVE</state></bundle><bundle><name>org.knowhowlab.osgi.monitoradmin</name><version>1.0.2</version><id>16</id><state>ACTIVE</state></bundle><bundle><name>org.apache.felix.dependencymanager</name><version>3.0.0</version><id>17</id><state>ACTIVE</state></bundle><bundle><name>org.apache.felix.deploymentadmin</name><version>0.9.5</version><id>18</id><state>ACTIVE</state></bundle><bundle><name>osgi.cmpn</name><version>4.3.0.201111022214</version><id>19</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.equinox.http.jetty</name><version>3.0.0.v20120522-1841</version><id>20</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.equinox.http.servlet</name><version>1.1.300.v20120522-1841</version><id>21</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.jetty.continuation</name><version>8.1.3.v20120522</version><id>22</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.jetty.http</name><version>8.1.3.v20120522</version><id>23</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.jetty.io</name><version>8.1.3.v20120522</version><id>24</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.jetty.security</name><version>8.1.3.v20120522</version><id>25</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.jetty.server</name><version>8.1.3.v20120522</version><id>26</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.jetty.servlet</name><version>8.1.3.v20120522</version><id>27</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.jetty.util</name><version>8.1.3.v20120522</version><id>28</id><state>ACTIVE</state></bundle><bundle><name>javax.servlet</name><version>3.0.0.v201112011016</version><id>29</id><state>ACTIVE</state></bundle><bundle><name>org.apache.commons.fileupload</name><version>1.2.2.v20111214-1400</version><id>30</id><state>ACTIVE</state></bundle><bundle><name>org.apache.commons.io</name><version>2.4.0</version><id>31</id><state>ACTIVE</state></bundle><bundle><name>slf4j.api</name><version>1.6.4</version><id>32</id><state>ACTIVE</state></bundle><bundle><name>slf4j.log4j12</name><version>1.6.0</version><id>33</id><state>RESOLVED</state></bundle><bundle><name>log4j</name><version>1.2.17</version><id>34</id><state>RESOLVED</state></bundle><bundle><name>log4j.apache-log4j-extras</name><version>1.1.0</version><id>35</id><state>RESOLVED</state></bundle><bundle><name>org.json</name><version>1.0.0.v201011060100</version><id>36</id><state>ACTIVE</state></bundle><bundle><name>org.hsqldb.hsqldb</name><version>2.3.0</version><id>37</id><state>ACTIVE</state></bundle><bundle><name>com.codeminders.hidapi</name><version>1.1.1</version><id>38</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.soda.dk.comm</name><version>1.2.1</version><id>39</id><state>ACTIVE</state></bundle><bundle><name>org.apache.commons.lang3</name><version>3.4.0</version><id>40</id><state>ACTIVE</state></bundle><bundle><name>org.usb4java</name><version>1.0.0</version><id>41</id><state>ACTIVE</state></bundle><bundle><name>usb4java-javax</name><version>1.0.0</version><id>42</id><state>ACTIVE</state></bundle><bundle><name>jdk.dio</name><version>1.0.4</version><id>43</id><state>RESOLVED</state></bundle><bundle><name>org.apache.commons.net</name><version>3.1.0.v201205071737</version><id>44</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.api</name><version>1.0.8</version><id>45</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.core</name><version>1.0.8</version><id>46</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.core.certificates</name><version>1.0.2</version><id>47</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.core.cloud</name><version>1.0.8</version><id>48</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.core.comm</name><version>1.0.2</version><id>49</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.core.configuration</name><version>1.0.7</version><id>50</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.core.crypto</name><version>1.0.3</version><id>51</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.core.deployment</name><version>1.1.1</version><id>52</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.core.log</name><version>1.0.1</version><id>53</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.core.net</name><version>1.0.8</version><id>54</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.core.status</name><version>1.0.1</version><id>55</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.deployment.agent</name><version>1.0.6</version><id>56</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.linux.clock</name><version>1.0.6</version><id>57</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.linux.command</name><version>1.0.4</version><id>58</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.linux.position</name><version>1.0.6</version><id>59</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.linux.usb</name><version>1.0.7</version><id>60</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.linux.bluetooth</name><version>1.0.4</version><id>61</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.linux.watchdog</name><version>1.0.5</version><id>62</id><state>ACTIVE</state></bundle><bundle><name>org.apache.camel.camel-core</name><version>2.16.0</version><id>63</id><state>RESOLVED</state></bundle><bundle><name>org.apache.camel.camel-core-osgi</name><version>2.16.0</version><id>64</id><state>RESOLVED</state></bundle><bundle><name>org.apache.camel.camel-kura</name><version>2.16.0</version><id>65</id><state>RESOLVED</state></bundle><bundle><name>org.eclipse.kura.camel</name><version>1.0.0</version><id>66</id><state>ACTIVE</state></bundle><bundle><name>com.gwt.user</name><version>1.0.0</version><id>67</id><state>RESOLVED</state></bundle><bundle><name>org.eclipse.kura.web</name><version>2.0.0</version><id>68</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.emulator.gpio</name><version>1.0.1</version><id>69</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.linux.net</name><version>1.0.9</version><id>70</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.kura.net.admin</name><version>1.0.9</version><id>71</id><state>ACTIVE</state></bundle><bundle><name>org.tigris.mtoolkit.iagent.rpc</name><version>3.0.0.20110411-0918</version><id>72</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.iot.greenhouse.coap</name><version>0.1.0.SNAPSHOT</version><id>73</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.iot.greenhouse.publisher</name><version>0.1.0.SNAPSHOT</version><id>74</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.iot.greenhouse.sensors</name><version>0.1.0.SNAPSHOT</version><id>75</id><state>ACTIVE</state></bundle><bundle><name>org.eclipse.iot.greenhouse.sensors.raspberrypi</name><version>0.1.0.SNAPSHOT</version><id>76</id><state>ACTIVE</state></bundle></bundles>
    at org.eclipse.kapua.translator.kura.kapua.TranslatorAppBundleKuraKapua.translate(TranslatorAppBundleKuraKapua.java:162)
    at org.eclipse.kapua.translator.kura.kapua.TranslatorAppBundleKuraKapua.translate(TranslatorAppBundleKuraKapua.java:83)
    at org.eclipse.kapua.translator.kura.kapua.TranslatorAppBundleKuraKapua.translate(TranslatorAppBundleKuraKapua.java:53)
    at org.eclipse.kapua.service.device.management.commons.call.DeviceCallExecutor.send(DeviceCallExecutor.java:104)
    at org.eclipse.kapua.service.device.management.bundle.internal.DeviceBundleManagementServiceImpl.get(DeviceBundleManagementServiceImpl.java:80)
    at org.eclipse.kapua.app.console.server.GwtDeviceManagementServiceImpl.findBundles(GwtDeviceManagementServiceImpl.java:506)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:78)
    at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:131)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
    at org.eclipse.kapua.app.console.filter.KapuaWebFilter.executeChain(KapuaWebFilter.java:44)
    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: javax.xml.bind.JAXBException: 
Descriptor Exceptions: 
---------------------------------------------------------

Exception [EclipseLink-63] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The instance creation method [org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar], with no parameters, does not exist, or is not accessible.
Internal Exception: java.lang.NoSuchMethodException: org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar()
Descriptor: XMLDescriptor(org.eclipse.kapua.model.config.metatype.KapuaTscalar --> [DatabaseTable(ns0:OCD)])

Runtime Exceptions: 
---------------------------------------------------------

 - with linked exception:
[Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.IntegrityException
Descriptor Exceptions: 
---------------------------------------------------------

Exception [EclipseLink-63] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The instance creation method [org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar], with no parameters, does not exist, or is not accessible.
Internal Exception: java.lang.NoSuchMethodException: org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar()
Descriptor: XMLDescriptor(org.eclipse.kapua.model.config.metatype.KapuaTscalar --> [DatabaseTable(ns0:OCD)])

Runtime Exceptions: 
---------------------------------------------------------
]
    at org.eclipse.kapua.app.console.ConsoleJAXBContextProvider.getJAXBContext(ConsoleJAXBContextProvider.java:71)
    at org.eclipse.kapua.commons.util.xml.XmlUtil.get(XmlUtil.java:285)
    at org.eclipse.kapua.commons.util.xml.XmlUtil.unmarshal(XmlUtil.java:197)
    at org.eclipse.kapua.commons.util.xml.XmlUtil.unmarshal(XmlUtil.java:160)
    at org.eclipse.kapua.commons.util.xml.XmlUtil.unmarshal(XmlUtil.java:143)
    at org.eclipse.kapua.translator.kura.kapua.TranslatorAppBundleKuraKapua.translate(TranslatorAppBundleKuraKapua.java:159)
    ... 50 more
Caused by: javax.xml.bind.JAXBException: 
Descriptor Exceptions: 
---------------------------------------------------------

Exception [EclipseLink-63] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The instance creation method [org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar], with no parameters, does not exist, or is not accessible.
Internal Exception: java.lang.NoSuchMethodException: org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar()
Descriptor: XMLDescriptor(org.eclipse.kapua.model.config.metatype.KapuaTscalar --> [DatabaseTable(ns0:OCD)])

Runtime Exceptions: 
---------------------------------------------------------

 - with linked exception:
[Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.IntegrityException
Descriptor Exceptions: 
---------------------------------------------------------

Exception [EclipseLink-63] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The instance creation method [org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar], with no parameters, does not exist, or is not accessible.
Internal Exception: java.lang.NoSuchMethodException: org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar()
Descriptor: XMLDescriptor(org.eclipse.kapua.model.config.metatype.KapuaTscalar --> [DatabaseTable(ns0:OCD)])

Runtime Exceptions: 
---------------------------------------------------------
]
    at org.eclipse.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:1127)
    at org.eclipse.persistence.jaxb.JAXBContext.<init>(JAXBContext.java:192)
    at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:165)
    at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:152)
    at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:112)
    at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:102)
    at org.eclipse.kapua.app.console.ConsoleJAXBContextProvider.getJAXBContext(ConsoleJAXBContextProvider.java:45)
    ... 55 more
Caused by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.IntegrityException
Descriptor Exceptions: 
---------------------------------------------------------

Exception [EclipseLink-63] (Eclipse Persistence Services - 2.6.3.v20160428-59c81c5): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The instance creation method [org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar], with no parameters, does not exist, or is not accessible.
Internal Exception: java.lang.NoSuchMethodException: org.eclipse.kapua.model.config.metatype.MetatypeXmlRegistry.newKapuaTscalar()
Descriptor: XMLDescriptor(org.eclipse.kapua.model.config.metatype.KapuaTscalar --> [DatabaseTable(ns0:OCD)])

Runtime Exceptions: 
---------------------------------------------------------

    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:715)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:651)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:582)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:818)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:775)
    at org.eclipse.persistence.oxm.XMLContext$XMLContextState.setupSession(XMLContext.java:749)
    at org.eclipse.persistence.oxm.XMLContext$XMLContextState.setupSession(XMLContext.java:1)
    at org.eclipse.persistence.internal.oxm.Context$ContextState.<init>(Context.java:80)
    at org.eclipse.persistence.oxm.XMLContext$XMLContextState.<init>(XMLContext.java:712)
    at org.eclipse.persistence.oxm.XMLContext.<init>(XMLContext.java:194)
    at org.eclipse.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:1151)
    at org.eclipse.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:1124)
    ... 61 more
15:11:48,512 [http-nio-8080-exec-8] WARN  KapuaException:230 kapua-sys - Could not load Exception Messages Bundle for Locale en_US
15:11:48,514 [http-nio-8080-exec-8] WARN  KapuaException:230 kapua-sys - Could not load Exception Messages Bundle for Locale en_US

Swagger UI: how to document the REST APIs?

Hi all,

I'm fixing and improving the Swagger UI docs for REST APIs, but I'd like to hear from you about how to generate the Swagger UI documentation for the methods. Actually, as far as I know, Swagger doesn't care about JavaDocs when it generates the Swagger definition file. So we have some options here:

  • Use Swagger Annotations on the REST resources; this is the "standard" way to document the methods, but it means to write quite a bit of duplicated code. Here's an example:
/**
 * Returns the list of all the Devices visible to the currently connected user.
 *
 * @return The list of requested Device objects.
 */
@GET
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@ApiOperation(value = "Get the Devices list",
                          notes = "The list is relative to the current user",
                          response = Device.class,
                          responseContainer = "List")
public DeviceListResult getDevices() {
    ...
} 

As you can see, we end up by having the description written twice. I'm also attaching a screenshot of the outcome:

schermata 2016-10-19 alle 17 51 50

- Use Enunciate to generate the code: Enunciate has a [Swagger Plugin](https://github.com/stoicflame/enunciate/wiki/Module-Swagger) that can generate a Swagger UI by parsing the JavaDoc automatically - Use [Swagger Doclet](https://github.com/conorroche/swagger-doclet): basically, the same approach of the Enunciate plugin

What do you think?

Make "develop" the default branch on GH?

It's confusing to land on the GH repo and see an "inactive" master branch, with no README, etc.
Should "develop" be made the default branch? (fwiw I can do the change, if you guys agree that'd be better).

Complete Camel routing configuration - (notify - unknown - data)

Refactor the Camel messages routing:

  • adding the support for the notify messages (not used yet)
  • logging the not matching control messages
  • logging data messages

so the routing table should like as:

  • ctl messages (starting from $EDC)
    • MQTT/BIRT --> lc_listener.birth
    • MQTT/DC --> lc_listener.dc
    • MQTT/MISSING --> lc_listener.missing
    • MQTT/APPS --> lc_listener.application
    • MQTT/NOTIFY --> lc_listener.notify
    • OTHERWISE --> lc_listener.unmatched
  • otherwise data message --> data_listener.data

mvn clean install -Psql -Pdeploy fails because deploy-apps.sh can't be found

When trying to deploy Kapua in the Vagrant box using /deploy-apps.sh, I get an error when the assembly is trying to execute the vagrant_console_deploy:

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.1:exec (vagrant_console_deploy) on project org.eclipse.kapua.assembly: Result of /bin/sh -c cd /Users/kartben/Repositories/kapua/org.eclipse.kapua.assembly/../org.eclipse.kapua.dev-tools/src/main/vagrant/demo && ./deployScript/deploy-apps.sh execution is: '127'. -> [Help 1]

Looks like org.eclipse.kapua.dev-tools is now dev-tools?

LWT messages get converted to Unmatched

Hello all,

As of now, LWT messages get converted to Unmatched from Camel (here's the snippet from kapua-assembly/src/main/resources/conf/broker/activemq.xml)

<when id="missingLifeCycleMessageFilter">
    <simple>${header.originalTopic} regex '^\$EDC\.(.*\.){2}MQTT\.MISSING'</simple>
    <bean ref="kapuaLifeCycleConverter" method="convertToMissing"/>
    <to uri="bean:deviceMessageListener?method=processMissingMessage" />
</when>

This when clause is not triggered because the actual topic's message contains the string LWT, not MISSING.

Support more operators in KapuaPredicates

Hi all,

we need to add support for some more operators in KapuaAttributePredicate.

We currently support:

  • LIKE
  • STARTS_WITH
  • IS_NULL
  • NOT_NULL
  • NOT_EQUAL
  • EQUAL

We still miss support for:

  • GREATER_THAN
  • GREATER_THAN_OR_EQUAL
  • LESS_THAN
  • LESS_THAN_OR_EQUAL

We need those operators in order to have the capability to filter by date via REST api and Console application, and for sure to offer a complete set of filtering for the consumer of those applications.

Regards,

Alberto

Description pane error when a Device has no connection entry on database

When a Device has no associated connection entry on the database (e.g. for a Device that was manually created via the "Add" button), an exception will be thrown when selecting it from the list (and thus activating the Description pane):

java.lang.NullPointerException
    at org.eclipse.kapua.app.console.server.GwtDeviceServiceImpl.findDeviceProfile(GwtDeviceServiceImpl.java:158)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:78)
    at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:131)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
    at org.eclipse.kapua.app.console.filter.KapuaWebFilter.executeChain(KapuaWebFilter.java:44)
    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

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.