net.oauth.jsontoken.SystemClock Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.liferay.document.library.opener.onedrive.web
Show all versions of com.liferay.document.library.opener.onedrive.web
Liferay Document Library Opener OneDrive Web
/**
* Copyright 2010 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package net.oauth.jsontoken;
import org.joda.time.Duration;
import org.joda.time.Instant;
import org.joda.time.Interval;
/**
* Default implementation of {@link Clock}, which accepts clock skews (when comparing time
* instances) of up to 2 minutes.
*/
public class SystemClock implements Clock {
public static final Duration DEFAULT_ACCEPTABLE_CLOCK_SKEW = Duration.standardMinutes(2);
private final Duration acceptableClockSkew;
/**
* Public constructor.
*/
public SystemClock() {
this(DEFAULT_ACCEPTABLE_CLOCK_SKEW);
}
/**
* Public constructor.
* @param acceptableClockSkew the current time will be considered inside the
* interval at {@link #isCurrentTimeInInterval(Instant, Duration)} even if the current time
* is up to acceptableClockSkew off the ends of the interval.
*/
public SystemClock(Duration acceptableClockSkew) {
this.acceptableClockSkew = acceptableClockSkew;
}
/*
* (non-Javadoc)
* @see net.oauth.jsontoken.Clock#now()
*/
@Override
public Instant now() {
return new Instant();
}
/**
* Determines whether the current time (plus minus the acceptableClockSkew) falls within the
* interval defined by the start and intervalLength parameters.
*/
@Override
public boolean isCurrentTimeInInterval(Instant start, Instant end) {
Interval interval = new Interval(start, end);
Instant now = now();
Interval currentTimeWithSkew =
new Interval(now.minus(acceptableClockSkew), now.plus(acceptableClockSkew));
return interval.overlaps(currentTimeWithSkew);
}
}