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