#19676 Added JavaDocs and comments to ParseField
Added JavaDocs and comments to ParseField
This commit is contained in:
commit
5a99ce5b91
|
@ -26,7 +26,8 @@ import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds a field that can be found in a request while parsing and its different variants, which may be deprecated.
|
* Holds a field that can be found in a request while parsing and its different
|
||||||
|
* variants, which may be deprecated.
|
||||||
*/
|
*/
|
||||||
public class ParseField {
|
public class ParseField {
|
||||||
|
|
||||||
|
@ -37,6 +38,14 @@ public class ParseField {
|
||||||
private String allReplacedWith = null;
|
private String allReplacedWith = null;
|
||||||
private final String[] allNames;
|
private final String[] allNames;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param name
|
||||||
|
* the primary name for this field. This will be returned by
|
||||||
|
* {@link #getPreferredName()}
|
||||||
|
* @param deprecatedNames
|
||||||
|
* names for this field which are deprecated and will not be
|
||||||
|
* accepted when strict matching is used.
|
||||||
|
*/
|
||||||
public ParseField(String name, String... deprecatedNames) {
|
public ParseField(String name, String... deprecatedNames) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
if (deprecatedNames == null || deprecatedNames.length == 0) {
|
if (deprecatedNames == null || deprecatedNames.length == 0) {
|
||||||
|
@ -52,20 +61,35 @@ public class ParseField {
|
||||||
this.allNames = allNames.toArray(new String[allNames.size()]);
|
this.allNames = allNames.toArray(new String[allNames.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPreferredName(){
|
/**
|
||||||
|
* @return the preferred name used for this field
|
||||||
|
*/
|
||||||
|
public String getPreferredName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return All names for this field regardless of whether they are
|
||||||
|
* deprecated
|
||||||
|
*/
|
||||||
public String[] getAllNamesIncludedDeprecated() {
|
public String[] getAllNamesIncludedDeprecated() {
|
||||||
return allNames;
|
return allNames;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param deprecatedNames
|
||||||
|
* deprecated names to include with the returned
|
||||||
|
* {@link ParseField}
|
||||||
|
* @return a new {@link ParseField} using the preferred name from this one
|
||||||
|
* but with the specified deprecated names
|
||||||
|
*/
|
||||||
public ParseField withDeprecation(String... deprecatedNames) {
|
public ParseField withDeprecation(String... deprecatedNames) {
|
||||||
return new ParseField(this.name, deprecatedNames);
|
return new ParseField(this.name, deprecatedNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a new ParseField where all field names are deprecated and replaced with {@code allReplacedWith}.
|
* Return a new ParseField where all field names are deprecated and replaced
|
||||||
|
* with {@code allReplacedWith}.
|
||||||
*/
|
*/
|
||||||
public ParseField withAllDeprecated(String allReplacedWith) {
|
public ParseField withAllDeprecated(String allReplacedWith) {
|
||||||
ParseField parseField = this.withDeprecation(getAllNamesIncludedDeprecated());
|
ParseField parseField = this.withDeprecation(getAllNamesIncludedDeprecated());
|
||||||
|
@ -73,16 +97,34 @@ public class ParseField {
|
||||||
return parseField;
|
return parseField;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean match(String currentFieldName, boolean strict) {
|
/**
|
||||||
if (allReplacedWith == null && currentFieldName.equals(name)) {
|
* @param fieldName
|
||||||
|
* the field name to match against this {@link ParseField}
|
||||||
|
* @param strict
|
||||||
|
* if true an exception will be thrown if a deprecated field name
|
||||||
|
* is given. If false the deprecated name will be matched but a
|
||||||
|
* message will also be logged to the {@link DeprecationLogger}
|
||||||
|
* @return true if <code>fieldName</code> matches any of the acceptable
|
||||||
|
* names for this {@link ParseField}.
|
||||||
|
*/
|
||||||
|
boolean match(String fieldName, boolean strict) {
|
||||||
|
// if this parse field has not been completely deprecated then try to
|
||||||
|
// match the preferred name
|
||||||
|
if (allReplacedWith == null && fieldName.equals(name)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
// Now try to match against one of the deprecated names. Note that if
|
||||||
|
// the parse field is entirely deprecated (allReplacedWith != null) all
|
||||||
|
// fields will be in the deprecatedNames array
|
||||||
String msg;
|
String msg;
|
||||||
for (String depName : deprecatedNames) {
|
for (String depName : deprecatedNames) {
|
||||||
if (currentFieldName.equals(depName)) {
|
if (fieldName.equals(depName)) {
|
||||||
msg = "Deprecated field [" + currentFieldName + "] used, expected [" + name + "] instead";
|
msg = "Deprecated field [" + fieldName + "] used, expected [" + name + "] instead";
|
||||||
if (allReplacedWith != null) {
|
if (allReplacedWith != null) {
|
||||||
msg = "Deprecated field [" + currentFieldName + "] used, replaced by [" + allReplacedWith + "]";
|
// If the field is entirely deprecated then there is no
|
||||||
|
// preferred name so instead use the `allReplaceWith`
|
||||||
|
// message to indicate what should be used instead
|
||||||
|
msg = "Deprecated field [" + fieldName + "] used, replaced by [" + allReplacedWith + "]";
|
||||||
}
|
}
|
||||||
if (strict) {
|
if (strict) {
|
||||||
throw new IllegalArgumentException(msg);
|
throw new IllegalArgumentException(msg);
|
||||||
|
@ -100,10 +142,20 @@ public class ParseField {
|
||||||
return getPreferredName();
|
return getPreferredName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the message to use if this {@link ParseField} has been entirely
|
||||||
|
* deprecated in favor of something else. This method will return
|
||||||
|
* <code>null</code> if the ParseField has not been completely
|
||||||
|
* deprecated.
|
||||||
|
*/
|
||||||
public String getAllReplacedWith() {
|
public String getAllReplacedWith() {
|
||||||
return allReplacedWith;
|
return allReplacedWith;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return an array of the names for the {@link ParseField} which are
|
||||||
|
* deprecated.
|
||||||
|
*/
|
||||||
public String[] getDeprecatedNames() {
|
public String[] getDeprecatedNames() {
|
||||||
return deprecatedNames;
|
return deprecatedNames;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue