@ -30,9 +30,10 @@
package com.google.protobuf ;
package com.google.protobuf ;
import static com.google.protobuf.Internal.checkNotNull ;
import com.google.protobuf.Internal.EnumVerifier ;
import com.google.protobuf.Internal.EnumVerifier ;
import java.lang.reflect.Field ;
import java.lang.reflect.Field ;
import java.util.Objects ;
/** Information for a single field in a protobuf message class. */
/** Information for a single field in a protobuf message class. */
@ExperimentalApi
@ExperimentalApi
@ -63,8 +64,8 @@ final class FieldInfo implements Comparable<FieldInfo> {
public static FieldInfo forField (
public static FieldInfo forField (
Field field , int fieldNumber , FieldType fieldType , boolean enforceUtf8 ) {
Field field , int fieldNumber , FieldType fieldType , boolean enforceUtf8 ) {
checkFieldNumber ( fieldNumber ) ;
checkFieldNumber ( fieldNumber ) ;
Objects . requireNon Null( field , "field" ) ;
checkNot Null( field , "field" ) ;
Objects . requireNon Null( fieldType , "fieldType" ) ;
checkNot Null( fieldType , "fieldType" ) ;
if ( fieldType = = FieldType . MESSAGE_LIST | | fieldType = = FieldType . GROUP_LIST ) {
if ( fieldType = = FieldType . MESSAGE_LIST | | fieldType = = FieldType . GROUP_LIST ) {
throw new IllegalStateException ( "Shouldn't be called for repeated message fields." ) ;
throw new IllegalStateException ( "Shouldn't be called for repeated message fields." ) ;
}
}
@ -88,8 +89,8 @@ final class FieldInfo implements Comparable<FieldInfo> {
public static FieldInfo forPackedField (
public static FieldInfo forPackedField (
Field field , int fieldNumber , FieldType fieldType , Field cachedSizeField ) {
Field field , int fieldNumber , FieldType fieldType , Field cachedSizeField ) {
checkFieldNumber ( fieldNumber ) ;
checkFieldNumber ( fieldNumber ) ;
Objects . requireNon Null( field , "field" ) ;
checkNot Null( field , "field" ) ;
Objects . requireNon Null( fieldType , "fieldType" ) ;
checkNot Null( fieldType , "fieldType" ) ;
if ( fieldType = = FieldType . MESSAGE_LIST | | fieldType = = FieldType . GROUP_LIST ) {
if ( fieldType = = FieldType . MESSAGE_LIST | | fieldType = = FieldType . GROUP_LIST ) {
throw new IllegalStateException ( "Shouldn't be called for repeated message fields." ) ;
throw new IllegalStateException ( "Shouldn't be called for repeated message fields." ) ;
}
}
@ -113,9 +114,9 @@ final class FieldInfo implements Comparable<FieldInfo> {
public static FieldInfo forRepeatedMessageField (
public static FieldInfo forRepeatedMessageField (
Field field , int fieldNumber , FieldType fieldType , Class < ? > messageClass ) {
Field field , int fieldNumber , FieldType fieldType , Class < ? > messageClass ) {
checkFieldNumber ( fieldNumber ) ;
checkFieldNumber ( fieldNumber ) ;
Objects . requireNon Null( field , "field" ) ;
checkNot Null( field , "field" ) ;
Objects . requireNon Null( fieldType , "fieldType" ) ;
checkNot Null( fieldType , "fieldType" ) ;
Objects . requireNon Null( messageClass , "messageClass" ) ;
checkNot Null( messageClass , "messageClass" ) ;
return new FieldInfo (
return new FieldInfo (
field ,
field ,
fieldNumber ,
fieldNumber ,
@ -135,7 +136,7 @@ final class FieldInfo implements Comparable<FieldInfo> {
public static FieldInfo forFieldWithEnumVerifier (
public static FieldInfo forFieldWithEnumVerifier (
Field field , int fieldNumber , FieldType fieldType , EnumVerifier enumVerifier ) {
Field field , int fieldNumber , FieldType fieldType , EnumVerifier enumVerifier ) {
checkFieldNumber ( fieldNumber ) ;
checkFieldNumber ( fieldNumber ) ;
Objects . requireNon Null( field , "field" ) ;
checkNot Null( field , "field" ) ;
return new FieldInfo (
return new FieldInfo (
field ,
field ,
fieldNumber ,
fieldNumber ,
@ -159,7 +160,7 @@ final class FieldInfo implements Comparable<FieldInfo> {
EnumVerifier enumVerifier ,
EnumVerifier enumVerifier ,
Field cachedSizeField ) {
Field cachedSizeField ) {
checkFieldNumber ( fieldNumber ) ;
checkFieldNumber ( fieldNumber ) ;
Objects . requireNon Null( field , "field" ) ;
checkNot Null( field , "field" ) ;
return new FieldInfo (
return new FieldInfo (
field ,
field ,
fieldNumber ,
fieldNumber ,
@ -186,9 +187,9 @@ final class FieldInfo implements Comparable<FieldInfo> {
boolean enforceUtf8 ,
boolean enforceUtf8 ,
EnumVerifier enumVerifier ) {
EnumVerifier enumVerifier ) {
checkFieldNumber ( fieldNumber ) ;
checkFieldNumber ( fieldNumber ) ;
Objects . requireNon Null( field , "field" ) ;
checkNot Null( field , "field" ) ;
Objects . requireNon Null( fieldType , "fieldType" ) ;
checkNot Null( fieldType , "fieldType" ) ;
Objects . requireNon Null( presenceField , "presenceField" ) ;
checkNot Null( presenceField , "presenceField" ) ;
if ( presenceField ! = null & & ! isExactlyOneBitSet ( presenceMask ) ) {
if ( presenceField ! = null & & ! isExactlyOneBitSet ( presenceMask ) ) {
throw new IllegalArgumentException (
throw new IllegalArgumentException (
"presenceMask must have exactly one bit set: " + presenceMask ) ;
"presenceMask must have exactly one bit set: " + presenceMask ) ;
@ -229,9 +230,9 @@ final class FieldInfo implements Comparable<FieldInfo> {
boolean enforceUtf8 ,
boolean enforceUtf8 ,
EnumVerifier enumVerifier ) {
EnumVerifier enumVerifier ) {
checkFieldNumber ( fieldNumber ) ;
checkFieldNumber ( fieldNumber ) ;
Objects . requireNon Null( fieldType , "fieldType" ) ;
checkNot Null( fieldType , "fieldType" ) ;
Objects . requireNon Null( oneof , "oneof" ) ;
checkNot Null( oneof , "oneof" ) ;
Objects . requireNon Null( oneofStoredType , "oneofStoredType" ) ;
checkNot Null( oneofStoredType , "oneofStoredType" ) ;
if ( ! fieldType . isScalar ( ) ) {
if ( ! fieldType . isScalar ( ) ) {
throw new IllegalArgumentException (
throw new IllegalArgumentException (
"Oneof is only supported for scalar fields. Field "
"Oneof is only supported for scalar fields. Field "
@ -271,9 +272,9 @@ final class FieldInfo implements Comparable<FieldInfo> {
boolean enforceUtf8 ,
boolean enforceUtf8 ,
EnumVerifier enumVerifier ) {
EnumVerifier enumVerifier ) {
checkFieldNumber ( fieldNumber ) ;
checkFieldNumber ( fieldNumber ) ;
Objects . requireNon Null( field , "field" ) ;
checkNot Null( field , "field" ) ;
Objects . requireNon Null( fieldType , "fieldType" ) ;
checkNot Null( fieldType , "fieldType" ) ;
Objects . requireNon Null( presenceField , "presenceField" ) ;
checkNot Null( presenceField , "presenceField" ) ;
if ( presenceField ! = null & & ! isExactlyOneBitSet ( presenceMask ) ) {
if ( presenceField ! = null & & ! isExactlyOneBitSet ( presenceMask ) ) {
throw new IllegalArgumentException (
throw new IllegalArgumentException (
"presenceMask must have exactly one bit set: " + presenceMask ) ;
"presenceMask must have exactly one bit set: " + presenceMask ) ;
@ -296,9 +297,9 @@ final class FieldInfo implements Comparable<FieldInfo> {
public static FieldInfo forMapField (
public static FieldInfo forMapField (
Field field , int fieldNumber , Object mapDefaultEntry , EnumVerifier enumVerifier ) {
Field field , int fieldNumber , Object mapDefaultEntry , EnumVerifier enumVerifier ) {
Objects . requireNon Null( mapDefaultEntry , "mapDefaultEntry" ) ;
checkNot Null( mapDefaultEntry , "mapDefaultEntry" ) ;
checkFieldNumber ( fieldNumber ) ;
checkFieldNumber ( fieldNumber ) ;
Objects . requireNon Null( field , "field" ) ;
checkNot Null( field , "field" ) ;
return new FieldInfo (
return new FieldInfo (
field ,
field ,
fieldNumber ,
fieldNumber ,
@ -488,7 +489,7 @@ final class FieldInfo implements Comparable<FieldInfo> {
/** Specifies proto2 presence information. This should not be called for oneof fields. */
/** Specifies proto2 presence information. This should not be called for oneof fields. */
public Builder withPresence ( Field presenceField , int presenceMask ) {
public Builder withPresence ( Field presenceField , int presenceMask ) {
this . presenceField = Objects . requireNon Null( presenceField , "presenceField" ) ;
this . presenceField = checkNot Null( presenceField , "presenceField" ) ;
this . presenceMask = presenceMask ;
this . presenceMask = presenceMask ;
return this ;
return this ;
}
}