001/* 002 * Copyright 2015-2016 UnboundID Corp. 003 * All Rights Reserved. 004 */ 005/* 006 * Copyright (C) 2015-2016 UnboundID Corp. 007 * 008 * This program is free software; you can redistribute it and/or modify 009 * it under the terms of the GNU General Public License (GPLv2 only) 010 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only) 011 * as published by the Free Software Foundation. 012 * 013 * This program is distributed in the hope that it will be useful, 014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 016 * GNU General Public License for more details. 017 * 018 * You should have received a copy of the GNU General Public License 019 * along with this program; if not, see <http://www.gnu.org/licenses>. 020 */ 021package com.unboundid.util.json; 022 023 024 025import com.unboundid.util.NotMutable; 026import com.unboundid.util.ThreadSafety; 027import com.unboundid.util.ThreadSafetyLevel; 028 029 030 031/** 032 * This class provides an implementation of a JSON value that represents a null 033 * value. The string representation of the null value is {@code null} in all 034 * lowercase and without any quotation marks. 035 */ 036@NotMutable() 037@ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE) 038public final class JSONNull 039 extends JSONValue 040{ 041 /** 042 * A pre-allocated JSON null value object. 043 */ 044 public static final JSONNull NULL = new JSONNull(); 045 046 047 048 /** 049 * The serial version UID for this serializable class. 050 */ 051 private static final long serialVersionUID = -8359265286375144526L; 052 053 054 055 /** 056 * Creates a new JSON value capable of representing a {@code null} value. 057 */ 058 public JSONNull() 059 { 060 } 061 062 063 064 /** 065 * {@inheritDoc} 066 */ 067 @Override() 068 public int hashCode() 069 { 070 return 1; 071 } 072 073 074 075 /** 076 * {@inheritDoc} 077 */ 078 @Override() 079 public boolean equals(final Object o) 080 { 081 return ((o == this) || (o instanceof JSONNull)); 082 } 083 084 085 086 /** 087 * {@inheritDoc} 088 */ 089 @Override() 090 public boolean equals(final JSONValue v, final boolean ignoreFieldNameCase, 091 final boolean ignoreValueCase, 092 final boolean ignoreArrayOrder) 093 { 094 return (v instanceof JSONNull); 095 } 096 097 098 099 /** 100 * {@inheritDoc} 101 */ 102 @Override() 103 public String toString() 104 { 105 return "null"; 106 } 107 108 109 110 /** 111 * {@inheritDoc} 112 */ 113 @Override() 114 public void toString(final StringBuilder buffer) 115 { 116 buffer.append("null"); 117 } 118 119 120 121 /** 122 * {@inheritDoc} 123 */ 124 @Override() 125 public String toSingleLineString() 126 { 127 return "null"; 128 } 129 130 131 132 /** 133 * {@inheritDoc} 134 */ 135 @Override() 136 public void toSingleLineString(final StringBuilder buffer) 137 { 138 buffer.append("null"); 139 } 140 141 142 143 /** 144 * {@inheritDoc} 145 */ 146 @Override() 147 public String toNormalizedString() 148 { 149 return "null"; 150 } 151 152 153 154 /** 155 * {@inheritDoc} 156 */ 157 @Override() 158 public void toNormalizedString(final StringBuilder buffer) 159 { 160 buffer.append("null"); 161 } 162 163 164 165 /** 166 * {@inheritDoc} 167 */ 168 @Override() 169 public void appendToJSONBuffer(final JSONBuffer buffer) 170 { 171 buffer.appendNull(); 172 } 173 174 175 176 /** 177 * {@inheritDoc} 178 */ 179 @Override() 180 public void appendToJSONBuffer(final String fieldName, 181 final JSONBuffer buffer) 182 { 183 buffer.appendNull(fieldName); 184 } 185}