xref: /OpenGrok/plugins/src/main/java/opengrok/auth/plugin/util/Timestamp.java (revision 0e7ff20bf1329caee73b111b78d073fce0110bb8)
1b28a5538SAdam Hornacek /*
2b28a5538SAdam Hornacek  * CDDL HEADER START
3b28a5538SAdam Hornacek  *
4b28a5538SAdam Hornacek  * The contents of this file are subject to the terms of the
5b28a5538SAdam Hornacek  * Common Development and Distribution License (the "License").
6b28a5538SAdam Hornacek  * You may not use this file except in compliance with the License.
7b28a5538SAdam Hornacek  *
8b28a5538SAdam Hornacek  * See LICENSE.txt included in this distribution for the specific
9b28a5538SAdam Hornacek  * language governing permissions and limitations under the License.
10b28a5538SAdam Hornacek  *
11b28a5538SAdam Hornacek  * When distributing Covered Code, include this CDDL HEADER in each
12b28a5538SAdam Hornacek  * file and include the License file at LICENSE.txt.
13b28a5538SAdam Hornacek  * If applicable, add the following below this CDDL HEADER, with the
14b28a5538SAdam Hornacek  * fields enclosed by brackets "[]" replaced with your own identifying
15b28a5538SAdam Hornacek  * information: Portions Copyright [yyyy] [name of copyright owner]
16b28a5538SAdam Hornacek  *
17b28a5538SAdam Hornacek  * CDDL HEADER END
18b28a5538SAdam Hornacek  */
19b28a5538SAdam Hornacek 
20b28a5538SAdam Hornacek /*
21b28a5538SAdam Hornacek  * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
22b28a5538SAdam Hornacek  */
23b28a5538SAdam Hornacek package opengrok.auth.plugin.util;
24b28a5538SAdam Hornacek 
25b28a5538SAdam Hornacek import java.util.Date;
26b28a5538SAdam Hornacek 
27b28a5538SAdam Hornacek /**
28*0e7ff20bSVladimir Kotal  * Implementation of timestamp decoding.
29*0e7ff20bSVladimir Kotal  *
30750d880bSVladimir Kotal  * @see <a href="https://docs.oracle.com/cd/B28196_01/idmanage.1014/b15997/mod_osso.htm">mod_osso documentation</a>
31*0e7ff20bSVladimir Kotal  * chapter 9.5
32b28a5538SAdam Hornacek  *
33b28a5538SAdam Hornacek  * @author Krystof Tulinger
34b28a5538SAdam Hornacek  */
35b28a5538SAdam Hornacek public class Timestamp {
36b28a5538SAdam Hornacek 
Timestamp()37ff44f24aSAdam Hornáček     private Timestamp() {
38ff44f24aSAdam Hornáček     }
39ff44f24aSAdam Hornáček 
40b28a5538SAdam Hornacek     /**
41b28a5538SAdam Hornacek      * Converts OSSO timestamp cookie into java Date.
42b28a5538SAdam Hornacek      *
43b28a5538SAdam Hornacek      * @param cookie string representing the timestamp cookie
44b28a5538SAdam Hornacek      * @return java date object
45b28a5538SAdam Hornacek      * @throws NumberFormatException number format exception
46b28a5538SAdam Hornacek      */
decodeTimeCookie(String cookie)47b28a5538SAdam Hornacek     public static Date decodeTimeCookie(String cookie) throws NumberFormatException {
48b28a5538SAdam Hornacek         return new Date(Long.parseLong(cookie, 16) * 1000);
49b28a5538SAdam Hornacek     }
50b28a5538SAdam Hornacek 
51b28a5538SAdam Hornacek     /**
52ff44f24aSAdam Hornáček      * Converts Date into OSSO cookie.
53b28a5538SAdam Hornacek      *
54b28a5538SAdam Hornacek      * @param date date
55b28a5538SAdam Hornacek      * @return string with the encoded value
56b28a5538SAdam Hornacek      */
encodeTimeCookie(Date date)57b28a5538SAdam Hornacek     public static String encodeTimeCookie(Date date) {
58b28a5538SAdam Hornacek         return Long.toHexString(date.getTime() / 1000);
59b28a5538SAdam Hornacek     }
60b28a5538SAdam Hornacek }
61