Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace org.joda.time with java.time and drop Joda-Time support #1250

Closed
wborn opened this issue Nov 30, 2019 · 8 comments · Fixed by #1342
Closed

Replace org.joda.time with java.time and drop Joda-Time support #1250

wborn opened this issue Nov 30, 2019 · 8 comments · Fixed by #1342
Milestone

Comments

@wborn
Copy link
Member

wborn commented Nov 30, 2019

Since Java 8 (introduced in 2014) there is a java.time API inspired by Joda-Time. So it would make a lot of sense to use java.time everywhere instead of org.joda.time. Then we can drop Joda-Time support in OH3.

@kaikreuzer
Copy link
Member

Planned to do this a long time ago already... Well, let's do it early for OH3 then 👍.

@rkoshak
Copy link

rkoshak commented Dec 11, 2019

IIRC, this actually was attempted previously but java.time wasn't a drop in replacement for Joda and it broke a lot of people's Rules. OH3 would be a good time to do this as it would be a breaking change for Rules DSL at least.

@kaikreuzer
Copy link
Member

I think you remember it correctly - thanks for the reminder!

@rkoshak
Copy link

rkoshak commented Dec 11, 2019

Since this is going to break stuff anyway, is there any way we can beef up DateTimeType or somehow make it compatible with Java DateTime so we don't have to convert when we are going from a DateTime Item's state to creating a timer or comparing that state to now.

It's always seemed like it shouldn't be necessary. It's not necessary when dealing with DecimalType and BigDecimal to, for example, do math in a Rule (I'm ignoring QuantityType here of course). I just cast DecimalType to Number and I'm good to go.

Could we somehow make it so we can cast DateTimeType to Java DateTime, or add the isBefore/isAfter/plusMinutes/et. al. methods to DateTimeType and allow createTimer to accept the DateTimeType, maybe make now be a DateTimeType? That would really make it's use in Rules at least much more intuitive, even for Scripted Automation.

Just an idea and it seems this is an appropriate place to bring it up. Seems like we have an opportunity here to make a significant improvement in the usability of DateTime Items in Rules.

@wborn
Copy link
Member Author

wborn commented Dec 11, 2019

Internally DateTimeType is using a ZonedDateTime. But that type cannot be extended because it is final. So there will be a lot of boilerplate code if we want it to implement the same interfaces as ZonedDateTime:

public final class ZonedDateTime
        implements Temporal, ChronoZonedDateTime<LocalDate>, Serializable {

@rkoshak
Copy link

rkoshak commented Dec 11, 2019

So instead of a cast, would be it possible to change DateTimeType to store the value as a ZonedDateTime instead of Calendar? Then instead of needing to convert it, we could just call a getter. Or maybe put a converter into DateTimeType so we can call getStateAs(ZonedDateTime) or just getZonedDateTime(). Even that would be significantly better for Rules developers.

@wborn
Copy link
Member Author

wborn commented Dec 11, 2019

The Calendar constructor is already deprecated in favor of the ZonedDateTime constructor. All the deprecated constructor does is convert the Calendar to a ZonedDateTime, see:

/**
* @deprecated The constructor uses Calendar object hence it doesn't store time zone. A new constructor is
* available. Use {@link #DateTimeType(ZonedDateTime)} instead.
*
* @param calendar The Calendar object containing the time stamp.
*/
@Deprecated
public DateTimeType(Calendar calendar) {
this.zonedDateTime = ZonedDateTime.ofInstant(calendar.toInstant(), TimeZone.getDefault().toZoneId())
.withFixedOffsetZone();
}
public DateTimeType() {
this(ZonedDateTime.now());
}
public DateTimeType(ZonedDateTime zoned) {
this.zonedDateTime = ZonedDateTime.from(zoned).withFixedOffsetZone();
}

Similarly the getCalendar getter is already deprecated in favor of getZonedDateTime and all it does is convert the internal ZonedDateTime to a Calendar:

/**
* @deprecated The method is deprecated. You can use {@link #getZonedDateTime()} instead.
*/
@Deprecated
public Calendar getCalendar() {
return GregorianCalendar.from(zonedDateTime);
}
public ZonedDateTime getZonedDateTime() {
return zonedDateTime;
}

So you can save some conversion overhead by using ZonedDateTime instead of Calendars today. The ZonedDateTime also has a much better API than Calendar. :-)

I'm fine with keeping the deprecated Calendar constructor/getter because it doesn't add much and these classes are still part of the standard Java API's whereas Joda-Time is not.

