+ *
+ * @see org.openhab.model.sitemap.SitemapPackage#getChart()
+ * @model
+ * @generated
+ */
+public interface Chart extends NonLinkableWidget
+{
+ /**
+ * Returns the value of the 'Service' attribute.
+ *
+ *
+ * If the meaning of the 'Service' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Service' attribute.
+ * @see #setService(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getChart_Service()
+ * @model
+ * @generated
+ */
+ String getService();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Chart#getService Service}' attribute.
+ *
+ *
+ * @param value the new value of the 'Service' attribute.
+ * @see #getService()
+ * @generated
+ */
+ void setService(String value);
+
+ /**
+ * Returns the value of the 'Refresh' attribute.
+ *
+ *
+ * If the meaning of the 'Refresh' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Refresh' attribute.
+ * @see #setRefresh(int)
+ * @see org.openhab.model.sitemap.SitemapPackage#getChart_Refresh()
+ * @model
+ * @generated
+ */
+ int getRefresh();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Chart#getRefresh Refresh}' attribute.
+ *
+ *
+ * @param value the new value of the 'Refresh' attribute.
+ * @see #getRefresh()
+ * @generated
+ */
+ void setRefresh(int value);
+
+ /**
+ * Returns the value of the 'Period' attribute.
+ *
+ *
+ * If the meaning of the 'Period' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Period' attribute.
+ * @see #setPeriod(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getChart_Period()
+ * @model
+ * @generated
+ */
+ String getPeriod();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Chart#getPeriod Period}' attribute.
+ *
+ *
+ * @param value the new value of the 'Period' attribute.
+ * @see #getPeriod()
+ * @generated
+ */
+ void setPeriod(String value);
+
+} // Chart
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/ColorArray.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/ColorArray.java
new file mode 100644
index 0000000000000..8d4b59727f375
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/ColorArray.java
@@ -0,0 +1,159 @@
+/**
+ */
+package org.openhab.model.sitemap;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Color Array'.
+ *
+ *
+ *
+ *
+ *
+ * @see org.openhab.model.sitemap.SitemapPackage#getColorArray()
+ * @model
+ * @generated
+ */
+public interface ColorArray extends EObject
+{
+ /**
+ * Returns the value of the 'Item' attribute.
+ *
+ *
+ * If the meaning of the 'Item' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Item' attribute.
+ * @see #setItem(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getColorArray_Item()
+ * @model
+ * @generated
+ */
+ String getItem();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.ColorArray#getItem Item}' attribute.
+ *
+ *
+ * @param value the new value of the 'Item' attribute.
+ * @see #getItem()
+ * @generated
+ */
+ void setItem(String value);
+
+ /**
+ * Returns the value of the 'Condition' attribute.
+ *
+ *
+ * If the meaning of the 'Condition' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Condition' attribute.
+ * @see #setCondition(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getColorArray_Condition()
+ * @model
+ * @generated
+ */
+ String getCondition();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.ColorArray#getCondition Condition}' attribute.
+ *
+ *
+ * @param value the new value of the 'Condition' attribute.
+ * @see #getCondition()
+ * @generated
+ */
+ void setCondition(String value);
+
+ /**
+ * Returns the value of the 'Sign' attribute.
+ *
+ *
+ * If the meaning of the 'Sign' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Sign' attribute.
+ * @see #setSign(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getColorArray_Sign()
+ * @model
+ * @generated
+ */
+ String getSign();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.ColorArray#getSign Sign}' attribute.
+ *
+ *
+ * @param value the new value of the 'Sign' attribute.
+ * @see #getSign()
+ * @generated
+ */
+ void setSign(String value);
+
+ /**
+ * Returns the value of the 'State' attribute.
+ *
+ *
+ * If the meaning of the 'State' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'State' attribute.
+ * @see #setState(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getColorArray_State()
+ * @model
+ * @generated
+ */
+ String getState();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.ColorArray#getState State}' attribute.
+ *
+ *
+ * @param value the new value of the 'State' attribute.
+ * @see #getState()
+ * @generated
+ */
+ void setState(String value);
+
+ /**
+ * Returns the value of the 'Arg' attribute.
+ *
+ *
+ * If the meaning of the 'Arg' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Arg' attribute.
+ * @see #setArg(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getColorArray_Arg()
+ * @model
+ * @generated
+ */
+ String getArg();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.ColorArray#getArg Arg}' attribute.
+ *
+ *
+ * @param value the new value of the 'Arg' attribute.
+ * @see #getArg()
+ * @generated
+ */
+ void setArg(String value);
+
+} // ColorArray
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Colorpicker.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Colorpicker.java
new file mode 100644
index 0000000000000..a3ec46013c6d1
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Colorpicker.java
@@ -0,0 +1,50 @@
+/**
+ */
+package org.openhab.model.sitemap;
+
+
+/**
+ *
+ * A representation of the model object 'Colorpicker'.
+ *
+ *
+ *
+ *
+ *
+ * @see org.openhab.model.sitemap.SitemapPackage#getImage()
+ * @model
+ * @generated
+ */
+public interface Image extends LinkableWidget
+{
+ /**
+ * Returns the value of the 'Url' attribute.
+ *
+ *
+ * If the meaning of the 'Url' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Url' attribute.
+ * @see #setUrl(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getImage_Url()
+ * @model
+ * @generated
+ */
+ String getUrl();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Image#getUrl Url}' attribute.
+ *
+ *
+ * @param value the new value of the 'Url' attribute.
+ * @see #getUrl()
+ * @generated
+ */
+ void setUrl(String value);
+
+ /**
+ * Returns the value of the 'Refresh' attribute.
+ *
+ *
+ * If the meaning of the 'Refresh' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Refresh' attribute.
+ * @see #setRefresh(int)
+ * @see org.openhab.model.sitemap.SitemapPackage#getImage_Refresh()
+ * @model
+ * @generated
+ */
+ int getRefresh();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Image#getRefresh Refresh}' attribute.
+ *
+ *
+ * @param value the new value of the 'Refresh' attribute.
+ * @see #getRefresh()
+ * @generated
+ */
+ void setRefresh(int value);
+
+ /**
+ * Returns the value of the 'Icon Color' containment reference list.
+ * The list contents are of type {@link org.openhab.model.sitemap.ColorArray}.
+ *
+ *
+ * If the meaning of the 'Icon Color' containment reference list isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Icon Color' containment reference list.
+ * @see org.openhab.model.sitemap.SitemapPackage#getImage_IconColor()
+ * @model containment="true"
+ * @generated
+ */
+ EList getIconColor();
+
+} // Image
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/LinkableWidget.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/LinkableWidget.java
new file mode 100644
index 0000000000000..43236894c2646
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/LinkableWidget.java
@@ -0,0 +1,41 @@
+/**
+ */
+package org.openhab.model.sitemap;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ *
+ * A representation of the model object 'Linkable Widget'.
+ *
+ *
+ *
+ *
+ *
+ * @see org.openhab.model.sitemap.SitemapPackage#getMapping()
+ * @model
+ * @generated
+ */
+public interface Mapping extends EObject
+{
+ /**
+ * Returns the value of the 'Cmd' attribute.
+ *
+ *
+ * If the meaning of the 'Cmd' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Cmd' attribute.
+ * @see #setCmd(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getMapping_Cmd()
+ * @model
+ * @generated
+ */
+ String getCmd();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Mapping#getCmd Cmd}' attribute.
+ *
+ *
+ * @param value the new value of the 'Cmd' attribute.
+ * @see #getCmd()
+ * @generated
+ */
+ void setCmd(String value);
+
+ /**
+ * Returns the value of the 'Label' attribute.
+ *
+ *
+ * If the meaning of the 'Label' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Label' attribute.
+ * @see #setLabel(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getMapping_Label()
+ * @model
+ * @generated
+ */
+ String getLabel();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Mapping#getLabel Label}' attribute.
+ *
+ *
+ * @param value the new value of the 'Label' attribute.
+ * @see #getLabel()
+ * @generated
+ */
+ void setLabel(String value);
+
+} // Mapping
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/NonLinkableWidget.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/NonLinkableWidget.java
new file mode 100644
index 0000000000000..a44084587a4e3
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/NonLinkableWidget.java
@@ -0,0 +1,18 @@
+/**
+ */
+package org.openhab.model.sitemap;
+
+
+/**
+ *
+ * A representation of the model object 'Non Linkable Widget'.
+ *
+ *
+ *
+ * @see org.openhab.model.sitemap.SitemapPackage#getNonLinkableWidget()
+ * @model
+ * @generated
+ */
+public interface NonLinkableWidget extends Widget
+{
+} // NonLinkableWidget
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Selection.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Selection.java
new file mode 100644
index 0000000000000..36784aafcc822
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Selection.java
@@ -0,0 +1,41 @@
+/**
+ */
+package org.openhab.model.sitemap;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ *
+ * A representation of the model object 'Selection'.
+ *
+ *
+ *
+ *
+ *
+ * @see org.openhab.model.sitemap.SitemapPackage#getSetpoint()
+ * @model
+ * @generated
+ */
+public interface Setpoint extends NonLinkableWidget
+{
+ /**
+ * Returns the value of the 'Min Value' attribute.
+ *
+ *
+ * If the meaning of the 'Min Value' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Min Value' attribute.
+ * @see #setMinValue(BigDecimal)
+ * @see org.openhab.model.sitemap.SitemapPackage#getSetpoint_MinValue()
+ * @model
+ * @generated
+ */
+ BigDecimal getMinValue();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Setpoint#getMinValue Min Value}' attribute.
+ *
+ *
+ * @param value the new value of the 'Min Value' attribute.
+ * @see #getMinValue()
+ * @generated
+ */
+ void setMinValue(BigDecimal value);
+
+ /**
+ * Returns the value of the 'Max Value' attribute.
+ *
+ *
+ * If the meaning of the 'Max Value' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Max Value' attribute.
+ * @see #setMaxValue(BigDecimal)
+ * @see org.openhab.model.sitemap.SitemapPackage#getSetpoint_MaxValue()
+ * @model
+ * @generated
+ */
+ BigDecimal getMaxValue();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Setpoint#getMaxValue Max Value}' attribute.
+ *
+ *
+ * @param value the new value of the 'Max Value' attribute.
+ * @see #getMaxValue()
+ * @generated
+ */
+ void setMaxValue(BigDecimal value);
+
+ /**
+ * Returns the value of the 'Step' attribute.
+ *
+ *
+ * If the meaning of the 'Step' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Step' attribute.
+ * @see #setStep(BigDecimal)
+ * @see org.openhab.model.sitemap.SitemapPackage#getSetpoint_Step()
+ * @model
+ * @generated
+ */
+ BigDecimal getStep();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Setpoint#getStep Step}' attribute.
+ *
+ *
+ * @param value the new value of the 'Step' attribute.
+ * @see #getStep()
+ * @generated
+ */
+ void setStep(BigDecimal value);
+
+} // Setpoint
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Sitemap.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Sitemap.java
new file mode 100644
index 0000000000000..c01b333876df2
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Sitemap.java
@@ -0,0 +1,122 @@
+/**
+ */
+package org.openhab.model.sitemap;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ *
+ * A representation of the model object 'Sitemap'.
+ *
+ *
+ *
+ *
+ *
+ * @see org.openhab.model.sitemap.SitemapPackage#getSitemap()
+ * @model
+ * @generated
+ */
+public interface Sitemap extends SitemapModel
+{
+ /**
+ * Returns the value of the 'Name' attribute.
+ *
+ *
+ * If the meaning of the 'Name' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Name' attribute.
+ * @see #setName(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getSitemap_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Sitemap#getName Name}' attribute.
+ *
+ *
+ * @param value the new value of the 'Name' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the 'Label' attribute.
+ *
+ *
+ * If the meaning of the 'Label' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Label' attribute.
+ * @see #setLabel(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getSitemap_Label()
+ * @model
+ * @generated
+ */
+ String getLabel();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Sitemap#getLabel Label}' attribute.
+ *
+ *
+ * @param value the new value of the 'Label' attribute.
+ * @see #getLabel()
+ * @generated
+ */
+ void setLabel(String value);
+
+ /**
+ * Returns the value of the 'Icon' attribute.
+ *
+ *
+ * If the meaning of the 'Icon' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Icon' attribute.
+ * @see #setIcon(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getSitemap_Icon()
+ * @model
+ * @generated
+ */
+ String getIcon();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Sitemap#getIcon Icon}' attribute.
+ *
+ *
+ * @param value the new value of the 'Icon' attribute.
+ * @see #getIcon()
+ * @generated
+ */
+ void setIcon(String value);
+
+ /**
+ * Returns the value of the 'Children' containment reference list.
+ * The list contents are of type {@link org.openhab.model.sitemap.Widget}.
+ *
+ *
+ * If the meaning of the 'Children' containment reference list isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Children' containment reference list.
+ * @see org.openhab.model.sitemap.SitemapPackage#getSitemap_Children()
+ * @model containment="true"
+ * @generated
+ */
+ EList getChildren();
+
+} // Sitemap
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/SitemapModel.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/SitemapModel.java
new file mode 100644
index 0000000000000..19ff030deecf9
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/SitemapModel.java
@@ -0,0 +1,19 @@
+/**
+ */
+package org.openhab.model.sitemap;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Model'.
+ *
+ *
+ *
+ * @see org.openhab.model.sitemap.SitemapPackage#getSitemapModel()
+ * @model
+ * @generated
+ */
+public interface SitemapModel extends EObject
+{
+} // SitemapModel
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Slider.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Slider.java
new file mode 100644
index 0000000000000..135b055b7f3c4
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Slider.java
@@ -0,0 +1,77 @@
+/**
+ */
+package org.openhab.model.sitemap;
+
+
+/**
+ *
+ * A representation of the model object 'Slider'.
+ *
+ *
+ *
+ *
+ *
+ * @see org.openhab.model.sitemap.SitemapPackage#getSlider()
+ * @model
+ * @generated
+ */
+public interface Slider extends NonLinkableWidget
+{
+ /**
+ * Returns the value of the 'Frequency' attribute.
+ *
+ *
+ * If the meaning of the 'Frequency' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Frequency' attribute.
+ * @see #setFrequency(int)
+ * @see org.openhab.model.sitemap.SitemapPackage#getSlider_Frequency()
+ * @model
+ * @generated
+ */
+ int getFrequency();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Slider#getFrequency Frequency}' attribute.
+ *
+ *
+ * @param value the new value of the 'Frequency' attribute.
+ * @see #getFrequency()
+ * @generated
+ */
+ void setFrequency(int value);
+
+ /**
+ * Returns the value of the 'Switch Enabled' attribute.
+ *
+ *
+ * If the meaning of the 'Switch Enabled' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Switch Enabled' attribute.
+ * @see #setSwitchEnabled(boolean)
+ * @see org.openhab.model.sitemap.SitemapPackage#getSlider_SwitchEnabled()
+ * @model
+ * @generated
+ */
+ boolean isSwitchEnabled();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Slider#isSwitchEnabled Switch Enabled}' attribute.
+ *
+ *
+ * @param value the new value of the 'Switch Enabled' attribute.
+ * @see #isSwitchEnabled()
+ * @generated
+ */
+ void setSwitchEnabled(boolean value);
+
+} // Slider
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Switch.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Switch.java
new file mode 100644
index 0000000000000..9e25290d7d256
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Switch.java
@@ -0,0 +1,41 @@
+/**
+ */
+package org.openhab.model.sitemap;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ *
+ * A representation of the model object 'Switch'.
+ *
+ *
+ *
+ *
+ *
+ * @see org.openhab.model.sitemap.SitemapPackage#getVisibilityRule()
+ * @model
+ * @generated
+ */
+public interface VisibilityRule extends EObject
+{
+ /**
+ * Returns the value of the 'Item' attribute.
+ *
+ *
+ * If the meaning of the 'Item' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Item' attribute.
+ * @see #setItem(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getVisibilityRule_Item()
+ * @model
+ * @generated
+ */
+ String getItem();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.VisibilityRule#getItem Item}' attribute.
+ *
+ *
+ * @param value the new value of the 'Item' attribute.
+ * @see #getItem()
+ * @generated
+ */
+ void setItem(String value);
+
+ /**
+ * Returns the value of the 'Condition' attribute.
+ *
+ *
+ * If the meaning of the 'Condition' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Condition' attribute.
+ * @see #setCondition(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getVisibilityRule_Condition()
+ * @model
+ * @generated
+ */
+ String getCondition();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.VisibilityRule#getCondition Condition}' attribute.
+ *
+ *
+ * @param value the new value of the 'Condition' attribute.
+ * @see #getCondition()
+ * @generated
+ */
+ void setCondition(String value);
+
+ /**
+ * Returns the value of the 'Sign' attribute.
+ *
+ *
+ * If the meaning of the 'Sign' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Sign' attribute.
+ * @see #setSign(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getVisibilityRule_Sign()
+ * @model
+ * @generated
+ */
+ String getSign();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.VisibilityRule#getSign Sign}' attribute.
+ *
+ *
+ * @param value the new value of the 'Sign' attribute.
+ * @see #getSign()
+ * @generated
+ */
+ void setSign(String value);
+
+ /**
+ * Returns the value of the 'State' attribute.
+ *
+ *
+ * If the meaning of the 'State' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'State' attribute.
+ * @see #setState(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getVisibilityRule_State()
+ * @model
+ * @generated
+ */
+ String getState();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.VisibilityRule#getState State}' attribute.
+ *
+ *
+ * @param value the new value of the 'State' attribute.
+ * @see #getState()
+ * @generated
+ */
+ void setState(String value);
+
+} // VisibilityRule
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Webview.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Webview.java
new file mode 100644
index 0000000000000..4ec866416fa22
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Webview.java
@@ -0,0 +1,77 @@
+/**
+ */
+package org.openhab.model.sitemap;
+
+
+/**
+ *
+ * A representation of the model object 'Webview'.
+ *
+ *
+ *
+ *
+ *
+ * @see org.openhab.model.sitemap.SitemapPackage#getWebview()
+ * @model
+ * @generated
+ */
+public interface Webview extends NonLinkableWidget
+{
+ /**
+ * Returns the value of the 'Height' attribute.
+ *
+ *
+ * If the meaning of the 'Height' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Height' attribute.
+ * @see #setHeight(int)
+ * @see org.openhab.model.sitemap.SitemapPackage#getWebview_Height()
+ * @model
+ * @generated
+ */
+ int getHeight();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Webview#getHeight Height}' attribute.
+ *
+ *
+ * @param value the new value of the 'Height' attribute.
+ * @see #getHeight()
+ * @generated
+ */
+ void setHeight(int value);
+
+ /**
+ * Returns the value of the 'Url' attribute.
+ *
+ *
+ * If the meaning of the 'Url' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Url' attribute.
+ * @see #setUrl(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getWebview_Url()
+ * @model
+ * @generated
+ */
+ String getUrl();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Webview#getUrl Url}' attribute.
+ *
+ *
+ * @param value the new value of the 'Url' attribute.
+ * @see #getUrl()
+ * @generated
+ */
+ void setUrl(String value);
+
+} // Webview
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Widget.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Widget.java
new file mode 100644
index 0000000000000..9cbd6342370b2
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/model/sitemap/Widget.java
@@ -0,0 +1,158 @@
+/**
+ */
+package org.openhab.model.sitemap;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ *
+ * A representation of the model object 'Widget'.
+ *
+ *
+ *
+ *
+ *
+ * @see org.openhab.model.sitemap.SitemapPackage#getWidget()
+ * @model
+ * @generated
+ */
+public interface Widget extends EObject
+{
+ /**
+ * Returns the value of the 'Item' attribute.
+ *
+ *
+ * If the meaning of the 'Item' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Item' attribute.
+ * @see #setItem(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getWidget_Item()
+ * @model
+ * @generated
+ */
+ String getItem();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Widget#getItem Item}' attribute.
+ *
+ *
+ * @param value the new value of the 'Item' attribute.
+ * @see #getItem()
+ * @generated
+ */
+ void setItem(String value);
+
+ /**
+ * Returns the value of the 'Label' attribute.
+ *
+ *
+ * If the meaning of the 'Label' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Label' attribute.
+ * @see #setLabel(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getWidget_Label()
+ * @model
+ * @generated
+ */
+ String getLabel();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Widget#getLabel Label}' attribute.
+ *
+ *
+ * @param value the new value of the 'Label' attribute.
+ * @see #getLabel()
+ * @generated
+ */
+ void setLabel(String value);
+
+ /**
+ * Returns the value of the 'Icon' attribute.
+ *
+ *
+ * If the meaning of the 'Icon' attribute isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Icon' attribute.
+ * @see #setIcon(String)
+ * @see org.openhab.model.sitemap.SitemapPackage#getWidget_Icon()
+ * @model
+ * @generated
+ */
+ String getIcon();
+
+ /**
+ * Sets the value of the '{@link org.openhab.model.sitemap.Widget#getIcon Icon}' attribute.
+ *
+ *
+ * @param value the new value of the 'Icon' attribute.
+ * @see #getIcon()
+ * @generated
+ */
+ void setIcon(String value);
+
+ /**
+ * Returns the value of the 'Label Color' containment reference list.
+ * The list contents are of type {@link org.openhab.model.sitemap.ColorArray}.
+ *
+ *
+ * If the meaning of the 'Label Color' containment reference list isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Label Color' containment reference list.
+ * @see org.openhab.model.sitemap.SitemapPackage#getWidget_LabelColor()
+ * @model containment="true"
+ * @generated
+ */
+ EList getLabelColor();
+
+ /**
+ * Returns the value of the 'Value Color' containment reference list.
+ * The list contents are of type {@link org.openhab.model.sitemap.ColorArray}.
+ *
+ *
+ * If the meaning of the 'Value Color' containment reference list isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Value Color' containment reference list.
+ * @see org.openhab.model.sitemap.SitemapPackage#getWidget_ValueColor()
+ * @model containment="true"
+ * @generated
+ */
+ EList getValueColor();
+
+ /**
+ * Returns the value of the 'Visibility' containment reference list.
+ * The list contents are of type {@link org.openhab.model.sitemap.VisibilityRule}.
+ *
+ *
+ * If the meaning of the 'Visibility' containment reference list isn't clear,
+ * there really should be more of a description here...
+ *
+ *
+ * @return the value of the 'Visibility' containment reference list.
+ * @see org.openhab.model.sitemap.SitemapPackage#getWidget_Visibility()
+ * @model containment="true"
+ * @generated
+ */
+ EList getVisibility();
+
+} // Widget
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/chart/ChartProvider.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/chart/ChartProvider.java
new file mode 100644
index 0000000000000..17dfeb5f8ae2f
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/chart/ChartProvider.java
@@ -0,0 +1,82 @@
+package org.openhab.ui.chart;
+
+import java.awt.image.BufferedImage;
+import java.util.Date;
+
+import org.openhab.core.items.ItemNotFoundException;
+
+/**
+ * Defines the interface for chart providers. A chart provider interfaces with
+ * the persistence store to get the data and receives parameters from the UI
+ * chart servlet and returns a chart image object (PNG).
+ *
+ * @author Chris Jackson
+ * @since 1.4.0
+ *
+ *
+ */
+public interface ChartProvider {
+ /**
+ * Gets the name of this chart provider.
+ *
+ * @return String containing the provider name
+ */
+ String getName();
+
+ /**
+ * Creates a chart object. This sets the initial parameters for the chart
+ * before the items are added
+ *
+ * @param service
+ * A string containing the name of the persistence service. May
+ * be null in which case the chart provider can decide itself
+ * which store to use.
+ * @param widget
+ * The widget ID. This allows the chart provider to look up the
+ * widget and get the items directly from the sitemap definition.
+ * May be null.
+ * @param theme
+ * A string containing a theme name for the chart. The provider
+ * should store its own themes. May be null to use a default
+ * theme.
+ * @param height
+ * The height of the chart.
+ * @param width
+ * The width of the chart.
+ * @param startTime
+ * The start time of the chart
+ * @param endTime
+ * The end time of the chart
+ * @param height
+ * The height of the chart
+ * @param width
+ * The width of the chart
+ * @param items
+ * The items to display on the chart
+ * @param groups
+ * The groups to display on the chart
+ *
+ * @return BufferedImage object if the chart is rendered correctly,
+ * otherwise null.
+ *
+ * @throws ItemNotFoundException if an item or group is not found
+ * @throws IllegalArgumentException if an invalid argument is passed
+ */
+ BufferedImage createChart(String service, String theme, Date startTime, Date endTime, int height,
+ int width, String items, String groups) throws ItemNotFoundException;
+
+ /**
+ * Gets the type of data that will be written by the chart.
+ *
+ * @return ImageType
+ */
+ ImageType getChartType();
+
+ /**
+ * Provides a list of image types
+ *
+ */
+ public enum ImageType {
+ png, jpg, gif;
+ }
+}
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/chart/internal/ChartProviderDelegate.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/chart/internal/ChartProviderDelegate.java
new file mode 100644
index 0000000000000..e6c0338db2c17
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/chart/internal/ChartProviderDelegate.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2014-2015 openHAB UG (haftungsbeschraenkt) and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.openhab.ui.chart.internal;
+
+import java.awt.image.BufferedImage;
+import java.util.Date;
+
+import org.apache.commons.lang.StringUtils;
+import org.eclipse.smarthome.core.items.ItemNotFoundException;
+import org.openhab.ui.chart.ChartProvider;
+
+
+/**
+ * This class serves as a mapping from the "old" org.openhab namespace to the new org.eclipse.smarthome
+ * namespace for the action service. It wraps an instance with the old interface
+ * into a class with the new interface.
+ *
+ * @author Kai Kreuzer - Initial contribution and API
+ */
+public class ChartProviderDelegate implements org.eclipse.smarthome.ui.chart.ChartProvider {
+
+ private ChartProvider provider;
+
+ public ChartProviderDelegate(ChartProvider chartProvider) {
+ this.provider = chartProvider;
+ }
+
+ @Override
+ public String getName() {
+ return provider.getName();
+ }
+
+ @Override
+ public BufferedImage createChart(String service, String theme, Date startTime, Date endTime, int height, int width,
+ String items, String groups) throws ItemNotFoundException {
+ try {
+ return provider.createChart(service, theme, startTime, endTime, height, width, items, groups);
+ } catch (org.openhab.core.items.ItemNotFoundException e) {
+ throw new ItemNotFoundException(StringUtils.substringBetween(e.getMessage(), "'"));
+ }
+ }
+
+ @Override
+ public ImageType getChartType() {
+ return ImageType.valueOf(provider.getChartType().name());
+ }
+
+}
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/chart/internal/ChartProviderFactory.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/chart/internal/ChartProviderFactory.java
new file mode 100644
index 0000000000000..393e9664c0c1d
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/chart/internal/ChartProviderFactory.java
@@ -0,0 +1,82 @@
+/**
+ * Copyright (c) 2014-2015 openHAB UG (haftungsbeschraenkt) and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.openhab.ui.chart.internal;
+
+import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Set;
+
+import org.openhab.ui.chart.ChartProvider;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+
+/**
+ * This class listens for services that implement the old chart provider service interface and registers
+ * an according service for each under the new interface.
+ *
+ * @author Kai Kreuzer - Initial contribution and API
+ */
+public class ChartProviderFactory {
+
+ private Map> delegates = new HashMap<>();
+ private BundleContext context;
+
+ private Set chartProviders = new HashSet<>();
+
+ public void activate(BundleContext context) {
+ this.context = context;
+ for(ChartProvider provider : chartProviders) {
+ registerDelegateProvider(provider);
+ }
+ }
+
+ public void deactivate() {
+ for(ServiceRegistration serviceReg : delegates.values()) {
+ serviceReg.unregister();
+ }
+ delegates.clear();
+ this.context = null;
+ }
+
+ public void addChartProvider(ChartProvider provider) {
+ if(context!=null) {
+ registerDelegateProvider(provider);
+ } else {
+ chartProviders.add(provider);
+ }
+ }
+
+ public void removeChartProvider(ChartProvider provider) {
+ if(context!=null) {
+ unregisterDelegateProvider(provider);
+ }
+ }
+
+ private void registerDelegateProvider(ChartProvider chartProvider) {
+ if(!delegates.containsKey(chartProvider.getName())) {
+ ChartProviderDelegate service = new ChartProviderDelegate(chartProvider);
+ Dictionary props = new Hashtable();
+ ServiceRegistration serviceReg =
+ context.registerService(org.eclipse.smarthome.ui.chart.ChartProvider.class, service, props);
+ delegates.put(chartProvider.getName(), serviceReg);
+ }
+ }
+
+ private void unregisterDelegateProvider(ChartProvider chartProvider) {
+ if(delegates.containsKey(chartProvider.getName())) {
+ ServiceRegistration serviceReg =
+ delegates.get(chartProvider.getName());
+ delegates.remove(chartProvider.getName());
+ serviceReg.unregister();
+ }
+ }
+}
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/items/ItemUIProvider.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/items/ItemUIProvider.java
new file mode 100644
index 0000000000000..6ea8ec247b8a7
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/items/ItemUIProvider.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2010-2014, openHAB.org and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.openhab.ui.items;
+
+import org.openhab.core.items.Item;
+import org.openhab.model.sitemap.Widget;
+
+
+/**
+ * This interface describes the methods that need to be implemented by a provider that
+ * wants to define the appearance of an item in the UI.
+ *
+ * @author Kai Kreuzer
+ *
+ */
+public interface ItemUIProvider {
+
+ /**
+ * Returns the name of a bitmap to use as an icon. This name does not need to include
+ * state information or a file extension; if these are missing, they will be automatically added.
+ *
+ * TODO: Note that the consumer of this provider needs to be aware of these icons, so we
+ * have some implicit dependency between them. Maybe worth refactoring?
+ *
+ * @param itemName the name of the item to return the icon for
+ * @return the name of the icon to use or null if undefined.
+ */
+ public String getIcon(String itemName);
+
+ /**
+ * Returns the label text to be used for an item in the UI.
+ *
+ * @param item the name of the item to return the label text for
+ * @return the label text to be used in the UI or null if undefined.
+ */
+ public String getLabel(String itemName);
+
+ /**
+ * Provides a default widget for a given item (class). This is used whenever
+ * the UI needs to be created dynamically and there is no other source
+ * of information about the widgets.
+ *
+ * @param itemType the class of the item
+ * @param itemName the item name to get the default widget for
+ *
+ * @return a widget implementation that can be used for the given item
+ */
+ public Widget getDefaultWidget(Class extends Item> itemType, String itemName);
+
+ /**
+ *
Provides a widget for a given item. This can be used to overwrite the widget
+ * listed in the sitemap. A use case for this is that the sitemap defines merely
+ * the parent-child-relation of widgets, but the concrete widget to be used for
+ * rendering might be selected dynamically at runtime.
+ *
If the sitemap widget should not be overridden, this method must return
+ * null.
+ *
+ * @param itemName the item name to get the widget for
+ * @return a widget to use for the given item or null if sitemap should not be overridden.
+ */
+ public Widget getWidget(String itemName);
+}
diff --git a/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/items/ItemUIRegistry.java b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/items/ItemUIRegistry.java
new file mode 100644
index 0000000000000..f78376b53c90c
--- /dev/null
+++ b/bundles/core/org.openhab.core.compat1x/src/main/java/org/openhab/ui/items/ItemUIRegistry.java
@@ -0,0 +1,158 @@
+/**
+ * Copyright (c) 2010-2014, openHAB.org and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.openhab.ui.items;
+
+import org.eclipse.emf.common.util.EList;
+import org.openhab.core.items.ItemRegistry;
+import org.openhab.core.types.State;
+import org.openhab.model.sitemap.LinkableWidget;
+import org.openhab.model.sitemap.Sitemap;
+import org.openhab.model.sitemap.Widget;
+
+/**
+ * This interface is used by a service which combines the core item registry
+ * with an aggregation of item ui providers; it can be therefore widely used for
+ * all UI related information requests regarding items.
+ *
+ * @author Kai Kreuzer
+ * @author Chris Jackson
+ * @since 0.8.0
+ *
+ */
+public interface ItemUIRegistry extends ItemRegistry, ItemUIProvider {
+
+ /**
+ * Retrieves the label for a widget.
+ *
+ * This first checks, if there is a label defined in the sitemap. If not, it
+ * checks all item UI providers for a label. If no label can be found, it is
+ * set to an empty string.
+ *
+ * If the label contains a "[%format]" section, i.e.
+ * “[%s]" for a string or "[%.3f]" for a decimal, this is replaced by the
+ * current value of the item and padded by a "" element.
+ *
+ * @param w
+ * the widget to retrieve the label for
+ * @return the label to use for the widget
+ */
+ public String getLabel(Widget w);
+
+ /**
+ * Retrieves the icon name for a widget.
+ *
+ * This first checks, if there is an icon defined in the sitemap. If not, if
+ * checks all item UI providers for an icon. If no icon can be found, the
+ * default icon name is the widget type name, e.g. "switch".
+ *
+ * If the icon name does not contain a "-" and has a state other than
+ * "undefined", its current state is appended to the icon name, e.g.
+ * "switch-on". If no such icon exists, the base icon ("switch") will be
+ * returned nonetheless.
+ *
+ * @param w
+ * the widget to retrieve the icon name for
+ * @return the icon name to use for the widget
+ */
+ public String getIcon(Widget w);
+
+ /**
+ * Retrieves the current state of the item of a widget or
+ * UnDefType.UNDEF.
+ *
+ * @param w
+ * the widget to retrieve the item state for
+ * @return the item state of the widget
+ */
+ public State getState(Widget w);
+
+ /**
+ * Retrieves the widget for a given id on a given sitemap.
+ *
+ * @param sitemap
+ * the sitemap to look for the widget
+ * @param id
+ * the id of the widget to look for
+ * @return the widget for the given id
+ */
+ public Widget getWidget(Sitemap sitemap, String id);
+
+ /**
+ * Provides an id for a widget.
+ *
+ * This constructs a string out of the position of the sitemap, so if this
+ * widget is the third child of a page linked from the fifth widget on the
+ * home screen, its id would be "0503". If the widget is dynamically created
+ * and not available in the sitemap, the name of its associated item is used
+ * instead.
+ *
+ * @param w
+ * the widget to get the id for
+ * @return an id for this widget
+ */
+ public String getWidgetId(Widget w);
+
+ /**
+ * this should be used instead of LinkableWidget.getChildren() as there
+ * might be no children defined on the widget, but they should be
+ * dynamically determined by looking at the members of the underlying item.
+ *
+ * @param w
+ * the widget to retrieve the children for
+ * @return the (dynamically or statically defined) children of the widget
+ */
+ public EList getChildren(LinkableWidget w);
+
+ /**
+ * Checks whether an icon with a given name exists
+ *
+ * @param icon
+ * the icon name to check
+ * @return true, if the icon exists
+ */
+ public boolean iconExists(String icon);
+
+ /**
+ * Gets the label color for the widget. Checks conditional statements to
+ * find the color based on the item value
+ *
+ * @param w
+ * Widget
+ * @return String with the color
+ */
+ public String getLabelColor(Widget w);
+
+ /**
+ * Gets the value color for the widget. Checks conditional statements to
+ * find the color based on the item value
+ *
+ * @param w
+ * Widget
+ * @return String with the color
+ */
+ public String getValueColor(Widget w);
+
+ /**
+ * Gets the widget visibility based on the item state
+ *
+ * @param w
+ * Widget
+ * @return true if the item is visible
+ */
+ public boolean getVisiblity(Widget w);
+
+ /**
+ * Gets the item state
+ *
+ * @param itemName
+ * item name
+ * @return State of the item
+ */
+ public State getItemState(String itemName);
+}
diff --git a/bundles/core/org.openhab.core.init/.classpath b/bundles/core/org.openhab.core.init/.classpath
index 913a170d25eb1..1e446acfc621c 100644
--- a/bundles/core/org.openhab.core.init/.classpath
+++ b/bundles/core/org.openhab.core.init/.classpath
@@ -1,8 +1,8 @@
+
+
-
-
diff --git a/bundles/core/org.openhab.core.init/.settings/org.eclipse.jdt.core.prefs b/bundles/core/org.openhab.core.init/.settings/org.eclipse.jdt.core.prefs
index 4ede96d8a736c..443e08599a2e6 100644
--- a/bundles/core/org.openhab.core.init/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/core/org.openhab.core.init/.settings/org.eclipse.jdt.core.prefs
@@ -1,2 +1,8 @@
eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/bundles/core/org.openhab.core/.classpath b/bundles/core/org.openhab.core/.classpath
index 913a170d25eb1..1e446acfc621c 100644
--- a/bundles/core/org.openhab.core/.classpath
+++ b/bundles/core/org.openhab.core/.classpath
@@ -1,8 +1,8 @@
+
+
-
-
diff --git a/bundles/core/org.openhab.core/.settings/org.eclipse.jdt.core.prefs b/bundles/core/org.openhab.core/.settings/org.eclipse.jdt.core.prefs
index 4ede96d8a736c..443e08599a2e6 100644
--- a/bundles/core/org.openhab.core/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/core/org.openhab.core/.settings/org.eclipse.jdt.core.prefs
@@ -1,2 +1,8 @@
eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/bundles/core/org.openhab.core/META-INF/MANIFEST.MF b/bundles/core/org.openhab.core/META-INF/MANIFEST.MF
index b3a95abf78514..68b54c33551df 100644
--- a/bundles/core/org.openhab.core/META-INF/MANIFEST.MF
+++ b/bundles/core/org.openhab.core/META-INF/MANIFEST.MF
@@ -1,6 +1,5 @@
Manifest-Version: 1.0
-Service-Component: OSGI-INF/autoapprove.xml,OSGI-INF/thingitemprovider.xml,
- OSGI-INF/thinglinkprovider.xml,OSGI-INF/defaultsitemapprovider.xml
+Service-Component: OSGI-INF/*.xml
Private-Package: org.openhab.core.internal,org.openhab.core.internal.e
vents,org.openhab.core.internal.items
Ignore-Package: org.openhab.core.internal.items,org.openhab.core.inter
@@ -30,6 +29,7 @@ Import-Package: com.google.common.cache;version="10.0.1",
org.eclipse.smarthome.core.items,
org.eclipse.smarthome.core.thing,
org.eclipse.smarthome.core.thing.link,
+ org.eclipse.smarthome.core.thing.setup,
org.eclipse.smarthome.core.thing.type,
org.eclipse.smarthome.core.types,
org.eclipse.smarthome.model.rule.runtime;resolution:=optional,
diff --git a/bundles/core/org.openhab.core/OSGI-INF/autoapprove.xml b/bundles/core/org.openhab.core/OSGI-INF/autoapprove.xml
index 9cd2117d884ae..8c8cbf74e5316 100644
--- a/bundles/core/org.openhab.core/OSGI-INF/autoapprove.xml
+++ b/bundles/core/org.openhab.core/OSGI-INF/autoapprove.xml
@@ -11,7 +11,7 @@
-->
-
+
diff --git a/bundles/core/org.openhab.core/OSGI-INF/thingitemprovider.xml b/bundles/core/org.openhab.core/OSGI-INF/thingitemprovider.xml
deleted file mode 100644
index 51166816353b1..0000000000000
--- a/bundles/core/org.openhab.core/OSGI-INF/thingitemprovider.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/bundles/core/org.openhab.core/OSGI-INF/thinglinkprovider.xml b/bundles/core/org.openhab.core/OSGI-INF/thinglinkprovider.xml
deleted file mode 100644
index 760e47d89173c..0000000000000
--- a/bundles/core/org.openhab.core/OSGI-INF/thinglinkprovider.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/inbox/AutoApproveService.java b/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/inbox/AutoApproveService.java
index 695a7bda835fd..d58869ecbcda5 100644
--- a/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/inbox/AutoApproveService.java
+++ b/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/inbox/AutoApproveService.java
@@ -16,7 +16,7 @@
import org.eclipse.smarthome.config.discovery.DiscoveryResultFlag;
import org.eclipse.smarthome.config.discovery.inbox.Inbox;
import org.eclipse.smarthome.config.discovery.inbox.InboxListener;
-import org.eclipse.smarthome.core.thing.ManagedThingProvider;
+import org.eclipse.smarthome.core.thing.setup.ThingSetupManager;
import org.osgi.service.cm.ConfigurationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -33,35 +33,41 @@ public class AutoApproveService implements InboxListener {
final static private Logger logger = LoggerFactory.getLogger(AutoApproveService.class);
- private ManagedThingProvider managedThingProvider;
+ private ThingSetupManager thingSetupManager;
private Inbox inbox;
protected void activate(Map configProps) throws ConfigurationException {
String enabled = (String) configProps.get("enabled");
- if("true".equalsIgnoreCase(enabled)) {
- inbox.addInboxListener(this);
- for(DiscoveryResult result : inbox.getAll()) {
- if(result.getFlag().equals(DiscoveryResultFlag.NEW)) {
- thingAdded(inbox, result);
- }
- }
- } else {
- this.inbox.removeInboxListener(this);
- }
+ enable(enabled);
+ }
+
+ protected void modified(Map configProps) throws ConfigurationException {
+ String enabled = (String) configProps.get("enabled");
+ enable(enabled);
}
- @Override
+ private void enable(String enabled) {
+ if("true".equalsIgnoreCase(enabled)) {
+ inbox.addInboxListener(this);
+ for(DiscoveryResult result : inbox.getAll()) {
+ if(result.getFlag().equals(DiscoveryResultFlag.NEW)) {
+ thingAdded(inbox, result);
+ }
+ }
+ } else {
+ this.inbox.removeInboxListener(this);
+ }
+ }
+
+ @Override
public void thingAdded(Inbox source, DiscoveryResult result) {
logger.debug("Approving inbox entry '{}'", result.toString());
Map props = new HashMap<>(result.getProperties());
- // TODO: this is a hack as long as we do not have a possibility to store localized labels for things
- props.put("label", result.getLabel());
-
Configuration conf = new Configuration(props);
- managedThingProvider.createThing(result.getThingTypeUID(), result.getThingUID(), result.getBridgeUID(), conf);
+ thingSetupManager.addThing(result.getThingUID(), conf, result.getBridgeUID(), result.getLabel());
}
@Override
@@ -82,12 +88,12 @@ protected void unsetInbox(Inbox inbox) {
}
- protected void setManagedThingProvider(ManagedThingProvider managedThingProvider) {
- this.managedThingProvider = managedThingProvider;
+ protected void setThingSetupManager(ThingSetupManager thingSetupManager) {
+ this.thingSetupManager = thingSetupManager;
}
- protected void unsetManagedThingProvider(ManagedThingProvider managedThingProvider) {
- this.managedThingProvider = null;
+ protected void unsetThingSetupManager(ThingSetupManager thingSetupManager) {
+ this.thingSetupManager = null;
}
}
diff --git a/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/item/DefaultSitemapProvider.java b/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/item/DefaultSitemapProvider.java
index 1b73e98f5a7fc..530d72d6c1ac8 100644
--- a/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/item/DefaultSitemapProvider.java
+++ b/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/item/DefaultSitemapProvider.java
@@ -11,6 +11,7 @@
import org.eclipse.smarthome.core.items.GroupItem;
import org.eclipse.smarthome.core.items.Item;
import org.eclipse.smarthome.core.items.ItemRegistry;
+import org.eclipse.smarthome.core.thing.setup.ThingSetupManager;
import org.eclipse.smarthome.model.sitemap.Sitemap;
import org.eclipse.smarthome.model.sitemap.SitemapFactory;
import org.eclipse.smarthome.model.sitemap.SitemapProvider;
@@ -41,21 +42,38 @@ protected void unsetItemRegistry(ItemRegistry itemRegistry) {
public Sitemap getSitemap(String sitemapName) {
if(sitemapName.equals("default")) {
SitemapImpl sitemap = (SitemapImpl) SitemapFactory.eINSTANCE.createSitemap();
- FrameImpl frame = (FrameImpl) SitemapFactory.eINSTANCE.createFrame();
+ FrameImpl mainFrame = (FrameImpl) SitemapFactory.eINSTANCE.createFrame();
+
+ FrameImpl thingFrame = (FrameImpl) SitemapFactory.eINSTANCE.createFrame();
+ thingFrame.setLabel("Things");
sitemap.setLabel("Home");
sitemap.setName("default");
- sitemap.getChildren().add(frame);
for(Item item : itemRegistry.getAll()) {
- if(item instanceof GroupItem && !item.getName().equals("Things")
- && (item.getGroupNames().isEmpty() || item.getGroupNames().contains("Things"))) {
+ if(item instanceof GroupItem && (item.getTags().contains(ThingSetupManager.TAG_HOME_GROUP) || item.getTags().contains(ThingSetupManager.TAG_THING))) {
GroupImpl group = (GroupImpl) SitemapFactory.eINSTANCE.createGroup();
group.setItem(item.getName());
- frame.getChildren().add(group);
+ group.setLabel(item.getLabel());
+ String category = item.getCategory();
+ if(category != null) {
+ group.setIcon(item.getCategory());
+ }
+ if(item.getTags().contains(ThingSetupManager.TAG_HOME_GROUP)) {
+ mainFrame.getChildren().add(group);
+ } else {
+ thingFrame.getChildren().add(group);
+ }
}
}
-
+
+ if(!mainFrame.getChildren().isEmpty()) {
+ sitemap.getChildren().add(mainFrame);
+ }
+ if(!thingFrame.getChildren().isEmpty()) {
+ sitemap.getChildren().add(thingFrame);
+ }
+
return sitemap;
}
return null;
diff --git a/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/item/ThingItemChannelLinkProvider.java b/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/item/ThingItemChannelLinkProvider.java
deleted file mode 100644
index 92cde341cbeee..0000000000000
--- a/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/item/ThingItemChannelLinkProvider.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/**
- * Copyright (c) 2014-2015 openHAB UG (haftungsbeschraenkt) and others.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- */
-package org.openhab.core.internal.item;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.smarthome.core.common.registry.Provider;
-import org.eclipse.smarthome.core.common.registry.ProviderChangeListener;
-import org.eclipse.smarthome.core.common.registry.RegistryChangeListener;
-import org.eclipse.smarthome.core.thing.Channel;
-import org.eclipse.smarthome.core.thing.Thing;
-import org.eclipse.smarthome.core.thing.ThingRegistry;
-import org.eclipse.smarthome.core.thing.link.ItemChannelLink;
-import org.eclipse.smarthome.core.thing.link.ItemChannelLinkProvider;
-
-/**
- * This class provides item channel links for all items that were created through
- * the {@link ThingItemUIProvider}.
- *
- * @author Kai Kreuzer
- *
- */
-public class ThingItemChannelLinkProvider implements ItemChannelLinkProvider, RegistryChangeListener {
-
- private Set> listeners = new HashSet<>();
- private ThingRegistry thingRegistry;
- private ThingItemUIProvider thingItemUIProvider;
-
- @Override
- public void addProviderChangeListener(
- ProviderChangeListener listener) {
- listeners.add(listener);
- }
-
- @Override
- public void removeProviderChangeListener(
- ProviderChangeListener listener) {
- listeners.remove(listener);
- }
-
- @Override
- public Set getAll() {
- Set links = new HashSet<>();
- if(thingItemUIProvider.isEnabled()) {
- for(Thing thing : thingRegistry.getAll()) {
- links.addAll(getLinks(thing));
- }
- }
- return links;
- }
-
- private Set getLinks(Thing element) {
- Set links = new HashSet<>();
- if(thingItemUIProvider.isEnabled()) {
- for(Channel channel : element.getChannels()) {
- links.add(new ItemChannelLink(channel.getUID().toString().replace(":", "_").replaceAll("#", "_"), channel.getUID()));
- }
- }
- return links;
- }
-
- protected void setThingItemUIProvider(ThingItemUIProvider thingItemUIProvider) {
- this.thingItemUIProvider = thingItemUIProvider;
- }
-
- protected void unsetThingItemUIProvider(ThingItemUIProvider thingItemUIProvider) {
- this.thingItemUIProvider = null;
- }
-
- protected void setThingRegistry(ThingRegistry thingRegistry) {
- this.thingRegistry = thingRegistry;
- this.thingRegistry.addRegistryChangeListener(this);
- }
-
- protected void unsetThingRegistry(ThingRegistry thingRegistry) {
- this.thingRegistry.addRegistryChangeListener(this);
- this.thingRegistry = null;
- }
-
- public void updated(Provider provider, Thing oldelement,
- Thing element) {
- for(ProviderChangeListener listener : listeners) {
- for(ItemChannelLink link : getLinks(oldelement)) {
- listener.removed(this, link);
- }
- for(ItemChannelLink link : getLinks(element)) {
- listener.added(this, link);
- }
- }
- }
-
- @Override
- public void added(Thing element) {
- for(ProviderChangeListener listener : listeners) {
- for(ItemChannelLink link : getLinks(element)) {
- listener.added(this, link);
- }
- }
- }
-
- @Override
- public void removed(Thing element) {
- for(ProviderChangeListener listener : listeners) {
- for(ItemChannelLink link : getLinks(element)) {
- listener.removed(this, link);
- }
- }
- }
-
- @Override
- public void updated(Thing oldElement, Thing element) {
- for(ProviderChangeListener listener : listeners) {
- for(ItemChannelLink link : getLinks(oldElement)) {
- listener.removed(this, link);
- }
- for(ItemChannelLink link : getLinks(element)) {
- listener.added(this, link);
- }
- }
- }
-
-}
diff --git a/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/item/ThingItemUIProvider.java b/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/item/ThingItemUIProvider.java
deleted file mode 100644
index 421ce9bc25079..0000000000000
--- a/bundles/core/org.openhab.core/src/main/java/org/openhab/core/internal/item/ThingItemUIProvider.java
+++ /dev/null
@@ -1,319 +0,0 @@
-/**
- * Copyright (c) 2014-2015 openHAB UG (haftungsbeschraenkt) and others.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- */
-package org.openhab.core.internal.item;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.WordUtils;
-import org.eclipse.smarthome.core.common.registry.ProviderChangeListener;
-import org.eclipse.smarthome.core.common.registry.RegistryChangeListener;
-import org.eclipse.smarthome.core.events.EventPublisher;
-import org.eclipse.smarthome.core.items.GroupItem;
-import org.eclipse.smarthome.core.items.Item;
-import org.eclipse.smarthome.core.items.ItemFactory;
-import org.eclipse.smarthome.core.items.ItemProvider;
-import org.eclipse.smarthome.core.thing.Bridge;
-import org.eclipse.smarthome.core.thing.Channel;
-import org.eclipse.smarthome.core.thing.ManagedThingProvider;
-import org.eclipse.smarthome.core.thing.Thing;
-import org.eclipse.smarthome.core.thing.ThingRegistry;
-import org.eclipse.smarthome.core.thing.ThingStatus;
-import org.eclipse.smarthome.core.thing.type.ChannelDefinition;
-import org.eclipse.smarthome.core.thing.type.ThingType;
-import org.eclipse.smarthome.core.thing.type.ThingTypeRegistry;
-import org.eclipse.smarthome.core.types.UnDefType;
-import org.eclipse.smarthome.model.sitemap.Widget;
-import org.eclipse.smarthome.ui.items.ItemUIProvider;
-import org.osgi.service.cm.ConfigurationException;
-
-/**
- * This class dynamically provides items incl. labels from all things of the {@link ManagedThingProvider}.
- * All items are hierarchically sorted with a root group item called "Things".
- *
- * @author Kai Kreuzer
- *
- */
-public class ThingItemUIProvider implements ItemUIProvider, ItemProvider, RegistryChangeListener {
-
- private Set> listeners = new HashSet<>();
-
- private ThingRegistry thingRegistry;
- private ItemFactory itemFactory;
- private ThingTypeRegistry thingTypeRegistry;
- private EventPublisher eventPublisher;
- private GroupItem rootItem;
-
- private boolean enabled = false;
-
-
- @Override
- public String getIcon(String itemName) {
- if(!enabled) return null;
-
- if("Things".equals(itemName)) {
- return "network";
- }
-
- for(Thing thing : thingRegistry.getAll()) {
- if(thing.getUID().toString().replaceAll(":", "_").replaceAll("#", "_").equals(itemName)) {
- String icon = null;
- if(thing instanceof Bridge) {
- icon = "network";
- } else {
- icon = "switch";
- }
- if(thing.getStatus().equals(ThingStatus.ONLINE)) {
- return icon + "-on";
- } else {
- return icon + "-off";
- }
- }
- for(Channel ch : thing.getChannels()) {
- if(ch.getUID().toString().replaceAll(":", "_").replaceAll("#", "_").equals(itemName)) {
- if(ch.getAcceptedItemType().equals("Color")) {
- return "switch";
- }
- if(ch.getAcceptedItemType().equals("Dimmer")) {
- return "switch";
- }
- }
- }
- }
- return null;
- }
-
- @Override
- public String getLabel(String itemName) {
- if(!enabled) return null;
-
- for(Thing thing : thingRegistry.getAll()) {
- if(thing.getUID().toString().replaceAll(":", "_").replaceAll("#", "_").equals(itemName)) {
- String label = (String) thing.getConfiguration().get("label");
- if(label!=null && !label.isEmpty()) {
- return label;
- } else {
- return WordUtils.capitalize(itemName.replace("_", " "));
- }
- }
- for(Channel channel : thing.getChannels()) {
- if(channel.getUID().toString().replaceAll(":", "_").replaceAll("#", "_").equals(itemName)) {
- String label = (String) StringUtils.capitalize(channel.getUID().getId());
- ThingType thingType = thingTypeRegistry.getThingType(thing.getThingTypeUID());
- if(thingType!=null) {
- for(ChannelDefinition chDef : thingType.getChannelDefinitions()) {
- if (chDef.getId().equals(channel.getUID().getId())) {
- label = chDef.getType().getLabel();
- }
- }
- }
- if(channel.getAcceptedItemType().equals("String")) label += " [%s]";
- if(channel.getAcceptedItemType().equals("Number")) label += " [%.1f]";
- return label;
- }
- }
- }
- return null;
- }
-
- @Override
- public Widget getDefaultWidget(Class extends Item> itemType,
- String itemName) {
- return null;
- }
-
- @Override
- public Widget getWidget(String itemName) {
- return null;
- }
-
- @Override
- public Collection getAll() {
- if(!enabled) return Collections.emptySet();
-
- Set items = new HashSet<>();
- GroupItem all = getRootItem();
- for(Thing thing : thingRegistry.getAll()) {
- GroupItem group = createItemsForThing(thing);
- if((thing instanceof Bridge) || thing.getBridgeUID() == null) {
- if(group!=null) {
- if(all.getMembers().contains(group)) {
- all.removeMember(group);
- }
- all.addMember(group);
- }
- }
- for(Item item : group.getAllMembers()) {
- items.add(item);
- }
- items.add(group);
- }
- items.add(all);
- return items;
- }
-
- /*default*/ GroupItem createItemsForThing(Thing thing) {
- GroupItem group = new GroupItem(thing.getUID().toString().replaceAll(":", "_").replaceAll("#", "_"));
- for(Channel channel : thing.getChannels()) {
- Item item = itemFactory.createItem(channel.getAcceptedItemType(), channel.getUID().toString().replaceAll(":", "_").replaceAll("#", "_"));
- if(item!=null) {
- if(group.getMembers().contains(item)) {
- group.removeMember(item);
- }
- group.addMember(item);
- }
- }
- if(thing instanceof Bridge) {
- Bridge bridge = (Bridge) thing;
- for(Thing child : bridge.getThings()) {
- group.addMember(createItemsForThing(child));
- }
- }
- if(thing.getBridgeUID()!=null) {
- group.addGroupName(thing.getBridgeUID().toString().replaceAll(":", "_").replaceAll("#", "_"));
- } else {
- group.addGroupName("Things");
- }
- return group;
- }
-
- @Override
- public void addProviderChangeListener(ProviderChangeListener listener) {
- listeners.add(listener);
- for(Item item : getAll()) {
- listener.added(this, item);
- }
- }
-
- @Override
- public void removeProviderChangeListener(
- ProviderChangeListener listener) {
- listeners.remove(listener);
-
- }
-
- protected void setItemFactory(ItemFactory itemFactory) {
- this.itemFactory = itemFactory;
- }
-
- protected void unsetItemFactory(ItemFactory itemFactory) {
- this.itemFactory = null;
- }
-
- protected void setThingRegistry(ThingRegistry thingRegistry) {
- this.thingRegistry = thingRegistry;
- this.thingRegistry.addRegistryChangeListener(this);
- }
-
- protected void unsetThingRegistry(ThingRegistry thingRegistry) {
- this.thingRegistry.addRegistryChangeListener(this);
- this.thingRegistry = null;
- }
-
- protected void setEventPublisher(EventPublisher eventPublisher) {
- this.eventPublisher = eventPublisher;
- }
-
- protected void unsetEventPublisher(EventPublisher eventPublisher) {
- this.eventPublisher = null;
- }
-
- protected void setThingTypeRegistry(ThingTypeRegistry thingTypeRegistry) {
- this.thingTypeRegistry = thingTypeRegistry;
- }
-
- protected void unsetThingTypeRegistry(ThingTypeRegistry thingProvider) {
- this.thingTypeRegistry = null;
- }
-
- private synchronized GroupItem getRootItem() {
- if(rootItem==null) {
- rootItem = new GroupItem("Things");
- getAll();
- }
- return rootItem;
- }
-
- protected void activate(Map properties) throws ConfigurationException {
- if(properties!=null) {
- String enabled = (String) properties.get("enabled");
- if("true".equalsIgnoreCase(enabled)) {
- this.enabled = true;
- for(ProviderChangeListener listener : listeners) {
- for(Item item : getAll()) {
- listener.added(this, item);
- }
- }
- } else {
- this.enabled = false;
- for(ProviderChangeListener listener : listeners) {
- for(Item item : getAll()) {
- listener.removed(this, item);
- }
- }
- }
- }
- }
-
- @Override
- public void added(Thing element) {
- if(!enabled) return;
- for(ProviderChangeListener listener : listeners) {
- listener.removed(this, getRootItem());
- }
- rootItem = null;
- GroupItem group = createItemsForThing(element);
- rootItem = getRootItem();
- for(ProviderChangeListener listener : listeners) {
- for(Item item : group.getMembers()) {
- listener.added(this, item);
- }
- listener.added(this, group);
- listener.added(this, getRootItem());
-
- }
- if(group.getAcceptedDataTypes().contains(UnDefType.UNDEF)) {
- eventPublisher.postUpdate(group.getName(), UnDefType.UNDEF);
- }
- if(rootItem.getAcceptedDataTypes().contains(UnDefType.UNDEF)) {
- eventPublisher.postUpdate(rootItem.getName(), UnDefType.UNDEF);
- }
- }
-
- @Override
- public void removed(Thing element) {
- if(!enabled) return;
- for(ProviderChangeListener listener : listeners) {
- listener.removed(this, getRootItem());
- rootItem = null;
- GroupItem group = createItemsForThing(element);
- listener.removed(this, group);
- for(Item item : group.getMembers()) {
- listener.removed(this, item);
- }
- listener.added(this, getRootItem());
- }
- }
-
- @Override
- public void updated(Thing oldElement, Thing element) {
- if(!enabled) return;
- removed(oldElement);
- added(element);
- }
-
- public boolean isEnabled() {
- return enabled;
- }
-
-}
diff --git a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/.classpath b/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/.classpath
deleted file mode 100644
index 8fded99aab140..0000000000000
--- a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/.settings/org.eclipse.pde.core.prefs b/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index e67024ad35216..0000000000000
--- a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Mon Oct 11 21:08:09 CEST 2010
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/META-INF/MANIFEST.MF b/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/META-INF/MANIFEST.MF
deleted file mode 100644
index c85662642de93..0000000000000
--- a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,36 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse SmartHome Multimedia I/O MaryTTS Bundle
-Bundle-SymbolicName: org.eclipse.smarthome.io.multimedia.tts.marytts
-Bundle-Version: 0.8.0.qualifier
-Bundle-Vendor: Eclipse.org/SmartHome
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7
-Bundle-ClassPath: .,
- lib/voice-cmu-slt-hsmm-5.0.jar,
- lib/voice-bits1-hsmm-5.0-SNAPSHOT.jar,
- lib/voice-bits3-hsmm-5.0-SNAPSHOT.jar,
- lib/emotionml-checker-java-1.0-SNAPSHOT.jar,
- lib/freetts-1.0.jar,
- lib/freetts-de-1.0.jar,
- lib/freetts-en_us-1.0.jar,
- lib/jtok-core-1.9.1.jar,
- lib/marytts-server-5.1-SNAPSHOT.jar,
- lib/mwdumper-1.16.jar,
- lib/sgt-3.0.jar,
- lib/marytts-runtime-5.1-SNAPSHOT.jar,
- lib/marytts-common-5.1-SNAPSHOT.jar,
- lib/marytts-signalproc-5.1-SNAPSHOT.jar,
- lib/marytts-lang-de-5.1-SNAPSHOT.jar,
- lib/marytts-lang-en-5.1-SNAPSHOT.jar,
- lib/opennlp-maxent-3.0.1-incubating.jar,
- lib/opennlp-tools-1.5.1-incubating.jar
-Import-Package: org.apache.commons.collections.map,
- org.apache.commons.io,
- org.apache.commons.lang,
- org.eclipse.smarthome.core.library.types,
- org.eclipse.smarthome.io.multimedia.tts,
- org.osgi.framework,
- org.slf4j
-Service-Component: OSGI-INF/tts_mary.xml
-Bundle-ActivationPolicy: lazy
-Bundle-Activator: org.eclipse.smarthome.io.multimedia.tts.marytts.internal.MultimediaActivator
diff --git a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/about.html b/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/about.html
deleted file mode 100644
index c258ef55d834c..0000000000000
--- a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-About
-
-
-
About This Content
-
-
June 5, 2006
-
License
-
-
The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
-at http://www.eclipse.org/legal/epl-v10.html.
-For purposes of the EPL, "Program" will mean the Content.
-
-
If you did not receive this Content directly from the Eclipse Foundation, the Content is
-being redistributed by another party ("Redistributor") and different terms and conditions may
-apply to your use of any object code in the Content. Check the Redistributor's license that was
-provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at http://www.eclipse.org.
-
-
-
\ No newline at end of file
diff --git a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/build.properties b/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/build.properties
deleted file mode 100644
index 41d7510ccb735..0000000000000
--- a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/build.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-output.. = target/classes/
-bin.includes = META-INF/,\
- .,\
- OSGI-INF/,\
- about.html,\
- lib/voice-bits1-hsmm-5.0-SNAPSHOT.jar,\
- lib/voice-bits3-hsmm-5.0-SNAPSHOT.jar,\
- lib/voice-cmu-slt-hsmm-5.0.jar,\
- lib/emotionml-checker-java-1.0-SNAPSHOT.jar,\
- lib/freetts-1.0.jar,\
- lib/freetts-de-1.0.jar,\
- lib/freetts-en_us-1.0.jar,\
- lib/jtok-core-1.9.1.jar,\
- lib/marytts-server-5.1-SNAPSHOT.jar,\
- lib/mwdumper-1.16.jar,\
- lib/sgt-3.0.jar,\
- lib/marytts-runtime-5.1-SNAPSHOT.jar,\
- lib/marytts-common-5.1-SNAPSHOT.jar,\
- lib/marytts-signalproc-5.1-SNAPSHOT.jar,\
- lib/marytts-lang-de-5.1-SNAPSHOT.jar,\
- lib/marytts-lang-en-5.1-SNAPSHOT.jar,\
- lib/opennlp-maxent-3.0.1-incubating.jar,\
- lib/opennlp-tools-1.5.1-incubating.jar
-source.. = src/main/java/
diff --git a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/lib/marytts-common-5.1-SNAPSHOT.jar b/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/lib/marytts-common-5.1-SNAPSHOT.jar
deleted file mode 100644
index ec28b9956562d..0000000000000
Binary files a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/lib/marytts-common-5.1-SNAPSHOT.jar and /dev/null differ
diff --git a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/lib/marytts-runtime-5.1-SNAPSHOT.jar b/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/lib/marytts-runtime-5.1-SNAPSHOT.jar
deleted file mode 100644
index de055708a2ece..0000000000000
Binary files a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/lib/marytts-runtime-5.1-SNAPSHOT.jar and /dev/null differ
diff --git a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/lib/marytts-server-5.1-SNAPSHOT.jar b/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/lib/marytts-server-5.1-SNAPSHOT.jar
deleted file mode 100644
index 5a5797e907dbf..0000000000000
Binary files a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/lib/marytts-server-5.1-SNAPSHOT.jar and /dev/null differ
diff --git a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/lib/marytts-signalproc-5.1-SNAPSHOT.jar b/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/lib/marytts-signalproc-5.1-SNAPSHOT.jar
deleted file mode 100644
index 2d58c4378a25d..0000000000000
Binary files a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/lib/marytts-signalproc-5.1-SNAPSHOT.jar and /dev/null differ
diff --git a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/pom.xml b/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/pom.xml
deleted file mode 100644
index 23ad6f18cb6f5..0000000000000
--- a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/pom.xml
+++ /dev/null
@@ -1,219 +0,0 @@
-
-
-
-
- org.eclipse.smarthome.bundles
- io
- 0.8.0-SNAPSHOT
-
-
-
- org.eclipse.smarthome.io.multimedia.tts.marytts
- org.eclipse.smarthome.io.multimedia.tts.marytts
- ${basedir}/resources
-
-
- 4.0.0
- org.eclipse.smarthome.io
- org.eclipse.smarthome.io.multimedia.tts.marytts
-
- Eclipse SmartHome Multimedia I/O MaryTTS
-
- eclipse-plugin
-
-
-
-
- com.savage7.maven.plugins
- maven-external-dependency-plugin
-
-
- ${basedir}/lib
-
-
-
-
- com.sun.speech.freetts
- freetts
- 1.0
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/freetts-1.0.jar
-
- true
-
-
-
- com.sun.speech.freetts
- freetts-de
- 1.0
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/freetts-de-1.0.jar
-
- true
-
-
-
- com.sun.speech.freetts
- freetts-en_us
- 1.0
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/freetts-en_us-1.0.jar
-
- true
-
-
-
- gov.noaa.pmel.sgt
- sgt
- 3.0
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/sgt-3.0.jar
-
- true
-
-
-
- de.dfki.lt.jtok
- jtok-core
- 1.9.1
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/jtok-core-1.9.1.jar
-
- true
-
-
-
- org.wikimedia
- mwdumper
- 1.16
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/mwdumper-1.16.jar
-
- true
-
-
-
- emotionml-checker-java
- emotionml-checker-java
- 1.0-SNAPSHOT
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/emotionml-checker-java-1.0-SNAPSHOT.jar
-
- true
-
-
-
- opennlp-maxent
- opennlp-maxent
- 3.0.1-incubating
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/opennlp-maxent-3.0.1-incubating.jar
-
- true
-
-
-
- opennlp-tools
- opennlp-tools
- 1.5.1-incubating
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/opennlp-tools-1.5.1-incubating.jar
-
- true
-
-
-
- marytts-lang-de
- marytts-lang-de
- 5.1-SNAPSHOT
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/marytts-lang-de-5.1-SNAPSHOT.jar
-
- true
-
-
-
- marytts-lang-en
- marytts-lang-en
- 5.1-SNAPSHOT
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/marytts-lang-en-5.1-SNAPSHOT.jar
-
- true
-
-
-
- voice-bits1-hsmm
- voice-bits1-hsmm
- 5.0-SNAPSHOT
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/voice-bits1-hsmm-5.0-SNAPSHOT.jar
-
- true
-
-
-
- voice-bits3-hsmm
- voice-bits3-hsmm
- 5.0-SNAPSHOT
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/voice-bits3-hsmm-5.0-SNAPSHOT.jar
-
- true
-
-
-
- voice-cmu-slt-hsmm
- voice-cmu-slt-hsmm
- 5.0
- jar
-
- http://repository-openhab.forge.cloudbees.com/3rd/marytts/voice-cmu-slt-hsmm-5.0.jar
-
- true
-
-
-
-
-
-
- resolve-install-external-dependencies
- process-resources
-
-
- resolve-external
-
-
-
-
-
- org.vafer
- jdeb
-
-
-
-
-
-
- com.savage7.maven.plugins
- maven-external-dependency-plugin
- 0.4
-
-
-
-
-
-
diff --git a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/src/main/java/org/eclipse/smarthome/io/multimedia/tts/marytts/internal/MultimediaActivator.java b/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/src/main/java/org/eclipse/smarthome/io/multimedia/tts/marytts/internal/MultimediaActivator.java
deleted file mode 100644
index 467ab4404815a..0000000000000
--- a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/src/main/java/org/eclipse/smarthome/io/multimedia/tts/marytts/internal/MultimediaActivator.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Copyright (c) 2014-2015 openHAB UG (haftungsbeschraenkt) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- */
-package org.eclipse.smarthome.io.multimedia.tts.marytts.internal;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Extension of the default OSGi bundle activator
- *
- * @author Kai Kreuzer - Initial contribution and API
- */
-public class MultimediaActivator implements BundleActivator {
-
- private final Logger logger = LoggerFactory.getLogger(MultimediaActivator.class);
-
- private static BundleContext context;
-
- /**
- * Called whenever the OSGi framework starts our bundle
- */
- public void start(BundleContext bc) throws Exception {
- context = bc;
- logger.debug("Multimedia I/O MaryTTS bundle has been started.");
- }
-
- /**
- * Called whenever the OSGi framework stops our bundle
- */
- public void stop(BundleContext bc) throws Exception {
- context = null;
- logger.debug("Multimedia I/O MaryTTS bundle has been stopped.");
- }
-
- /**
- * Returns the bundle context of this bundle
- * @return the bundle context
- */
- public static BundleContext getContext() {
- return context;
- }
-}
diff --git a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/src/main/java/org/eclipse/smarthome/io/multimedia/tts/marytts/internal/tts/TTSServiceMaryTTS.java b/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/src/main/java/org/eclipse/smarthome/io/multimedia/tts/marytts/internal/tts/TTSServiceMaryTTS.java
deleted file mode 100644
index 035c051b75ad5..0000000000000
--- a/bundles/io/org.eclipse.smarthome.io.multimedia.tts.marytts/src/main/java/org/eclipse/smarthome/io/multimedia/tts/marytts/internal/tts/TTSServiceMaryTTS.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * Copyright (c) 2010-2015, openHAB.org and others.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- */
-package org.eclipse.smarthome.io.multimedia.tts.marytts.internal.tts;
-
-import java.util.Locale;
-
-import javax.sound.sampled.AudioInputStream;
-
-import marytts.LocalMaryInterface;
-import marytts.MaryInterface;
-import marytts.exceptions.MaryConfigurationException;
-import marytts.exceptions.SynthesisException;
-import marytts.modules.synthesis.Voice;
-import marytts.util.data.audio.AudioPlayer;
-
-import org.apache.commons.lang.StringUtils;
-import org.eclipse.smarthome.io.multimedia.tts.TTSService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This is a pure Java TTS service implementation, based on MaryTTS.
- *
- * @author Tobias Bräutigam
- * @since 0.8.0
- *
- */
-public class TTSServiceMaryTTS implements TTSService {
- private static final Logger logger = LoggerFactory
- .getLogger(TTSServiceMaryTTS.class);
-
- private static MaryInterface marytts;
- private Voice defaultVoice;
-
- public void activate() {
- try {
- marytts = new LocalMaryInterface();
- Locale systemLocale = Locale.getDefault();
- if (marytts.getAvailableLocales().contains(systemLocale)) {
- defaultVoice = Voice.getDefaultVoice(systemLocale);
- }
- if (defaultVoice == null) {
- // Fallback
- defaultVoice = Voice.getVoice(marytts.getAvailableVoices()
- .iterator().next());
- }
- } catch (MaryConfigurationException e) {
- logger.error(
- "Error connecting to Mary TTS: " + e.getLocalizedMessage(),
- e);
- }
- }
-
- public void deactivate() {
- marytts = null;
- }
-
- /**
- * {@inheritDoc}
- */
- public synchronized void say(String text, String voiceName, String outputDevice) {
- if (marytts == null) {
- logger.error("Mary TTS is not available");
- return;
- }
- if (text == null) {
- return;
- }
- Voice voice = null;
- if (StringUtils.isBlank(voiceName)) {
- logger.debug(
- "Mary TTS: {} (Voice not set. Using default voice {}).",
- new String[] { text, defaultVoice.toString() });
- voice = defaultVoice;
- } else {
- voice = Voice.getVoice(voiceName);
- logger.debug("Mary TTS: {} (Voice: {})", new String[] { text,
- voiceName });
- }
-
- if (voice != null) {
- // Workaround: we have to set the Locale first, because only in the
- // LocalMaryInterface.setLocale() method the required private method
- // LocalMaryInterface.setAudioFileFormatForVoice() method is called.
- // After that we can set the voice, otherwise an NPE occurs
- marytts.setLocale(voice.getLocale());
- marytts.setVoice(voice.getName());
- try {
- AudioInputStream audio = marytts.generateAudio(text);
- AudioPlayer player = new AudioPlayer(audio);
- player.start();
- player.join();
-
- } catch (SynthesisException e) {
- logger.error("Error during tts generation: {}",
- e.getLocalizedMessage(), e);
- } catch (InterruptedException e) {
- logger.error("Error during tts playback: {}",
- e.getLocalizedMessage(), e);
- }
- } else {
- logger.error("Could not find voice: {}", voiceName);
- logger.info("Available Voices are {} ",
- StringUtils.join(marytts.getAvailableVoices(), ", "));
- }
- }
-
-}
diff --git a/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty-https.xml b/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty-https.xml
index 024cebc1d48d7..5a723699920f2 100644
--- a/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty-https.xml
+++ b/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty-https.xml
@@ -38,10 +38,10 @@
-
-
-
-
+
+
+
+
diff --git a/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty-selector.xml b/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty-selector.xml
index 6068cbab7d6fb..2cbd9fe14d74a 100644
--- a/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty-selector.xml
+++ b/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty-selector.xml
@@ -21,8 +21,8 @@
-
-
+
+ 300000
diff --git a/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty-ssl.xml b/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty-ssl.xml
index 0ffde304179f4..b0dfd0ad379c4 100644
--- a/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty-ssl.xml
+++ b/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty-ssl.xml
@@ -7,14 +7,14 @@
- /
-
-
- /
-
+ /
+
+
+ /
+
-
-
+
+ SSL_RSA_WITH_DES_CBC_SHA
diff --git a/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty.xml b/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty.xml
index 1f5efaa9c8303..81d241bd2835d 100644
--- a/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty.xml
+++ b/bundles/io/org.openhab.io.jetty/jettyhome/etc/jetty.xml
@@ -81,7 +81,7 @@
https
-
+ 327688192
diff --git a/bundles/io/org.openhab.io.transport.serial/.classpath b/bundles/io/org.openhab.io.transport.serial/.classpath
index e5b1c31ae6985..37b651fd08612 100644
--- a/bundles/io/org.openhab.io.transport.serial/.classpath
+++ b/bundles/io/org.openhab.io.transport.serial/.classpath
@@ -1,7 +1,7 @@
+
-
diff --git a/bundles/io/org.openhab.io.transport.serial/META-INF/MANIFEST.MF b/bundles/io/org.openhab.io.transport.serial/META-INF/MANIFEST.MF
index 29ca72fbdc567..0ab79a14d5997 100644
--- a/bundles/io/org.openhab.io.transport.serial/META-INF/MANIFEST.MF
+++ b/bundles/io/org.openhab.io.transport.serial/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: openHAB Serial Transport Bundle
Bundle-SymbolicName: org.openhab.io.transport.serial
Bundle-Version: 2.0.0.qualifier
Bundle-Vendor: openHAB.org
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ClassPath: lib/nrjavaserial-3.8.8.jar
Export-Package: gnu.io
Import-Package: gnu.io
diff --git a/bundles/io/pom.xml b/bundles/io/pom.xml
index f69f55d18783e..94fca29250b26 100644
--- a/bundles/io/pom.xml
+++ b/bundles/io/pom.xml
@@ -19,7 +19,6 @@
org.openhab.io.transport.serialorg.openhab.io.jettyorg.openhab.io.rest.docs
- org.openhab.io.multimedia.tts.marytts
diff --git a/bundles/ui/org.openhab.ui.dashboard/META-INF/MANIFEST.MF b/bundles/ui/org.openhab.ui.dashboard/META-INF/MANIFEST.MF
index 9c57e1f107ec4..21f3f3799b35e 100644
--- a/bundles/ui/org.openhab.ui.dashboard/META-INF/MANIFEST.MF
+++ b/bundles/ui/org.openhab.ui.dashboard/META-INF/MANIFEST.MF
@@ -6,6 +6,6 @@ Bundle-Version: 2.0.0.qualifier
Bundle-Vendor: openHAB.org
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Service-Component: OSGI-INF/dashboardservice.xml
-Import-Package: org.osgi.service.component;version="1.2.2",
+Import-Package: org.osgi.service.component;version="[1.2,2.0)",
org.osgi.service.http;version="1.2.1",
org.slf4j
diff --git a/bundles/ui/org.openhab.ui.dashboard/web/index.html b/bundles/ui/org.openhab.ui.dashboard/web/index.html
index 997e7023c69d5..e5458c72db496 100644
--- a/bundles/ui/org.openhab.ui.dashboard/web/index.html
+++ b/bundles/ui/org.openhab.ui.dashboard/web/index.html
@@ -79,7 +79,7 @@