Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  * Copyright (c) 2013, Francis Galiegue <>
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the Lesser GNU General Public License as
  * published by the Free Software Foundation, either version 3 of the
  * License, or (at your option) any later version.
  * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * Lesser GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <>.
package com.github.fge.jsonschema.format.draftv3;
import static com.github.fge.jsonschema.messages.FormatMessages.*;

Validator for the utc-millisec format attribute.

Note that there is no restriction on the number value at all. However, this attributes perform extra checks and warns (ie, does not report an error) in the following situations:

  • the number is negative;
  • the number, divided by 1000, is greater than 2^31 - 1.
public final class UTCMillisecAttribute
    extends AbstractFormatAttribute
The maximum bit length of a Unix timestamp value
    private static final int EPOCH_BITLENGTH = 31;

    private static final BigInteger ONE_THOUSAND = new BigInteger("1000");
    private static final FormatAttribute INSTANCE = new UTCMillisecAttribute();
    public static FormatAttribute getInstance()
        return ;
    private UTCMillisecAttribute()
    public void validate(final ProcessingReport report,
        final ValidationData data)
        throws ProcessingException
        final JsonNode instance = data.getInstance().getNode();
        BigInteger epoch = instance.bigIntegerValue();
        if (epoch.signum() == -1) {
        epoch = epoch.divide();
        if (epoch.bitLength() > )
New to GrepCode? Check out our FAQ X