@rkoshak
Copy link

rkoshak commented Dec 11, 2019

My searching must have failed me. I searched and only saw the getCalendar getter.

@wborn wborn self-assigned this Dec 30, 2019
@wborn wborn removed their assignment Aug 26, 2020
@wborn wborn added this to the 3.0 milestone Oct 6, 2020
Rosi2143 added a commit to Rosi2143/openhab-core that referenced this issue Dec 26, 2020
* Update README (2.5.x) (openhab#1153)

Change branch name.

Signed-off-by: Yannick Schaus <github@schaus.net>

* Update items.md (openhab#1156)

* Added var and VA units to UoM (openhab#1146)

VA (Volt-Ampere - apparent power) and var (Volt-Ampere reactive) are used to measure power and energy consumption in AC circuits.


Signed-off-by: Nagy Attila Gabor <mrbig@sneaker.hu>

* Fix filepath to keystore (openhab#1148)

Default openHAB userdata environment variable should be `$OPENHAB_USERDATA`, not `$USER_DATA` shouldn't it? At least, this is the default on my fresh openHABian and also the most popular variant to find in the docs.

* Slight language corrections (openhab#1150)

I think it reads better this way

Signed-off-by: Richard Davies <rwdrich@gmail.com>

* additional example for non default persistence service (openhab#1152)

For me it was confusing how to pass on the serviceId into methods that already had an argument. An extra example is always good.

Signed-off-by: jaco <jaco.waes@gmail.com>

* Adding 12 new logos for OH Add-Ons page on website (openhab#1158)

Signed-off-by: bracklanna bracklanna@users.noreply.github.com

* Added missing preset variables (openhab#1104)

* Added missing preset variables

Signed-off-by: Scott Rushworth <openhab@5iver.com>

* Cleaned up blank lines, fixed table, and added file name for SimpleRule

Signed-off-by: Scott Rushworth <openhab@5iver.com>

* Fix broken link (openhab#1165)

* Added Hotlink from "label" section to "state presentation" (openhab#1167)

* Added note about broken action (openhab#1164)

* Added note about broken action

See openhab#1374

Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>

* Incorporated changes from review

Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>

* Incorporated changes from review

Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>

* Update index.md (openhab#1170)

Link appears to be wrong and does not work when I click on it in Edge. Loads the same page again instead of loading the correct new page from the hyperlink.

https://www.openhab.org/docs/developer/guidelines.html

* Added Airthings logo (openhab#1171)

* typo in exambp (openhab#1172)

`Temperature.averageSince(now.minusMinutes(5),"influxdb")`

* file.encoding=UTF-8 (openhab#1173)

* Update demo URL and add demo.rules URL (openhab#1174)

Based on: https://community.openhab.org/t/demo-setup-missing/94850
Old Link is broken leading to 404.
The link to the demo.rules on github is an extra :)

* Replace outdated zulu.org link. (#1177)

* Replace outdated zulu.org link.

As of 3/23/2020 zulu.org has an SSL cert that expired on 9/28/2019. Changed link to azul.com/downloads, since that appears to be the new official source.

Signed-off-by: Billy Stevens <contact@wasv.me>

* Changed all http links to https for installation/index.md.

All changed links working, tested on 3/24/2020.

Signed-off-by: Billy Stevens <contact@wasv.me>

* Minor language tweak (openhab#1178)

* Ending an active scan/stopScan (openhab#1179)

Signed-off-by: Mark Theiding <mark.theiding@gmail.com>

* Add files via upload (openhab#1184)

* Update persistence.md (openhab#1185)

Clarify return objects for max/min rules extensions.

Signed-off-by: Ross Kennedy rossko@culzean.clara.co.uk

* Update things.md (openhab#1186)

Amended example code to include using label and location when defining a Thing with a bridge that is defined elsewhere.

* Correct typos (openhab#1190)

* Correct usage of its/it's

"It's" is always a contraction of "it is" or "it has".  "Its" is a
possessive.  Correct a few places where they were used backwards.

Signed-off-by: Bjorn Helgaas <bjorn@helgaas.com>

* Correct "Z-Wave" spelling

Per https://www.z-wave.com/, the canonical spelling appears to be "Z-Wave".
Most places use "Z-Wave" already; change the remaining references to match.

Signed-off-by: Bjorn Helgaas <bjorn@helgaas.com>

* Correct typos and grammatical errors

Correct some typos and grammatical errors.

Signed-off-by: Bjorn Helgaas <bjorn@helgaas.com>

* Update sitemap.md section charts (openhab#1191)

I observed that the unique first word in the labels of items charted in a group isn't causing an empty chart anymore. I'm on openHAB 2.5.1.

Signed-off-by: Juergen Baginski opus42@gmx.de

* Add image for insteon binding (openhab#1196)

Signed-off-by: Rob Nielsen <rob.nielsen@yahoo.com>

* typo (openhab#1198)

Signed-off-by: Mark Theiding <mark.theiding@gmail.com>

* Installation details (openhab#1197)

Added more details around the installation and configuration process.
Fixed that engine no longer logs "Activated scripting support..."

Signed-off-by: Mark Theiding <mark.theiding@gmail.com>

* Update sitemaps.md (openhab#1202)

Added full item definition for usage of visibility. See https://community.openhab.org/t/sitemap-visibility-basic-ui/97304/9

* Updated ecobee logo (https://brand.ecobee.com/) (openhab#1203)

Signed-off-by: Rob Nielsen <rob.nielsen@yahoo.com>

* tutorial: Fix description of sitemap 'type' (openhab#1204)

In the tutorial, the generic sitemap description says that ItemType has
to be the same as the type defined in default.items.
Looking at
https://www.openhab.org/docs/configuration/items.html#type and
https://www.openhab.org/docs/configuration/sitemaps.html#element-types
this is incorrect as they take different values.
The example is even mislading as `Switch` is one of the only types which
is common between items and sitemaps. Might be better to describe
`Default` instead.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>

* Added information about DateTime Group functions LATEST/EARLIEST (openhab#1206)

Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>

* Add section for documentation contributions (openhab#1205)

Hopefully this will lower the hurdle for people to submit documentation contributions. I know from myself that I didn't submit various documentation improvements, because I didn't know git and thought it would be a much more involved process. 
Ideally there would be a separate documentation section, but submitting this under the development contribution page for now (as per discussion with @Confectrician in openhab/openhab-docs#1179 (comment)).
Note that I am addressing the issue of DCO failures wrt specifying the full name that I ran into myself in openhab/openhab-docs#1197 (comment). I found a good discussion of the issue at dcoapp/app#43.

Signed-off-by: Mark Theiding <mark.theiding@gmail.com>

* fix typo (openhab#1209)

* add description of Ephemeris localization support (openhab#1210)

Add a new section to describe the localization support and how-to steps

Signed-off-by: Michael Roßner Schrott.Micha@web.de

* Line 115 broken link - should be: (openhab#1217)

* Line 115 broken link - should be:

({{base}}/docs/configuration/sitemaps.html#element-types)

was:
({{base}}/configuration/configuration/sitemaps.html#element-types)

* Removed diplicated docs breadcrumb

Signed-off-by: Jerome Luckenbach <github@luckenba.ch>

Co-authored-by: Jerome Luckenbach <github@luckenba.ch>

* add missing space between words (openhab#1212)

* Update configuration.md (#1215)

I'm a beginner myself. Though I liked this tutorial very much, it took me some time trying and erroring and finally reading forum posts to get behind this. I didn't even know there was something like a more modern ping. So maybe others are happy to learn this right from the beginning.

* Remove architecture from Docker tags (openhab#1220)

Docker automatically detects the architecture and downloads the appropriate image (openhab/openhab-docker#213).
BuildKit will no longer generate new tags having the architecture (openhab/openhab-docker#293).

Signed-off-by: Wouter Born <github@maindrain.net>

* slight readability improvements (openhab#1221)

* slight readability improvements

* Update introduction.md

* Update introduction.md

* minor wording update

* Update eclipse.md (openhab#1225)

Clarifying that it's no longer possible to make changes in the Core Framework for 2.5.x.

Signed-off-by: Mark Theiding <mark.theiding@gmail.com>

* [fmiweather] logo for FMI Weather binding (openhab#929)

Signed-off-by: Sami Salonen <ssalonen@gmail.com>

* Update eclipse.md (openhab#1226)

Added additional structure around install, run, debug and update steps. Provided more pointers to interactions with Eclipse, Maven and Git.

Signed-off-by: Mark Theiding <mark.theiding@gmail.com>

* Update contributing.md (openhab#1227)

Need to escape \< and \> in the sign off message format so users see them explicitly in the Contributing to the Documentation section. 

Signed-off-by: Mark Theiding <mark.theiding@gmail.com>

* Update contributing.md (openhab#1228)

Small refinement on documentation change submission flow. 

Signed-off-by: Mark Theiding <mark.theiding@gmail.com>

* Add doc folder to the binding directory structure (openhab#1230)

Signed-off-by: Fabian Wolter <github@fabian-wolter.de>

* Make Subheadings Use Proper Subheading Syntax (openhab#1234)

This way they render out as proper markdown and don't look weird on the website

Signed-off-by: Stefan Zabka <zabkaste@informatik.hu-berlin.de>

* Remove unnecessary isCancelled() from code example (openhab#1235)

Cancelling an already canceled task has no effect. IMHO this check is not necesssary and removal would simplify the code. I came to this because I saw this pattern in many bindings during reviewing.

Signed-off-by: Fabian Wolter <github@fabian-wolter.de>

* Update thing-xml.md (openhab#1236)

Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>

* Fix broken ESH links (openhab#1231)

Signed-off-by: Wouter Born <github@maindrain.net>

* Update logging.md (openhab#1238)

Add information on how to find out the symbolic names of the bundles

* Remove Apache Commons from Default Libraries (#1229)

See openhab/openhab-addons#7722
Signed-off-by: Fabian Wolter <git@fabian-wolter.de>

* Update introduction.md (openhab#1239)

* Update introduction.md

Signed-off-by: Markus Storm markus.storm@gmx.net

* Update introduction.md

* Revise Java recommendations (openhab#1240)

* Revise Java recommendations

* Delete pine.md

Do not recommend PINE, it's not supported any longer by openHABian.

* Removed sidebar link in config

Signed-off-by: Jerome Luckenbach <github@luckenba.ch>

Co-authored-by: Jerome Luckenbach <github@luckenba.ch>

* Update security.md (openhab#1241)

Been using FreeDNS for many years (ever since all these companies got rid of their free tiers) and never an issue!

* Fix DecimalType hex conversion example (openhab#1243)

See: openhab#1526

Signed-off-by: Wouter Born <github@maindrain.net>

* Fix typo (openhab#1244)

Signed-off-by: Wouter Born <github@maindrain.net>

* Update persistence.md (openhab#1246)

Fixes link to quartz docs page.

* Revision. (openhab#1187) (openhab#1237)

* Revision. (openhab#1187)

- Update of screenshots, removal of old screenshots
- Chapters for better formatting
- Removal of ZWave chapter (one example of adding things should be enough IMHO)
- Adding items in simple mode and in "manual" mode

Signed-off-by: Sascha Billian <sascha.billian@googlemail.com>

* Use one line per sentence
Signed-off-by: Sascha Billian <sascha.billian@googlemail.com>

Co-authored-by: Jerome Luckenbach <github@luckenba.ch>

* Add notes for configuring Synology Diskstation (openhab#1219)

* Add notes for configuring Synology Diskstation

I have a working set up for SSL enabled remote access on a Synology diskstation, taking advantage of the GUI as much as possible, to ensure automatic renewal of certs from Let's Encrypt, etc. It took me about 8 hours to suss it all out, but it could be achieved in about 30 mins if you knew exactly what to do... may not be widely useful, but since Synology is officially supported, I figured this might be a good addition.

There's also a minor error in the 'allow' masks - these should be 192.168.0.0/24 to allow access to anything in the 192.168.0.xxx range.

* Updated to use one line per sentence

Updated to use one line per sentence - sorry for the delay!

* Update security.md

* Updated for one line per sentence

Updated for one line per sentence

Signed-off-by: Andrew Mills mills@prettymachine.co.nz

* Bad subnet (openhab#1245)

Nginx warns about low address bits of `192.168.0.1/24` because they are meaningless.
The correct subnet mask should be `192.168.0.0/24`

Signed-off-by: Olivier Béraud <olivierberaud@free.fr>

* Fixed broken images. (openhab#1247)

* Fixed broken images.

Signed-off-by: Jerome Luckenbach <github@luckenba.ch>

* Fix image path

Signed-off-by: Jerome Luckenbach <github@luckenba.ch>

* [documentation] clarification of representation property (openhab#1248)

* [documentation] clarification of representation property

Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>

* [documentation] typo

Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>

* [documentation] adopt suggestions of reviewers

Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>

* [documentation] commas

Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>

* [documentation] typo

Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>

* [documentation] addopted suggestions of @bobadair

Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>

* [documentation] typo

Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>

* [documentaion] example added back

Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>

* [documentaion] simplified text

Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>

* [documentation] typo

Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>

* [documentation] adopted reviewer comment

Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>

* Add Alexa mapping along side a channel mapping (openhab#1249)

* Add Alexa mapping along side a channel mapping

It took me a while to find this https://community.openhab.org/t/tagging-devices-for-alexa-support/98155/3 on the Forum and its not clearly documented in the openHAB Amazon Alexa Smart Home Skill or here in Item Metadata.
I originally suggested this as an update to the openHAB Amazon Alexa Smart Home Skill documentaion, but it fits better here, then other integrations using metadata (e.g. HomeKit or Google Assistant) could refer to it as well.

* Update items.md

* Mention defaults for element type setpoint. (openhab#1250)

Mention defaults for min, max and step value for element type setpoint.

Signed-off-by: Thomas Weiler <toweosp@gmail.com>

* Update index.md (openhab#1251)

I thought 'workl' was probably intended to be 'work'.

* Items - Bedroom_Light written as Light_Bedroom (openhab#1252)

Fix small error which might mislead some readers.

* Added example for time-weighted averages (openhab#1253)

Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>

* Remove deprecated UIs, Eclipse Marketplace from sidebar

Signed-off-by: Yannick Schaus <github@schaus.net>

* Update branch name in README

Signed-off-by: Yannick Schaus <github@schaus.net>

Co-authored-by: Markus Storm <markus.storm@gmx.net>
Co-authored-by: Nagy Attila Gábor <mrbig@sneaker.hu>
Co-authored-by: Christoph Thiede <38782922+LinqLover@users.noreply.github.com>
Co-authored-by: Richard Davies <rwdrich@gmail.com>
Co-authored-by: jwaes <50528773+jwaes@users.noreply.github.com>
Co-authored-by: bracklanna <16140600+bracklanna@users.noreply.github.com>
Co-authored-by: Scott Rushworth <openhab@5iver.com>
Co-authored-by: cpmeister <mistercpp2000@gmail.com>
Co-authored-by: Ross Kennedy <rossko@culzean.clara.co.uk>
Co-authored-by: Christoph Weitkamp <github@christophweitkamp.de>
Co-authored-by: Skinah <32607303+Skinah@users.noreply.github.com>
Co-authored-by: pali <pauli.anttila@gmail.com>
Co-authored-by: ljsquare <laurens-jan@merkx-ewals.nl>
Co-authored-by: PatrikG <40170469+PatrikG8@users.noreply.github.com>
Co-authored-by: Elias H <E.Hackradt@web.de>
Co-authored-by: Billy Stevens <contact@wasv.me>
Co-authored-by: theiding <mark.theiding@gmail.com>
Co-authored-by: jadcx <60408305+jadcx@users.noreply.github.com>
Co-authored-by: Bjorn Helgaas <bjorn@helgaas.com>
Co-authored-by: Jürgen Baginski <opus42@gmx.de>
Co-authored-by: robnielsen <rob.nielsen@yahoo.com>
Co-authored-by: GumbyMan82 <40233411+GumbyMan82@users.noreply.github.com>
Co-authored-by: Christophe Fergeau <teuf@gnome.org>
Co-authored-by: Paulo "JCranky" Siqueira <paulo.siqueira@gmail.com>
Co-authored-by: Michael Rossner <Schrott.Micha@web.de>
Co-authored-by: BugSmurF <52825547+bugsmurf@users.noreply.github.com>
Co-authored-by: Jerome Luckenbach <github@luckenba.ch>
Co-authored-by: josefscript <64727123+josefscript@users.noreply.github.com>
Co-authored-by: Wouter Born <github@maindrain.net>
Co-authored-by: Sami Salonen <ssalonen@gmail.com>
Co-authored-by: Fabian Wolter <github@fabian-wolter.de>
Co-authored-by: Stefan Zabka <zabkaste@informatik.hu-berlin.de>
Co-authored-by: TRS-80 <25938297+TRSx80@users.noreply.github.com>
Co-authored-by: sihui <10405486+sihui62@users.noreply.github.com>
Co-authored-by: Andrew Mills <amil109@users.noreply.github.com>
Co-authored-by: Olivier Béraud <olivbd@users.noreply.github.com>
Co-authored-by: Andrew Fiddian-Green <software@whitebear.ch>
Co-authored-by: LeeC77 <LeeC77@users.noreply.github.com>
Co-authored-by: Thomas Weiler <18066810+toweosp@users.noreply.github.com>
Co-authored-by: garretcook <garretcook@gmail.com>
Co-authored-by: Michael Fielding <michael.fielding@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants