31 package com.google.protobuf;
35 import java.util.ArrayList;
36 import java.util.Collections;
37 import java.util.List;
44 final class StructuralMessageInfo
implements MessageInfo {
45 private final ProtoSyntax syntax;
46 private final boolean messageSetWireFormat;
47 private final int[] checkInitialized;
48 private final FieldInfo[]
fields;
49 private final MessageLite defaultInstance;
57 StructuralMessageInfo(
59 boolean messageSetWireFormat,
60 int[] checkInitialized,
62 Object defaultInstance) {
64 this.messageSetWireFormat = messageSetWireFormat;
65 this.checkInitialized = checkInitialized;
67 this.defaultInstance = (MessageLite) checkNotNull(defaultInstance,
"defaultInstance");
72 public ProtoSyntax getSyntax() {
78 public boolean isMessageSetWireFormat() {
79 return messageSetWireFormat;
83 public int[] getCheckInitialized() {
84 return checkInitialized;
91 public FieldInfo[] getFields() {
96 public MessageLite getDefaultInstance() {
97 return defaultInstance;
101 public static Builder newBuilder() {
106 public static Builder newBuilder(
int numFields) {
120 fields =
new ArrayList<FieldInfo>();
124 fields =
new ArrayList<FieldInfo>(numFields);
132 this.syntax = checkNotNull(
syntax,
"syntax");
145 throw new IllegalStateException(
"Builder can only build once");
150 public StructuralMessageInfo
build() {
152 throw new IllegalStateException(
"Builder can only build once");
155 throw new IllegalStateException(
"Must specify a proto syntax");
159 return new StructuralMessageInfo(
163 fields.toArray(
new FieldInfo[0]),