Core framework of openHAB
Go to file
Markus Rathgeb 1ac2e8978b automation: remove specific handling for CompositeModuleHandlerFactory (#764)
The member variable "compositeFactory" that holds the
"CompositeModuleHandlerFactory" instance is set in the activation method
by calling the constructor of of "CompositeModuleHandlerFactory".
This reference is destroyed and unset in the deactivate method.

There exists DS managed multiple optional references to
"ModuleHandlerFactory".
The "add" logic does not touch the "compositeFactory" variable.
The "remove" logic checks if the given service reference is a
"CompositeModuleHandlerFactory" and unsets the "compositeFactory" member
variable.

If e.g. a module handler factory is injected that also implements the
CompositeModuleHandlerFactory the CompositeModuleHandlerFactory created
by the activate method is still be used. If that specific module handler
factory is removed again, the variable "compositeFactory" is unset and
there is NO CompositeModuleHandlerFactory present anymore.

There are two options:
* The instance created in the activate method should be used as long as
  no other one is injected.
* The instance created in the activate method should be used all the
  time.

The whole code base does not contain another specific implementation for
CompositeModuleHandlerFactory, so there is no (at least in openHAB Core)
change that a CompositeModuleHandlerFactory is injected.

So instead of adding a non deterministic usage of "some" composite
module handler factory (which will require a fix of the "set module
handler factory method" and some others), let's drop the buggy code in
the "remove module handler factory" and use the manually created
composite module handler factory all the time.

Signed-off-by: Markus Rathgeb <maggu2810@gmail.com>
2019-04-28 16:19:06 +02:00
bom Add serial transport to runtime BOM (#714) 2019-04-13 12:09:15 +02:00
bundles automation: remove specific handling for CompositeModuleHandlerFactory (#764) 2019-04-28 16:19:06 +02:00
demo Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
features differ between min. karaf version (OSGi) und karaf compilation tooling (#740) 2019-04-16 22:41:27 +02:00
itests Added i18n feature for dynamic state descriptions (#655) 2019-04-26 12:54:40 +02:00
licenses/epl-2.0 mavenize openHAB and integrate mavenized ESH repository (#467) 2019-01-28 13:07:31 +01:00
notes mavenize openHAB and integrate mavenized ESH repository (#467) 2019-01-28 13:07:31 +01:00
tools [archetype] .classpath should contain tabs. (#762) 2019-04-27 22:27:40 +02:00
.gitignore Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
.travis.yml Require successful Travis CI Java 11 build (#688) 2019-04-01 06:25:43 +02:00
CONTRIBUTING.md Replaces 'Eclipse SmartHome' with 'openHAB' in text (#581) 2019-02-15 10:46:37 +01:00
LICENSE Changed license from EPL v1 to EPL v2 (#466) 2019-01-16 22:59:49 +01:00
NOTICE Add NOTICE file (#631) 2019-03-06 16:09:24 +01:00
pom.xml Added maven archetype project to generate binding skeletons (#589) 2019-04-26 13:03:28 +02:00
README.md Update README.md (#498) 2019-02-01 16:18:41 +01:00

openHAB 2 Core bundles

This project contains core bundles of the openHAB 2 runtime.

Building and running the project is fairly easy if you follow the steps detailed below.

Please note that openHAB 2 Core is not a product itself, but a framework to build solutions on top. It is picked up by the main openHAB distribution build.

This means that what you build is primarily an artifact repository of OSGi bundles that can be used within smart home products.

1. Prerequisites

The build infrastructure is based on Maven. If you know Maven already then there won't be any surprises for you. If you have not worked with Maven yet, just follow the instructions and everything will miraculously work ;-)

What you need before you start:

Make sure that the "mvn" command is available on your path

2. Checkout

Checkout the source code from GitHub, e.g. by running

git clone https://github.com/openhab/openhab-core.git

3. Building with Maven

To build this project from the sources, Maven takes care of everything:

  • set MAVEN_OPTS to "-Xms512m -Xmx1024m"
  • change into the openhab-core directory ("cd openhab-core“)
  • run "mvn clean install" to compile and package all sources

If there are tests that are failing occasionally on your local build, run mvn -DskipTests=true clean install instead to skip them.

How to contribute

If you want to become a contributor to the project, please read about contributing and check our guidelines first.