1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<!-- NewPage --> 3<html lang="en"> 4<head> 5<!-- Generated by javadoc (version 1.7.0_10-ea) on Mon Apr 22 19:34:32 PDT 2013 --> 6<meta http-equiv="Content-Type" content="text/html" charset="UTF-8"> 7<title>ObjectIdGenerator (Jackson-annotations 2.2.0 API)</title> 8<meta name="date" content="2013-04-22"> 9<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> 10</head> 11<body> 12<script type="text/javascript"><!-- 13 if (location.href.indexOf('is-external=true') == -1) { 14 parent.document.title="ObjectIdGenerator (Jackson-annotations 2.2.0 API)"; 15 } 16//--> 17</script> 18<noscript> 19<div>JavaScript is disabled on your browser.</div> 20</noscript> 21<!-- ========= START OF TOP NAVBAR ======= --> 22<div class="topNav"><a name="navbar_top"> 23<!-- --> 24</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> 25<!-- --> 26</a> 27<ul class="navList" title="Navigation"> 28<li><a href="../../../../com/fasterxml/jackson/annotation/package-summary.html">Package</a></li> 29<li class="navBarCell1Rev">Class</li> 30<li><a href="class-use/ObjectIdGenerator.html">Use</a></li> 31<li><a href="package-tree.html">Tree</a></li> 32<li><a href="../../../../deprecated-list.html">Deprecated</a></li> 33<li><a href="../../../../index-all.html">Index</a></li> 34<li><a href="../../../../help-doc.html">Help</a></li> 35</ul> 36</div> 37<div class="subNav"> 38<ul class="navList"> 39<li><a href="../../../../com/fasterxml/jackson/annotation/JsonView.html" title="annotation in com.fasterxml.jackson.annotation"><span class="strong">Prev Class</span></a></li> 40<li><a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.IdKey.html" title="class in com.fasterxml.jackson.annotation"><span class="strong">Next Class</span></a></li> 41</ul> 42<ul class="navList"> 43<li><a href="../../../../index.html?com/fasterxml/jackson/annotation/ObjectIdGenerator.html" target="_top">Frames</a></li> 44<li><a href="ObjectIdGenerator.html" target="_top">No Frames</a></li> 45</ul> 46<ul class="navList" id="allclasses_navbar_top"> 47<li><a href="../../../../allclasses-noframe.html">All Classes</a></li> 48</ul> 49<div> 50<script type="text/javascript"><!-- 51 allClassesLink = document.getElementById("allclasses_navbar_top"); 52 if(window==top) { 53 allClassesLink.style.display = "block"; 54 } 55 else { 56 allClassesLink.style.display = "none"; 57 } 58 //--> 59</script> 60</div> 61<div> 62<ul class="subNavList"> 63<li>Summary: </li> 64<li><a href="#nested_class_summary">Nested</a> | </li> 65<li>Field | </li> 66<li><a href="#constructor_summary">Constr</a> | </li> 67<li><a href="#method_summary">Method</a></li> 68</ul> 69<ul class="subNavList"> 70<li>Detail: </li> 71<li>Field | </li> 72<li><a href="#constructor_detail">Constr</a> | </li> 73<li><a href="#method_detail">Method</a></li> 74</ul> 75</div> 76<a name="skip-navbar_top"> 77<!-- --> 78</a></div> 79<!-- ========= END OF TOP NAVBAR ========= --> 80<!-- ======== START OF CLASS DATA ======== --> 81<div class="header"> 82<div class="subTitle">com.fasterxml.jackson.annotation</div> 83<h2 title="Class ObjectIdGenerator" class="title">Class ObjectIdGenerator<T></h2> 84</div> 85<div class="contentContainer"> 86<ul class="inheritance"> 87<li><a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li> 88<li> 89<ul class="inheritance"> 90<li>com.fasterxml.jackson.annotation.ObjectIdGenerator<T></li> 91</ul> 92</li> 93</ul> 94<div class="description"> 95<ul class="blockList"> 96<li class="blockList"> 97<dl><dt><span class="strong">Type Parameters:</span></dt><dd><code>T</code> - Type of Object Identifiers produced.</dd></dl> 98<dl> 99<dt>All Implemented Interfaces:</dt> 100<dd><a href="http://download.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a></dd> 101</dl> 102<dl> 103<dt>Direct Known Subclasses:</dt> 104<dd><a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerators.IntSequenceGenerator.html" title="class in com.fasterxml.jackson.annotation">ObjectIdGenerators.IntSequenceGenerator</a>, <a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerators.None.html" title="class in com.fasterxml.jackson.annotation">ObjectIdGenerators.None</a>, <a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerators.PropertyGenerator.html" title="class in com.fasterxml.jackson.annotation">ObjectIdGenerators.PropertyGenerator</a>, <a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerators.UUIDGenerator.html" title="class in com.fasterxml.jackson.annotation">ObjectIdGenerators.UUIDGenerator</a></dd> 105</dl> 106<hr> 107<br> 108<pre>public abstract class <span class="strong">ObjectIdGenerator<T></span> 109extends <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> 110implements <a href="http://download.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a></pre> 111<div class="block">Definition of API used for constructing Object Identifiers 112 (as annotated using <a href="../../../../com/fasterxml/jackson/annotation/JsonIdentityInfo.html" title="annotation in com.fasterxml.jackson.annotation"><code>JsonIdentityInfo</code></a>). 113 Also defines factory methods used for creating instances 114 for serialization, deserialization.</div> 115<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../serialized-form.html#com.fasterxml.jackson.annotation.ObjectIdGenerator">Serialized Form</a></dd></dl> 116</li> 117</ul> 118</div> 119<div class="summary"> 120<ul class="blockList"> 121<li class="blockList"> 122<!-- ======== NESTED CLASS SUMMARY ======== --> 123<ul class="blockList"> 124<li class="blockList"><a name="nested_class_summary"> 125<!-- --> 126</a> 127<h3>Nested Class Summary</h3> 128<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation"> 129<caption><span>Nested Classes</span><span class="tabEnd"> </span></caption> 130<tr> 131<th class="colFirst" scope="col">Modifier and Type</th> 132<th class="colLast" scope="col">Class and Description</th> 133</tr> 134<tr class="altColor"> 135<td class="colFirst"><code>static class </code></td> 136<td class="colLast"><code><strong><a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.IdKey.html" title="class in com.fasterxml.jackson.annotation">ObjectIdGenerator.IdKey</a></strong></code> 137<div class="block">Simple key class that can be used as a key for 138 ObjectId-to-POJO mappings, when multiple ObjectId types 139 and scopes are used.</div> 140</td> 141</tr> 142</table> 143</li> 144</ul> 145<!-- ======== CONSTRUCTOR SUMMARY ======== --> 146<ul class="blockList"> 147<li class="blockList"><a name="constructor_summary"> 148<!-- --> 149</a> 150<h3>Constructor Summary</h3> 151<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> 152<caption><span>Constructors</span><span class="tabEnd"> </span></caption> 153<tr> 154<th class="colOne" scope="col">Constructor and Description</th> 155</tr> 156<tr class="altColor"> 157<td class="colOne"><code><strong><a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html#ObjectIdGenerator()">ObjectIdGenerator</a></strong>()</code> </td> 158</tr> 159</table> 160</li> 161</ul> 162<!-- ========== METHOD SUMMARY =========== --> 163<ul class="blockList"> 164<li class="blockList"><a name="method_summary"> 165<!-- --> 166</a> 167<h3>Method Summary</h3> 168<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> 169<caption><span>Methods</span><span class="tabEnd"> </span></caption> 170<tr> 171<th class="colFirst" scope="col">Modifier and Type</th> 172<th class="colLast" scope="col">Method and Description</th> 173</tr> 174<tr class="altColor"> 175<td class="colFirst"><code>abstract boolean</code></td> 176<td class="colLast"><code><strong><a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html#canUseFor(com.fasterxml.jackson.annotation.ObjectIdGenerator)">canUseFor</a></strong>(<a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html" title="class in com.fasterxml.jackson.annotation">ObjectIdGenerator</a><?> gen)</code> 177<div class="block">Method called to check whether this generator instance can 178 be used for Object Ids of specific generator type and 179 scope; determination is based by passing a configured 180 "blueprint" (prototype) instance; from which the actual 181 instances are created (using <a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html#newForSerialization(java.lang.Object)"><code>newForSerialization(java.lang.Object)</code></a>).</div> 182</td> 183</tr> 184<tr class="rowColor"> 185<td class="colFirst"><code>abstract <a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html" title="class in com.fasterxml.jackson.annotation">ObjectIdGenerator</a><<a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html" title="type parameter in ObjectIdGenerator">T</a>></code></td> 186<td class="colLast"><code><strong><a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html#forScope(java.lang.Class)">forScope</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><?> scope)</code> 187<div class="block">Factory method to create a blueprint instance for specified 188 scope.</div> 189</td> 190</tr> 191<tr class="altColor"> 192<td class="colFirst"><code>abstract <a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html" title="type parameter in ObjectIdGenerator">T</a></code></td> 193<td class="colLast"><code><strong><a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html#generateId(java.lang.Object)">generateId</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> forPojo)</code> 194<div class="block">Method used for generating a new Object Identifier to serialize 195 for given POJO.</div> 196</td> 197</tr> 198<tr class="rowColor"> 199<td class="colFirst"><code>abstract <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><?></code></td> 200<td class="colLast"><code><strong><a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html#getScope()">getScope</a></strong>()</code> </td> 201</tr> 202<tr class="altColor"> 203<td class="colFirst"><code>abstract <a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.IdKey.html" title="class in com.fasterxml.jackson.annotation">ObjectIdGenerator.IdKey</a></code></td> 204<td class="colLast"><code><strong><a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html#key(java.lang.Object)">key</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> key)</code> 205<div class="block">Method for constructing key to use for ObjectId-to-POJO maps.</div> 206</td> 207</tr> 208<tr class="rowColor"> 209<td class="colFirst"><code>abstract <a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html" title="class in com.fasterxml.jackson.annotation">ObjectIdGenerator</a><<a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html" title="type parameter in ObjectIdGenerator">T</a>></code></td> 210<td class="colLast"><code><strong><a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html#newForSerialization(java.lang.Object)">newForSerialization</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> context)</code> 211<div class="block">Factory method called to create a new instance to use for 212 serialization: needed since generators may have state 213 (next id to produce).</div> 214</td> 215</tr> 216</table> 217<ul class="blockList"> 218<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object"> 219<!-- --> 220</a> 221<h3>Methods inherited from class java.lang.<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3> 222<code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li> 223</ul> 224</li> 225</ul> 226</li> 227</ul> 228</div> 229<div class="details"> 230<ul class="blockList"> 231<li class="blockList"> 232<!-- ========= CONSTRUCTOR DETAIL ======== --> 233<ul class="blockList"> 234<li class="blockList"><a name="constructor_detail"> 235<!-- --> 236</a> 237<h3>Constructor Detail</h3> 238<a name="ObjectIdGenerator()"> 239<!-- --> 240</a> 241<ul class="blockListLast"> 242<li class="blockList"> 243<h4>ObjectIdGenerator</h4> 244<pre>public ObjectIdGenerator()</pre> 245</li> 246</ul> 247</li> 248</ul> 249<!-- ============ METHOD DETAIL ========== --> 250<ul class="blockList"> 251<li class="blockList"><a name="method_detail"> 252<!-- --> 253</a> 254<h3>Method Detail</h3> 255<a name="getScope()"> 256<!-- --> 257</a> 258<ul class="blockList"> 259<li class="blockList"> 260<h4>getScope</h4> 261<pre>public abstract <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><?> getScope()</pre> 262</li> 263</ul> 264<a name="canUseFor(com.fasterxml.jackson.annotation.ObjectIdGenerator)"> 265<!-- --> 266</a> 267<ul class="blockList"> 268<li class="blockList"> 269<h4>canUseFor</h4> 270<pre>public abstract boolean canUseFor(<a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html" title="class in com.fasterxml.jackson.annotation">ObjectIdGenerator</a><?> gen)</pre> 271<div class="block">Method called to check whether this generator instance can 272 be used for Object Ids of specific generator type and 273 scope; determination is based by passing a configured 274 "blueprint" (prototype) instance; from which the actual 275 instances are created (using <a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html#newForSerialization(java.lang.Object)"><code>newForSerialization(java.lang.Object)</code></a>).</div> 276<dl><dt><span class="strong">Returns:</span></dt><dd>True if this instance can be used as-is; false if not</dd></dl> 277</li> 278</ul> 279<a name="forScope(java.lang.Class)"> 280<!-- --> 281</a> 282<ul class="blockList"> 283<li class="blockList"> 284<h4>forScope</h4> 285<pre>public abstract <a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html" title="class in com.fasterxml.jackson.annotation">ObjectIdGenerator</a><<a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html" title="type parameter in ObjectIdGenerator">T</a>> forScope(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><?> scope)</pre> 286<div class="block">Factory method to create a blueprint instance for specified 287 scope. Generators that do not use scope may return 'this'.</div> 288</li> 289</ul> 290<a name="newForSerialization(java.lang.Object)"> 291<!-- --> 292</a> 293<ul class="blockList"> 294<li class="blockList"> 295<h4>newForSerialization</h4> 296<pre>public abstract <a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html" title="class in com.fasterxml.jackson.annotation">ObjectIdGenerator</a><<a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html" title="type parameter in ObjectIdGenerator">T</a>> newForSerialization(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> context)</pre> 297<div class="block">Factory method called to create a new instance to use for 298 serialization: needed since generators may have state 299 (next id to produce). 300<p> 301 Note that actual type of 'context' is 302 <code>com.fasterxml.jackson.databind.SerializerProvider</code>, 303 but can not be declared here as type itself (as well as call 304 to this object) comes from databind package.</div> 305<dl><dt><span class="strong">Parameters:</span></dt><dd><code>context</code> - Serialization context object used (of type 306 <code>com.fasterxml.jackson.databind.SerializerProvider</code>; 307 may be needed by more complex generators to access contextual 308 information such as configuration.</dd></dl> 309</li> 310</ul> 311<a name="key(java.lang.Object)"> 312<!-- --> 313</a> 314<ul class="blockList"> 315<li class="blockList"> 316<h4>key</h4> 317<pre>public abstract <a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.IdKey.html" title="class in com.fasterxml.jackson.annotation">ObjectIdGenerator.IdKey</a> key(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> key)</pre> 318<div class="block">Method for constructing key to use for ObjectId-to-POJO maps.</div> 319</li> 320</ul> 321<a name="generateId(java.lang.Object)"> 322<!-- --> 323</a> 324<ul class="blockListLast"> 325<li class="blockList"> 326<h4>generateId</h4> 327<pre>public abstract <a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.html" title="type parameter in ObjectIdGenerator">T</a> generateId(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> forPojo)</pre> 328<div class="block">Method used for generating a new Object Identifier to serialize 329 for given POJO.</div> 330<dl><dt><span class="strong">Parameters:</span></dt><dd><code>forPojo</code> - POJO for which identifier is needed</dd> 331<dt><span class="strong">Returns:</span></dt><dd>Object Identifier to use.</dd></dl> 332</li> 333</ul> 334</li> 335</ul> 336</li> 337</ul> 338</div> 339</div> 340<!-- ========= END OF CLASS DATA ========= --> 341<!-- ======= START OF BOTTOM NAVBAR ====== --> 342<div class="bottomNav"><a name="navbar_bottom"> 343<!-- --> 344</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> 345<!-- --> 346</a> 347<ul class="navList" title="Navigation"> 348<li><a href="../../../../com/fasterxml/jackson/annotation/package-summary.html">Package</a></li> 349<li class="navBarCell1Rev">Class</li> 350<li><a href="class-use/ObjectIdGenerator.html">Use</a></li> 351<li><a href="package-tree.html">Tree</a></li> 352<li><a href="../../../../deprecated-list.html">Deprecated</a></li> 353<li><a href="../../../../index-all.html">Index</a></li> 354<li><a href="../../../../help-doc.html">Help</a></li> 355</ul> 356</div> 357<div class="subNav"> 358<ul class="navList"> 359<li><a href="../../../../com/fasterxml/jackson/annotation/JsonView.html" title="annotation in com.fasterxml.jackson.annotation"><span class="strong">Prev Class</span></a></li> 360<li><a href="../../../../com/fasterxml/jackson/annotation/ObjectIdGenerator.IdKey.html" title="class in com.fasterxml.jackson.annotation"><span class="strong">Next Class</span></a></li> 361</ul> 362<ul class="navList"> 363<li><a href="../../../../index.html?com/fasterxml/jackson/annotation/ObjectIdGenerator.html" target="_top">Frames</a></li> 364<li><a href="ObjectIdGenerator.html" target="_top">No Frames</a></li> 365</ul> 366<ul class="navList" id="allclasses_navbar_bottom"> 367<li><a href="../../../../allclasses-noframe.html">All Classes</a></li> 368</ul> 369<div> 370<script type="text/javascript"><!-- 371 allClassesLink = document.getElementById("allclasses_navbar_bottom"); 372 if(window==top) { 373 allClassesLink.style.display = "block"; 374 } 375 else { 376 allClassesLink.style.display = "none"; 377 } 378 //--> 379</script> 380</div> 381<div> 382<ul class="subNavList"> 383<li>Summary: </li> 384<li><a href="#nested_class_summary">Nested</a> | </li> 385<li>Field | </li> 386<li><a href="#constructor_summary">Constr</a> | </li> 387<li><a href="#method_summary">Method</a></li> 388</ul> 389<ul class="subNavList"> 390<li>Detail: </li> 391<li>Field | </li> 392<li><a href="#constructor_detail">Constr</a> | </li> 393<li><a href="#method_detail">Method</a></li> 394</ul> 395</div> 396<a name="skip-navbar_bottom"> 397<!-- --> 398</a></div> 399<!-- ======== END OF BOTTOM NAVBAR ======= --> 400<p class="legalCopy"><small>Copyright © 2012-2013 <a href="http://fasterxml.com/">FasterXML</a>. All Rights Reserved.</small></p> 401</body> 402</html> 403