<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ValidationConstants.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">jUDDI Core - OpenJPA</a> &gt; <a href="index.source.html" class="el_package">org.apache.juddi.validation</a> &gt; <span class="el_source">ValidationConstants.java</span></div><h1>ValidationConstants.java</h1><pre class="source lang-java linenums">/*
 * Copyright 2013 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
 * 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 &quot;AS IS&quot; 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 org.apache.juddi.validation;

/**
 * Validation constants for various items, such as maximum string lengths
 *
 * @author &lt;a href=&quot;mailto:alexoree@apache.org&quot;&gt;Alex O'Ree&lt;/a&gt;
 */
<span class="nc" id="L23">public class ValidationConstants {</span>

    public static final int MAX_accessPoint = 4096;
    public static final int MAX_addressLine = 80;
    public static final int MAX_authInfo = 4096;
    public static final int MAX_Key = 255;
    public static final int MAX_description = 255;
    public static final int MAX_discoveryURL = 4096;
    public static final int MAX_email = 255;
    public static final int MAX_instanceParms = 8192;
    public static final int MAX_keyName = 255;
    public static final int MAX_keyValue = 255;
    public static final int MAX_name = 255;
    public static final int MAX_operator = 255;
    public static final int MAX_overviewURL = 4096;
    public static final int MAX_personName = 255;
    public static final int MAX_phone = 50;
    public static final int MAX_sortCode = 10;
    public static final int MAX_useType = 255;
    public static final int MAX_completionStatus = 32;
    public static final int MAX_xml_lang = 26;
//2.3.2 Subscription API
    public static final int MAX_subscriptionKey = 255;
//2.3.3 Replication API
    public static final int MAX_nodeId = 255;
    public static final int MAX_notifyingNode = 255;
    public static final int MAX_operatorNodeID = 255;
    public static final int MAX_requestingNode = 255;
}
</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.7.9.201702052155</span></div></body></html>