diff options
Diffstat (limited to 'sonar-batch-protocol')
29 files changed, 8059 insertions, 63 deletions
diff --git a/sonar-batch-protocol/compile_protobuf.sh b/sonar-batch-protocol/compile_protobuf.sh new file mode 100644 index 00000000000..f2d14c4eebc --- /dev/null +++ b/sonar-batch-protocol/compile_protobuf.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +OUTPUT_DIR="src/main/gen-java" + +mkdir -p ${OUTPUT_DIR} +protoc --proto_path=src/main/protobuf --java_out=${OUTPUT_DIR} src/main/protobuf/*.proto diff --git a/sonar-batch-protocol/pom.xml b/sonar-batch-protocol/pom.xml index 7d7a4850929..399c4a242e0 100644 --- a/sonar-batch-protocol/pom.xml +++ b/sonar-batch-protocol/pom.xml @@ -4,7 +4,7 @@ <parent> <groupId>org.codehaus.sonar</groupId> <artifactId>sonar</artifactId> - <version>5.0-SNAPSHOT</version> + <version>5.1-SNAPSHOT</version> </parent> <artifactId>sonar-batch-protocol</artifactId> @@ -14,6 +14,10 @@ <dependencies> <dependency> + <groupId>com.google.protobuf</groupId> + <artifactId>protobuf-java</artifactId> + </dependency> + <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> </dependency> @@ -22,16 +26,15 @@ <artifactId>jsr305</artifactId> <scope>provided</scope> </dependency> - - <!-- unit tests --> <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> </dependency> + + <!-- unit tests --> <dependency> - <groupId>org.easytesting</groupId> - <artifactId>fest-assert</artifactId> + <groupId>org.codehaus.sonar</groupId> + <artifactId>sonar-testing-harness</artifactId> <scope>test</scope> </dependency> <dependency> @@ -44,6 +47,24 @@ <build> <plugins> <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>add-source</id> + <phase>generate-sources</phase> + <goals> + <goal>add-source</goal> + </goals> + <configuration> + <sources> + <source>src/main/gen-java</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> diff --git a/sonar-batch-protocol/src/main/gen-java/org/sonar/batch/protocol/Constants.java b/sonar-batch-protocol/src/main/gen-java/org/sonar/batch/protocol/Constants.java new file mode 100644 index 00000000000..f9cd2f3ea34 --- /dev/null +++ b/sonar-batch-protocol/src/main/gen-java/org/sonar/batch/protocol/Constants.java @@ -0,0 +1,269 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: constants.proto + +package org.sonar.batch.protocol; + +public final class Constants { + private Constants() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + } + /** + * Protobuf enum {@code Severity} + */ + public enum Severity + implements com.google.protobuf.ProtocolMessageEnum { + /** + * <code>INFO = 0;</code> + */ + INFO(0, 0), + /** + * <code>MINOR = 1;</code> + */ + MINOR(1, 1), + /** + * <code>MAJOR = 2;</code> + */ + MAJOR(2, 2), + /** + * <code>CRITICAL = 3;</code> + */ + CRITICAL(3, 3), + /** + * <code>BLOCKER = 4;</code> + */ + BLOCKER(4, 4), + ; + + /** + * <code>INFO = 0;</code> + */ + public static final int INFO_VALUE = 0; + /** + * <code>MINOR = 1;</code> + */ + public static final int MINOR_VALUE = 1; + /** + * <code>MAJOR = 2;</code> + */ + public static final int MAJOR_VALUE = 2; + /** + * <code>CRITICAL = 3;</code> + */ + public static final int CRITICAL_VALUE = 3; + /** + * <code>BLOCKER = 4;</code> + */ + public static final int BLOCKER_VALUE = 4; + + + public final int getNumber() { return value; } + + public static Severity valueOf(int value) { + switch (value) { + case 0: return INFO; + case 1: return MINOR; + case 2: return MAJOR; + case 3: return CRITICAL; + case 4: return BLOCKER; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap<Severity> + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap<Severity> + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap<Severity>() { + public Severity findValueByNumber(int number) { + return Severity.valueOf(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + return getDescriptor().getValues().get(index); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return org.sonar.batch.protocol.Constants.getDescriptor().getEnumTypes().get(0); + } + + private static final Severity[] VALUES = values(); + + public static Severity valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + return VALUES[desc.getIndex()]; + } + + private final int index; + private final int value; + + private Severity(int index, int value) { + this.index = index; + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:Severity) + } + + /** + * Protobuf enum {@code ComponentType} + */ + public enum ComponentType + implements com.google.protobuf.ProtocolMessageEnum { + /** + * <code>PROJECT = 0;</code> + */ + PROJECT(0, 0), + /** + * <code>MODULE = 1;</code> + */ + MODULE(1, 1), + /** + * <code>DIRECTORY = 2;</code> + */ + DIRECTORY(2, 2), + /** + * <code>FILE = 3;</code> + */ + FILE(3, 3), + /** + * <code>VIEW = 4;</code> + */ + VIEW(4, 4), + /** + * <code>SUBVIEW = 5;</code> + */ + SUBVIEW(5, 5), + ; + + /** + * <code>PROJECT = 0;</code> + */ + public static final int PROJECT_VALUE = 0; + /** + * <code>MODULE = 1;</code> + */ + public static final int MODULE_VALUE = 1; + /** + * <code>DIRECTORY = 2;</code> + */ + public static final int DIRECTORY_VALUE = 2; + /** + * <code>FILE = 3;</code> + */ + public static final int FILE_VALUE = 3; + /** + * <code>VIEW = 4;</code> + */ + public static final int VIEW_VALUE = 4; + /** + * <code>SUBVIEW = 5;</code> + */ + public static final int SUBVIEW_VALUE = 5; + + + public final int getNumber() { return value; } + + public static ComponentType valueOf(int value) { + switch (value) { + case 0: return PROJECT; + case 1: return MODULE; + case 2: return DIRECTORY; + case 3: return FILE; + case 4: return VIEW; + case 5: return SUBVIEW; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap<ComponentType> + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap<ComponentType> + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap<ComponentType>() { + public ComponentType findValueByNumber(int number) { + return ComponentType.valueOf(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + return getDescriptor().getValues().get(index); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return org.sonar.batch.protocol.Constants.getDescriptor().getEnumTypes().get(1); + } + + private static final ComponentType[] VALUES = values(); + + public static ComponentType valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + return VALUES[desc.getIndex()]; + } + + private final int index; + private final int value; + + private ComponentType(int index, int value) { + this.index = index; + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:ComponentType) + } + + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\017constants.proto*E\n\010Severity\022\010\n\004INFO\020\000\022" + + "\t\n\005MINOR\020\001\022\t\n\005MAJOR\020\002\022\014\n\010CRITICAL\020\003\022\013\n\007B" + + "LOCKER\020\004*X\n\rComponentType\022\013\n\007PROJECT\020\000\022\n" + + "\n\006MODULE\020\001\022\r\n\tDIRECTORY\020\002\022\010\n\004FILE\020\003\022\010\n\004V" + + "IEW\020\004\022\013\n\007SUBVIEW\020\005B\034\n\030org.sonar.batch.pr" + + "otocolH\001" + }; + com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = + new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { + public com.google.protobuf.ExtensionRegistry assignDescriptors( + com.google.protobuf.Descriptors.FileDescriptor root) { + descriptor = root; + return null; + } + }; + com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }, assigner); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/sonar-batch-protocol/src/main/gen-java/org/sonar/batch/protocol/output/BatchReport.java b/sonar-batch-protocol/src/main/gen-java/org/sonar/batch/protocol/output/BatchReport.java new file mode 100644 index 00000000000..23c3a57d828 --- /dev/null +++ b/sonar-batch-protocol/src/main/gen-java/org/sonar/batch/protocol/output/BatchReport.java @@ -0,0 +1,6470 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: batch_report.proto + +package org.sonar.batch.protocol.output; + +public final class BatchReport { + private BatchReport() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + } + public interface MetadataOrBuilder extends + // @@protoc_insertion_point(interface_extends:Metadata) + com.google.protobuf.MessageOrBuilder { + + /** + * <code>optional int64 analysis_date = 1;</code> + */ + boolean hasAnalysisDate(); + /** + * <code>optional int64 analysis_date = 1;</code> + */ + long getAnalysisDate(); + + /** + * <code>optional string project_key = 2;</code> + */ + boolean hasProjectKey(); + /** + * <code>optional string project_key = 2;</code> + */ + java.lang.String getProjectKey(); + /** + * <code>optional string project_key = 2;</code> + */ + com.google.protobuf.ByteString + getProjectKeyBytes(); + + /** + * <code>optional int32 root_component_ref = 3;</code> + */ + boolean hasRootComponentRef(); + /** + * <code>optional int32 root_component_ref = 3;</code> + */ + int getRootComponentRef(); + } + /** + * Protobuf type {@code Metadata} + */ + public static final class Metadata extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:Metadata) + MetadataOrBuilder { + // Use Metadata.newBuilder() to construct. + private Metadata(com.google.protobuf.GeneratedMessage.Builder<?> builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private Metadata(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final Metadata defaultInstance; + public static Metadata getDefaultInstance() { + return defaultInstance; + } + + public Metadata getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Metadata( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + analysisDate_ = input.readInt64(); + break; + } + case 18: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000002; + projectKey_ = bs; + break; + } + case 24: { + bitField0_ |= 0x00000004; + rootComponentRef_ = input.readInt32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Metadata_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Metadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.sonar.batch.protocol.output.BatchReport.Metadata.class, org.sonar.batch.protocol.output.BatchReport.Metadata.Builder.class); + } + + public static com.google.protobuf.Parser<Metadata> PARSER = + new com.google.protobuf.AbstractParser<Metadata>() { + public Metadata parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Metadata(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser<Metadata> getParserForType() { + return PARSER; + } + + private int bitField0_; + public static final int ANALYSIS_DATE_FIELD_NUMBER = 1; + private long analysisDate_; + /** + * <code>optional int64 analysis_date = 1;</code> + */ + public boolean hasAnalysisDate() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * <code>optional int64 analysis_date = 1;</code> + */ + public long getAnalysisDate() { + return analysisDate_; + } + + public static final int PROJECT_KEY_FIELD_NUMBER = 2; + private java.lang.Object projectKey_; + /** + * <code>optional string project_key = 2;</code> + */ + public boolean hasProjectKey() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * <code>optional string project_key = 2;</code> + */ + public java.lang.String getProjectKey() { + java.lang.Object ref = projectKey_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + projectKey_ = s; + } + return s; + } + } + /** + * <code>optional string project_key = 2;</code> + */ + public com.google.protobuf.ByteString + getProjectKeyBytes() { + java.lang.Object ref = projectKey_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + projectKey_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ROOT_COMPONENT_REF_FIELD_NUMBER = 3; + private int rootComponentRef_; + /** + * <code>optional int32 root_component_ref = 3;</code> + */ + public boolean hasRootComponentRef() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * <code>optional int32 root_component_ref = 3;</code> + */ + public int getRootComponentRef() { + return rootComponentRef_; + } + + private void initFields() { + analysisDate_ = 0L; + projectKey_ = ""; + rootComponentRef_ = 0; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeInt64(1, analysisDate_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getProjectKeyBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeInt32(3, rootComponentRef_); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(1, analysisDate_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(2, getProjectKeyBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, rootComponentRef_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Metadata parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.sonar.batch.protocol.output.BatchReport.Metadata parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.sonar.batch.protocol.output.BatchReport.Metadata parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.sonar.batch.protocol.output.BatchReport.Metadata prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code Metadata} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder<Builder> implements + // @@protoc_insertion_point(builder_implements:Metadata) + org.sonar.batch.protocol.output.BatchReport.MetadataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Metadata_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Metadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.sonar.batch.protocol.output.BatchReport.Metadata.class, org.sonar.batch.protocol.output.BatchReport.Metadata.Builder.class); + } + + // Construct using org.sonar.batch.protocol.output.BatchReport.Metadata.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + analysisDate_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + projectKey_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + rootComponentRef_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Metadata_descriptor; + } + + public org.sonar.batch.protocol.output.BatchReport.Metadata getDefaultInstanceForType() { + return org.sonar.batch.protocol.output.BatchReport.Metadata.getDefaultInstance(); + } + + public org.sonar.batch.protocol.output.BatchReport.Metadata build() { + org.sonar.batch.protocol.output.BatchReport.Metadata result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.sonar.batch.protocol.output.BatchReport.Metadata buildPartial() { + org.sonar.batch.protocol.output.BatchReport.Metadata result = new org.sonar.batch.protocol.output.BatchReport.Metadata(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.analysisDate_ = analysisDate_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.projectKey_ = projectKey_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.rootComponentRef_ = rootComponentRef_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.sonar.batch.protocol.output.BatchReport.Metadata) { + return mergeFrom((org.sonar.batch.protocol.output.BatchReport.Metadata)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.sonar.batch.protocol.output.BatchReport.Metadata other) { + if (other == org.sonar.batch.protocol.output.BatchReport.Metadata.getDefaultInstance()) return this; + if (other.hasAnalysisDate()) { + setAnalysisDate(other.getAnalysisDate()); + } + if (other.hasProjectKey()) { + bitField0_ |= 0x00000002; + projectKey_ = other.projectKey_; + onChanged(); + } + if (other.hasRootComponentRef()) { + setRootComponentRef(other.getRootComponentRef()); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.sonar.batch.protocol.output.BatchReport.Metadata parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.sonar.batch.protocol.output.BatchReport.Metadata) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private long analysisDate_ ; + /** + * <code>optional int64 analysis_date = 1;</code> + */ + public boolean hasAnalysisDate() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * <code>optional int64 analysis_date = 1;</code> + */ + public long getAnalysisDate() { + return analysisDate_; + } + /** + * <code>optional int64 analysis_date = 1;</code> + */ + public Builder setAnalysisDate(long value) { + bitField0_ |= 0x00000001; + analysisDate_ = value; + onChanged(); + return this; + } + /** + * <code>optional int64 analysis_date = 1;</code> + */ + public Builder clearAnalysisDate() { + bitField0_ = (bitField0_ & ~0x00000001); + analysisDate_ = 0L; + onChanged(); + return this; + } + + private java.lang.Object projectKey_ = ""; + /** + * <code>optional string project_key = 2;</code> + */ + public boolean hasProjectKey() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * <code>optional string project_key = 2;</code> + */ + public java.lang.String getProjectKey() { + java.lang.Object ref = projectKey_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + projectKey_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string project_key = 2;</code> + */ + public com.google.protobuf.ByteString + getProjectKeyBytes() { + java.lang.Object ref = projectKey_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + projectKey_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string project_key = 2;</code> + */ + public Builder setProjectKey( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + projectKey_ = value; + onChanged(); + return this; + } + /** + * <code>optional string project_key = 2;</code> + */ + public Builder clearProjectKey() { + bitField0_ = (bitField0_ & ~0x00000002); + projectKey_ = getDefaultInstance().getProjectKey(); + onChanged(); + return this; + } + /** + * <code>optional string project_key = 2;</code> + */ + public Builder setProjectKeyBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + projectKey_ = value; + onChanged(); + return this; + } + + private int rootComponentRef_ ; + /** + * <code>optional int32 root_component_ref = 3;</code> + */ + public boolean hasRootComponentRef() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * <code>optional int32 root_component_ref = 3;</code> + */ + public int getRootComponentRef() { + return rootComponentRef_; + } + /** + * <code>optional int32 root_component_ref = 3;</code> + */ + public Builder setRootComponentRef(int value) { + bitField0_ |= 0x00000004; + rootComponentRef_ = value; + onChanged(); + return this; + } + /** + * <code>optional int32 root_component_ref = 3;</code> + */ + public Builder clearRootComponentRef() { + bitField0_ = (bitField0_ & ~0x00000004); + rootComponentRef_ = 0; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:Metadata) + } + + static { + defaultInstance = new Metadata(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:Metadata) + } + + public interface ComponentOrBuilder extends + // @@protoc_insertion_point(interface_extends:Component) + com.google.protobuf.MessageOrBuilder { + + /** + * <code>optional int32 ref = 1;</code> + */ + boolean hasRef(); + /** + * <code>optional int32 ref = 1;</code> + */ + int getRef(); + + /** + * <code>optional string path = 2;</code> + */ + boolean hasPath(); + /** + * <code>optional string path = 2;</code> + */ + java.lang.String getPath(); + /** + * <code>optional string path = 2;</code> + */ + com.google.protobuf.ByteString + getPathBytes(); + + /** + * <code>optional string name = 3;</code> + */ + boolean hasName(); + /** + * <code>optional string name = 3;</code> + */ + java.lang.String getName(); + /** + * <code>optional string name = 3;</code> + */ + com.google.protobuf.ByteString + getNameBytes(); + + /** + * <code>optional .ComponentType type = 4;</code> + */ + boolean hasType(); + /** + * <code>optional .ComponentType type = 4;</code> + */ + org.sonar.batch.protocol.Constants.ComponentType getType(); + + /** + * <code>optional bool is_test = 5;</code> + */ + boolean hasIsTest(); + /** + * <code>optional bool is_test = 5;</code> + */ + boolean getIsTest(); + + /** + * <code>optional string language = 6;</code> + */ + boolean hasLanguage(); + /** + * <code>optional string language = 6;</code> + */ + java.lang.String getLanguage(); + /** + * <code>optional string language = 6;</code> + */ + com.google.protobuf.ByteString + getLanguageBytes(); + + /** + * <code>repeated int32 child_refs = 7;</code> + */ + java.util.List<java.lang.Integer> getChildRefsList(); + /** + * <code>repeated int32 child_refs = 7;</code> + */ + int getChildRefsCount(); + /** + * <code>repeated int32 child_refs = 7;</code> + */ + int getChildRefs(int index); + + /** + * <code>optional int32 snapshot_id = 8;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + boolean hasSnapshotId(); + /** + * <code>optional int32 snapshot_id = 8;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + int getSnapshotId(); + + /** + * <code>optional string uuid = 9;</code> + */ + boolean hasUuid(); + /** + * <code>optional string uuid = 9;</code> + */ + java.lang.String getUuid(); + /** + * <code>optional string uuid = 9;</code> + */ + com.google.protobuf.ByteString + getUuidBytes(); + } + /** + * Protobuf type {@code Component} + */ + public static final class Component extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:Component) + ComponentOrBuilder { + // Use Component.newBuilder() to construct. + private Component(com.google.protobuf.GeneratedMessage.Builder<?> builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private Component(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final Component defaultInstance; + public static Component getDefaultInstance() { + return defaultInstance; + } + + public Component getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Component( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + ref_ = input.readInt32(); + break; + } + case 18: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000002; + path_ = bs; + break; + } + case 26: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000004; + name_ = bs; + break; + } + case 32: { + int rawValue = input.readEnum(); + org.sonar.batch.protocol.Constants.ComponentType value = org.sonar.batch.protocol.Constants.ComponentType.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(4, rawValue); + } else { + bitField0_ |= 0x00000008; + type_ = value; + } + break; + } + case 40: { + bitField0_ |= 0x00000010; + isTest_ = input.readBool(); + break; + } + case 50: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000020; + language_ = bs; + break; + } + case 56: { + if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) { + childRefs_ = new java.util.ArrayList<java.lang.Integer>(); + mutable_bitField0_ |= 0x00000040; + } + childRefs_.add(input.readInt32()); + break; + } + case 58: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) { + childRefs_ = new java.util.ArrayList<java.lang.Integer>(); + mutable_bitField0_ |= 0x00000040; + } + while (input.getBytesUntilLimit() > 0) { + childRefs_.add(input.readInt32()); + } + input.popLimit(limit); + break; + } + case 64: { + bitField0_ |= 0x00000040; + snapshotId_ = input.readInt32(); + break; + } + case 74: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000080; + uuid_ = bs; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) { + childRefs_ = java.util.Collections.unmodifiableList(childRefs_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Component_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Component_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.sonar.batch.protocol.output.BatchReport.Component.class, org.sonar.batch.protocol.output.BatchReport.Component.Builder.class); + } + + public static com.google.protobuf.Parser<Component> PARSER = + new com.google.protobuf.AbstractParser<Component>() { + public Component parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Component(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser<Component> getParserForType() { + return PARSER; + } + + private int bitField0_; + public static final int REF_FIELD_NUMBER = 1; + private int ref_; + /** + * <code>optional int32 ref = 1;</code> + */ + public boolean hasRef() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * <code>optional int32 ref = 1;</code> + */ + public int getRef() { + return ref_; + } + + public static final int PATH_FIELD_NUMBER = 2; + private java.lang.Object path_; + /** + * <code>optional string path = 2;</code> + */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * <code>optional string path = 2;</code> + */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } + } + /** + * <code>optional string path = 2;</code> + */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int NAME_FIELD_NUMBER = 3; + private java.lang.Object name_; + /** + * <code>optional string name = 3;</code> + */ + public boolean hasName() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * <code>optional string name = 3;</code> + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * <code>optional string name = 3;</code> + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TYPE_FIELD_NUMBER = 4; + private org.sonar.batch.protocol.Constants.ComponentType type_; + /** + * <code>optional .ComponentType type = 4;</code> + */ + public boolean hasType() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * <code>optional .ComponentType type = 4;</code> + */ + public org.sonar.batch.protocol.Constants.ComponentType getType() { + return type_; + } + + public static final int IS_TEST_FIELD_NUMBER = 5; + private boolean isTest_; + /** + * <code>optional bool is_test = 5;</code> + */ + public boolean hasIsTest() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * <code>optional bool is_test = 5;</code> + */ + public boolean getIsTest() { + return isTest_; + } + + public static final int LANGUAGE_FIELD_NUMBER = 6; + private java.lang.Object language_; + /** + * <code>optional string language = 6;</code> + */ + public boolean hasLanguage() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * <code>optional string language = 6;</code> + */ + public java.lang.String getLanguage() { + java.lang.Object ref = language_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + language_ = s; + } + return s; + } + } + /** + * <code>optional string language = 6;</code> + */ + public com.google.protobuf.ByteString + getLanguageBytes() { + java.lang.Object ref = language_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + language_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int CHILD_REFS_FIELD_NUMBER = 7; + private java.util.List<java.lang.Integer> childRefs_; + /** + * <code>repeated int32 child_refs = 7;</code> + */ + public java.util.List<java.lang.Integer> + getChildRefsList() { + return childRefs_; + } + /** + * <code>repeated int32 child_refs = 7;</code> + */ + public int getChildRefsCount() { + return childRefs_.size(); + } + /** + * <code>repeated int32 child_refs = 7;</code> + */ + public int getChildRefs(int index) { + return childRefs_.get(index); + } + + public static final int SNAPSHOT_ID_FIELD_NUMBER = 8; + private int snapshotId_; + /** + * <code>optional int32 snapshot_id = 8;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + public boolean hasSnapshotId() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * <code>optional int32 snapshot_id = 8;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + public int getSnapshotId() { + return snapshotId_; + } + + public static final int UUID_FIELD_NUMBER = 9; + private java.lang.Object uuid_; + /** + * <code>optional string uuid = 9;</code> + */ + public boolean hasUuid() { + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * <code>optional string uuid = 9;</code> + */ + public java.lang.String getUuid() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + uuid_ = s; + } + return s; + } + } + /** + * <code>optional string uuid = 9;</code> + */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private void initFields() { + ref_ = 0; + path_ = ""; + name_ = ""; + type_ = org.sonar.batch.protocol.Constants.ComponentType.PROJECT; + isTest_ = false; + language_ = ""; + childRefs_ = java.util.Collections.emptyList(); + snapshotId_ = 0; + uuid_ = ""; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeInt32(1, ref_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPathBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getNameBytes()); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeEnum(4, type_.getNumber()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeBool(5, isTest_); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeBytes(6, getLanguageBytes()); + } + for (int i = 0; i < childRefs_.size(); i++) { + output.writeInt32(7, childRefs_.get(i)); + } + if (((bitField0_ & 0x00000040) == 0x00000040)) { + output.writeInt32(8, snapshotId_); + } + if (((bitField0_ & 0x00000080) == 0x00000080)) { + output.writeBytes(9, getUuidBytes()); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, ref_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(2, getPathBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(3, getNameBytes()); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(4, type_.getNumber()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(5, isTest_); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(6, getLanguageBytes()); + } + { + int dataSize = 0; + for (int i = 0; i < childRefs_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(childRefs_.get(i)); + } + size += dataSize; + size += 1 * getChildRefsList().size(); + } + if (((bitField0_ & 0x00000040) == 0x00000040)) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(8, snapshotId_); + } + if (((bitField0_ & 0x00000080) == 0x00000080)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(9, getUuidBytes()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Component parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.sonar.batch.protocol.output.BatchReport.Component parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.sonar.batch.protocol.output.BatchReport.Component parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.sonar.batch.protocol.output.BatchReport.Component prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code Component} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder<Builder> implements + // @@protoc_insertion_point(builder_implements:Component) + org.sonar.batch.protocol.output.BatchReport.ComponentOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Component_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Component_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.sonar.batch.protocol.output.BatchReport.Component.class, org.sonar.batch.protocol.output.BatchReport.Component.Builder.class); + } + + // Construct using org.sonar.batch.protocol.output.BatchReport.Component.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + ref_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + path_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + type_ = org.sonar.batch.protocol.Constants.ComponentType.PROJECT; + bitField0_ = (bitField0_ & ~0x00000008); + isTest_ = false; + bitField0_ = (bitField0_ & ~0x00000010); + language_ = ""; + bitField0_ = (bitField0_ & ~0x00000020); + childRefs_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000040); + snapshotId_ = 0; + bitField0_ = (bitField0_ & ~0x00000080); + uuid_ = ""; + bitField0_ = (bitField0_ & ~0x00000100); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Component_descriptor; + } + + public org.sonar.batch.protocol.output.BatchReport.Component getDefaultInstanceForType() { + return org.sonar.batch.protocol.output.BatchReport.Component.getDefaultInstance(); + } + + public org.sonar.batch.protocol.output.BatchReport.Component build() { + org.sonar.batch.protocol.output.BatchReport.Component result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.sonar.batch.protocol.output.BatchReport.Component buildPartial() { + org.sonar.batch.protocol.output.BatchReport.Component result = new org.sonar.batch.protocol.output.BatchReport.Component(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.ref_ = ref_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.path_ = path_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.name_ = name_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.type_ = type_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.isTest_ = isTest_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.language_ = language_; + if (((bitField0_ & 0x00000040) == 0x00000040)) { + childRefs_ = java.util.Collections.unmodifiableList(childRefs_); + bitField0_ = (bitField0_ & ~0x00000040); + } + result.childRefs_ = childRefs_; + if (((from_bitField0_ & 0x00000080) == 0x00000080)) { + to_bitField0_ |= 0x00000040; + } + result.snapshotId_ = snapshotId_; + if (((from_bitField0_ & 0x00000100) == 0x00000100)) { + to_bitField0_ |= 0x00000080; + } + result.uuid_ = uuid_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.sonar.batch.protocol.output.BatchReport.Component) { + return mergeFrom((org.sonar.batch.protocol.output.BatchReport.Component)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.sonar.batch.protocol.output.BatchReport.Component other) { + if (other == org.sonar.batch.protocol.output.BatchReport.Component.getDefaultInstance()) return this; + if (other.hasRef()) { + setRef(other.getRef()); + } + if (other.hasPath()) { + bitField0_ |= 0x00000002; + path_ = other.path_; + onChanged(); + } + if (other.hasName()) { + bitField0_ |= 0x00000004; + name_ = other.name_; + onChanged(); + } + if (other.hasType()) { + setType(other.getType()); + } + if (other.hasIsTest()) { + setIsTest(other.getIsTest()); + } + if (other.hasLanguage()) { + bitField0_ |= 0x00000020; + language_ = other.language_; + onChanged(); + } + if (!other.childRefs_.isEmpty()) { + if (childRefs_.isEmpty()) { + childRefs_ = other.childRefs_; + bitField0_ = (bitField0_ & ~0x00000040); + } else { + ensureChildRefsIsMutable(); + childRefs_.addAll(other.childRefs_); + } + onChanged(); + } + if (other.hasSnapshotId()) { + setSnapshotId(other.getSnapshotId()); + } + if (other.hasUuid()) { + bitField0_ |= 0x00000100; + uuid_ = other.uuid_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.sonar.batch.protocol.output.BatchReport.Component parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.sonar.batch.protocol.output.BatchReport.Component) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private int ref_ ; + /** + * <code>optional int32 ref = 1;</code> + */ + public boolean hasRef() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * <code>optional int32 ref = 1;</code> + */ + public int getRef() { + return ref_; + } + /** + * <code>optional int32 ref = 1;</code> + */ + public Builder setRef(int value) { + bitField0_ |= 0x00000001; + ref_ = value; + onChanged(); + return this; + } + /** + * <code>optional int32 ref = 1;</code> + */ + public Builder clearRef() { + bitField0_ = (bitField0_ & ~0x00000001); + ref_ = 0; + onChanged(); + return this; + } + + private java.lang.Object path_ = ""; + /** + * <code>optional string path = 2;</code> + */ + public boolean hasPath() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * <code>optional string path = 2;</code> + */ + public java.lang.String getPath() { + java.lang.Object ref = path_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + path_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string path = 2;</code> + */ + public com.google.protobuf.ByteString + getPathBytes() { + java.lang.Object ref = path_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + path_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string path = 2;</code> + */ + public Builder setPath( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + /** + * <code>optional string path = 2;</code> + */ + public Builder clearPath() { + bitField0_ = (bitField0_ & ~0x00000002); + path_ = getDefaultInstance().getPath(); + onChanged(); + return this; + } + /** + * <code>optional string path = 2;</code> + */ + public Builder setPathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + path_ = value; + onChanged(); + return this; + } + + private java.lang.Object name_ = ""; + /** + * <code>optional string name = 3;</code> + */ + public boolean hasName() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * <code>optional string name = 3;</code> + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string name = 3;</code> + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string name = 3;</code> + */ + public Builder setName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + name_ = value; + onChanged(); + return this; + } + /** + * <code>optional string name = 3;</code> + */ + public Builder clearName() { + bitField0_ = (bitField0_ & ~0x00000004); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * <code>optional string name = 3;</code> + */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + name_ = value; + onChanged(); + return this; + } + + private org.sonar.batch.protocol.Constants.ComponentType type_ = org.sonar.batch.protocol.Constants.ComponentType.PROJECT; + /** + * <code>optional .ComponentType type = 4;</code> + */ + public boolean hasType() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * <code>optional .ComponentType type = 4;</code> + */ + public org.sonar.batch.protocol.Constants.ComponentType getType() { + return type_; + } + /** + * <code>optional .ComponentType type = 4;</code> + */ + public Builder setType(org.sonar.batch.protocol.Constants.ComponentType value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; + type_ = value; + onChanged(); + return this; + } + /** + * <code>optional .ComponentType type = 4;</code> + */ + public Builder clearType() { + bitField0_ = (bitField0_ & ~0x00000008); + type_ = org.sonar.batch.protocol.Constants.ComponentType.PROJECT; + onChanged(); + return this; + } + + private boolean isTest_ ; + /** + * <code>optional bool is_test = 5;</code> + */ + public boolean hasIsTest() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * <code>optional bool is_test = 5;</code> + */ + public boolean getIsTest() { + return isTest_; + } + /** + * <code>optional bool is_test = 5;</code> + */ + public Builder setIsTest(boolean value) { + bitField0_ |= 0x00000010; + isTest_ = value; + onChanged(); + return this; + } + /** + * <code>optional bool is_test = 5;</code> + */ + public Builder clearIsTest() { + bitField0_ = (bitField0_ & ~0x00000010); + isTest_ = false; + onChanged(); + return this; + } + + private java.lang.Object language_ = ""; + /** + * <code>optional string language = 6;</code> + */ + public boolean hasLanguage() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * <code>optional string language = 6;</code> + */ + public java.lang.String getLanguage() { + java.lang.Object ref = language_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + language_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string language = 6;</code> + */ + public com.google.protobuf.ByteString + getLanguageBytes() { + java.lang.Object ref = language_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + language_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string language = 6;</code> + */ + public Builder setLanguage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000020; + language_ = value; + onChanged(); + return this; + } + /** + * <code>optional string language = 6;</code> + */ + public Builder clearLanguage() { + bitField0_ = (bitField0_ & ~0x00000020); + language_ = getDefaultInstance().getLanguage(); + onChanged(); + return this; + } + /** + * <code>optional string language = 6;</code> + */ + public Builder setLanguageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000020; + language_ = value; + onChanged(); + return this; + } + + private java.util.List<java.lang.Integer> childRefs_ = java.util.Collections.emptyList(); + private void ensureChildRefsIsMutable() { + if (!((bitField0_ & 0x00000040) == 0x00000040)) { + childRefs_ = new java.util.ArrayList<java.lang.Integer>(childRefs_); + bitField0_ |= 0x00000040; + } + } + /** + * <code>repeated int32 child_refs = 7;</code> + */ + public java.util.List<java.lang.Integer> + getChildRefsList() { + return java.util.Collections.unmodifiableList(childRefs_); + } + /** + * <code>repeated int32 child_refs = 7;</code> + */ + public int getChildRefsCount() { + return childRefs_.size(); + } + /** + * <code>repeated int32 child_refs = 7;</code> + */ + public int getChildRefs(int index) { + return childRefs_.get(index); + } + /** + * <code>repeated int32 child_refs = 7;</code> + */ + public Builder setChildRefs( + int index, int value) { + ensureChildRefsIsMutable(); + childRefs_.set(index, value); + onChanged(); + return this; + } + /** + * <code>repeated int32 child_refs = 7;</code> + */ + public Builder addChildRefs(int value) { + ensureChildRefsIsMutable(); + childRefs_.add(value); + onChanged(); + return this; + } + /** + * <code>repeated int32 child_refs = 7;</code> + */ + public Builder addAllChildRefs( + java.lang.Iterable<? extends java.lang.Integer> values) { + ensureChildRefsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, childRefs_); + onChanged(); + return this; + } + /** + * <code>repeated int32 child_refs = 7;</code> + */ + public Builder clearChildRefs() { + childRefs_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000040); + onChanged(); + return this; + } + + private int snapshotId_ ; + /** + * <code>optional int32 snapshot_id = 8;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + public boolean hasSnapshotId() { + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * <code>optional int32 snapshot_id = 8;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + public int getSnapshotId() { + return snapshotId_; + } + /** + * <code>optional int32 snapshot_id = 8;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + public Builder setSnapshotId(int value) { + bitField0_ |= 0x00000080; + snapshotId_ = value; + onChanged(); + return this; + } + /** + * <code>optional int32 snapshot_id = 8;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + public Builder clearSnapshotId() { + bitField0_ = (bitField0_ & ~0x00000080); + snapshotId_ = 0; + onChanged(); + return this; + } + + private java.lang.Object uuid_ = ""; + /** + * <code>optional string uuid = 9;</code> + */ + public boolean hasUuid() { + return ((bitField0_ & 0x00000100) == 0x00000100); + } + /** + * <code>optional string uuid = 9;</code> + */ + public java.lang.String getUuid() { + java.lang.Object ref = uuid_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + uuid_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string uuid = 9;</code> + */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string uuid = 9;</code> + */ + public Builder setUuid( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000100; + uuid_ = value; + onChanged(); + return this; + } + /** + * <code>optional string uuid = 9;</code> + */ + public Builder clearUuid() { + bitField0_ = (bitField0_ & ~0x00000100); + uuid_ = getDefaultInstance().getUuid(); + onChanged(); + return this; + } + /** + * <code>optional string uuid = 9;</code> + */ + public Builder setUuidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000100; + uuid_ = value; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:Component) + } + + static { + defaultInstance = new Component(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:Component) + } + + public interface IssueOrBuilder extends + // @@protoc_insertion_point(interface_extends:Issue) + com.google.protobuf.MessageOrBuilder { + + /** + * <code>optional string rule_repository = 1;</code> + */ + boolean hasRuleRepository(); + /** + * <code>optional string rule_repository = 1;</code> + */ + java.lang.String getRuleRepository(); + /** + * <code>optional string rule_repository = 1;</code> + */ + com.google.protobuf.ByteString + getRuleRepositoryBytes(); + + /** + * <code>optional string rule_key = 2;</code> + */ + boolean hasRuleKey(); + /** + * <code>optional string rule_key = 2;</code> + */ + java.lang.String getRuleKey(); + /** + * <code>optional string rule_key = 2;</code> + */ + com.google.protobuf.ByteString + getRuleKeyBytes(); + + /** + * <code>optional int32 line = 3;</code> + */ + boolean hasLine(); + /** + * <code>optional int32 line = 3;</code> + */ + int getLine(); + + /** + * <code>optional string msg = 4;</code> + */ + boolean hasMsg(); + /** + * <code>optional string msg = 4;</code> + */ + java.lang.String getMsg(); + /** + * <code>optional string msg = 4;</code> + */ + com.google.protobuf.ByteString + getMsgBytes(); + + /** + * <code>optional .Severity severity = 5;</code> + */ + boolean hasSeverity(); + /** + * <code>optional .Severity severity = 5;</code> + */ + org.sonar.batch.protocol.Constants.Severity getSeverity(); + + /** + * <code>repeated string tags = 6;</code> + */ + com.google.protobuf.ProtocolStringList + getTagsList(); + /** + * <code>repeated string tags = 6;</code> + */ + int getTagsCount(); + /** + * <code>repeated string tags = 6;</code> + */ + java.lang.String getTags(int index); + /** + * <code>repeated string tags = 6;</code> + */ + com.google.protobuf.ByteString + getTagsBytes(int index); + + /** + * <code>optional double effort_to_fix = 7;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + boolean hasEffortToFix(); + /** + * <code>optional double effort_to_fix = 7;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + double getEffortToFix(); + + /** + * <code>optional bool is_new = 8;</code> + */ + boolean hasIsNew(); + /** + * <code>optional bool is_new = 8;</code> + */ + boolean getIsNew(); + + /** + * <code>optional string uuid = 9;</code> + */ + boolean hasUuid(); + /** + * <code>optional string uuid = 9;</code> + */ + java.lang.String getUuid(); + /** + * <code>optional string uuid = 9;</code> + */ + com.google.protobuf.ByteString + getUuidBytes(); + + /** + * <code>optional int64 debt_in_minutes = 10;</code> + */ + boolean hasDebtInMinutes(); + /** + * <code>optional int64 debt_in_minutes = 10;</code> + */ + long getDebtInMinutes(); + + /** + * <code>optional string resolution = 11;</code> + */ + boolean hasResolution(); + /** + * <code>optional string resolution = 11;</code> + */ + java.lang.String getResolution(); + /** + * <code>optional string resolution = 11;</code> + */ + com.google.protobuf.ByteString + getResolutionBytes(); + + /** + * <code>optional string status = 12;</code> + */ + boolean hasStatus(); + /** + * <code>optional string status = 12;</code> + */ + java.lang.String getStatus(); + /** + * <code>optional string status = 12;</code> + */ + com.google.protobuf.ByteString + getStatusBytes(); + + /** + * <code>optional string checksum = 13;</code> + */ + boolean hasChecksum(); + /** + * <code>optional string checksum = 13;</code> + */ + java.lang.String getChecksum(); + /** + * <code>optional string checksum = 13;</code> + */ + com.google.protobuf.ByteString + getChecksumBytes(); + + /** + * <code>optional bool manual_severity = 14;</code> + */ + boolean hasManualSeverity(); + /** + * <code>optional bool manual_severity = 14;</code> + */ + boolean getManualSeverity(); + + /** + * <code>optional string reporter = 15;</code> + */ + boolean hasReporter(); + /** + * <code>optional string reporter = 15;</code> + */ + java.lang.String getReporter(); + /** + * <code>optional string reporter = 15;</code> + */ + com.google.protobuf.ByteString + getReporterBytes(); + + /** + * <code>optional string assignee = 16;</code> + */ + boolean hasAssignee(); + /** + * <code>optional string assignee = 16;</code> + */ + java.lang.String getAssignee(); + /** + * <code>optional string assignee = 16;</code> + */ + com.google.protobuf.ByteString + getAssigneeBytes(); + + /** + * <code>optional string action_plan_key = 17;</code> + */ + boolean hasActionPlanKey(); + /** + * <code>optional string action_plan_key = 17;</code> + */ + java.lang.String getActionPlanKey(); + /** + * <code>optional string action_plan_key = 17;</code> + */ + com.google.protobuf.ByteString + getActionPlanKeyBytes(); + + /** + * <code>optional string attributes = 18;</code> + */ + boolean hasAttributes(); + /** + * <code>optional string attributes = 18;</code> + */ + java.lang.String getAttributes(); + /** + * <code>optional string attributes = 18;</code> + */ + com.google.protobuf.ByteString + getAttributesBytes(); + + /** + * <code>optional string author_login = 19;</code> + */ + boolean hasAuthorLogin(); + /** + * <code>optional string author_login = 19;</code> + */ + java.lang.String getAuthorLogin(); + /** + * <code>optional string author_login = 19;</code> + */ + com.google.protobuf.ByteString + getAuthorLoginBytes(); + + /** + * <code>optional int64 creation_date = 20;</code> + */ + boolean hasCreationDate(); + /** + * <code>optional int64 creation_date = 20;</code> + */ + long getCreationDate(); + + /** + * <code>optional int64 close_date = 21;</code> + */ + boolean hasCloseDate(); + /** + * <code>optional int64 close_date = 21;</code> + */ + long getCloseDate(); + + /** + * <code>optional int64 update_date = 22;</code> + */ + boolean hasUpdateDate(); + /** + * <code>optional int64 update_date = 22;</code> + */ + long getUpdateDate(); + + /** + * <code>optional int64 selected_at = 23;</code> + */ + boolean hasSelectedAt(); + /** + * <code>optional int64 selected_at = 23;</code> + */ + long getSelectedAt(); + + /** + * <code>optional string diff_fields = 24;</code> + */ + boolean hasDiffFields(); + /** + * <code>optional string diff_fields = 24;</code> + */ + java.lang.String getDiffFields(); + /** + * <code>optional string diff_fields = 24;</code> + */ + com.google.protobuf.ByteString + getDiffFieldsBytes(); + + /** + * <code>optional bool is_changed = 25;</code> + */ + boolean hasIsChanged(); + /** + * <code>optional bool is_changed = 25;</code> + */ + boolean getIsChanged(); + + /** + * <code>optional bool must_send_notification = 26;</code> + */ + boolean hasMustSendNotification(); + /** + * <code>optional bool must_send_notification = 26;</code> + */ + boolean getMustSendNotification(); + } + /** + * Protobuf type {@code Issue} + */ + public static final class Issue extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:Issue) + IssueOrBuilder { + // Use Issue.newBuilder() to construct. + private Issue(com.google.protobuf.GeneratedMessage.Builder<?> builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private Issue(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final Issue defaultInstance; + public static Issue getDefaultInstance() { + return defaultInstance; + } + + public Issue getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Issue( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000001; + ruleRepository_ = bs; + break; + } + case 18: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000002; + ruleKey_ = bs; + break; + } + case 24: { + bitField0_ |= 0x00000004; + line_ = input.readInt32(); + break; + } + case 34: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000008; + msg_ = bs; + break; + } + case 40: { + int rawValue = input.readEnum(); + org.sonar.batch.protocol.Constants.Severity value = org.sonar.batch.protocol.Constants.Severity.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(5, rawValue); + } else { + bitField0_ |= 0x00000010; + severity_ = value; + } + break; + } + case 50: { + com.google.protobuf.ByteString bs = input.readBytes(); + if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + tags_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000020; + } + tags_.add(bs); + break; + } + case 57: { + bitField0_ |= 0x00000020; + effortToFix_ = input.readDouble(); + break; + } + case 64: { + bitField0_ |= 0x00000040; + isNew_ = input.readBool(); + break; + } + case 74: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000080; + uuid_ = bs; + break; + } + case 80: { + bitField0_ |= 0x00000100; + debtInMinutes_ = input.readInt64(); + break; + } + case 90: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000200; + resolution_ = bs; + break; + } + case 98: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000400; + status_ = bs; + break; + } + case 106: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000800; + checksum_ = bs; + break; + } + case 112: { + bitField0_ |= 0x00001000; + manualSeverity_ = input.readBool(); + break; + } + case 122: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00002000; + reporter_ = bs; + break; + } + case 130: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00004000; + assignee_ = bs; + break; + } + case 138: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00008000; + actionPlanKey_ = bs; + break; + } + case 146: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00010000; + attributes_ = bs; + break; + } + case 154: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00020000; + authorLogin_ = bs; + break; + } + case 160: { + bitField0_ |= 0x00040000; + creationDate_ = input.readInt64(); + break; + } + case 168: { + bitField0_ |= 0x00080000; + closeDate_ = input.readInt64(); + break; + } + case 176: { + bitField0_ |= 0x00100000; + updateDate_ = input.readInt64(); + break; + } + case 184: { + bitField0_ |= 0x00200000; + selectedAt_ = input.readInt64(); + break; + } + case 194: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00400000; + diffFields_ = bs; + break; + } + case 200: { + bitField0_ |= 0x00800000; + isChanged_ = input.readBool(); + break; + } + case 208: { + bitField0_ |= 0x01000000; + mustSendNotification_ = input.readBool(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + tags_ = tags_.getUnmodifiableView(); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Issue_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Issue_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.sonar.batch.protocol.output.BatchReport.Issue.class, org.sonar.batch.protocol.output.BatchReport.Issue.Builder.class); + } + + public static com.google.protobuf.Parser<Issue> PARSER = + new com.google.protobuf.AbstractParser<Issue>() { + public Issue parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Issue(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser<Issue> getParserForType() { + return PARSER; + } + + private int bitField0_; + public static final int RULE_REPOSITORY_FIELD_NUMBER = 1; + private java.lang.Object ruleRepository_; + /** + * <code>optional string rule_repository = 1;</code> + */ + public boolean hasRuleRepository() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * <code>optional string rule_repository = 1;</code> + */ + public java.lang.String getRuleRepository() { + java.lang.Object ref = ruleRepository_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + ruleRepository_ = s; + } + return s; + } + } + /** + * <code>optional string rule_repository = 1;</code> + */ + public com.google.protobuf.ByteString + getRuleRepositoryBytes() { + java.lang.Object ref = ruleRepository_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ruleRepository_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int RULE_KEY_FIELD_NUMBER = 2; + private java.lang.Object ruleKey_; + /** + * <code>optional string rule_key = 2;</code> + */ + public boolean hasRuleKey() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * <code>optional string rule_key = 2;</code> + */ + public java.lang.String getRuleKey() { + java.lang.Object ref = ruleKey_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + ruleKey_ = s; + } + return s; + } + } + /** + * <code>optional string rule_key = 2;</code> + */ + public com.google.protobuf.ByteString + getRuleKeyBytes() { + java.lang.Object ref = ruleKey_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ruleKey_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LINE_FIELD_NUMBER = 3; + private int line_; + /** + * <code>optional int32 line = 3;</code> + */ + public boolean hasLine() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * <code>optional int32 line = 3;</code> + */ + public int getLine() { + return line_; + } + + public static final int MSG_FIELD_NUMBER = 4; + private java.lang.Object msg_; + /** + * <code>optional string msg = 4;</code> + */ + public boolean hasMsg() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * <code>optional string msg = 4;</code> + */ + public java.lang.String getMsg() { + java.lang.Object ref = msg_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + msg_ = s; + } + return s; + } + } + /** + * <code>optional string msg = 4;</code> + */ + public com.google.protobuf.ByteString + getMsgBytes() { + java.lang.Object ref = msg_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + msg_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SEVERITY_FIELD_NUMBER = 5; + private org.sonar.batch.protocol.Constants.Severity severity_; + /** + * <code>optional .Severity severity = 5;</code> + */ + public boolean hasSeverity() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * <code>optional .Severity severity = 5;</code> + */ + public org.sonar.batch.protocol.Constants.Severity getSeverity() { + return severity_; + } + + public static final int TAGS_FIELD_NUMBER = 6; + private com.google.protobuf.LazyStringList tags_; + /** + * <code>repeated string tags = 6;</code> + */ + public com.google.protobuf.ProtocolStringList + getTagsList() { + return tags_; + } + /** + * <code>repeated string tags = 6;</code> + */ + public int getTagsCount() { + return tags_.size(); + } + /** + * <code>repeated string tags = 6;</code> + */ + public java.lang.String getTags(int index) { + return tags_.get(index); + } + /** + * <code>repeated string tags = 6;</code> + */ + public com.google.protobuf.ByteString + getTagsBytes(int index) { + return tags_.getByteString(index); + } + + public static final int EFFORT_TO_FIX_FIELD_NUMBER = 7; + private double effortToFix_; + /** + * <code>optional double effort_to_fix = 7;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + public boolean hasEffortToFix() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * <code>optional double effort_to_fix = 7;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + public double getEffortToFix() { + return effortToFix_; + } + + public static final int IS_NEW_FIELD_NUMBER = 8; + private boolean isNew_; + /** + * <code>optional bool is_new = 8;</code> + */ + public boolean hasIsNew() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * <code>optional bool is_new = 8;</code> + */ + public boolean getIsNew() { + return isNew_; + } + + public static final int UUID_FIELD_NUMBER = 9; + private java.lang.Object uuid_; + /** + * <code>optional string uuid = 9;</code> + */ + public boolean hasUuid() { + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * <code>optional string uuid = 9;</code> + */ + public java.lang.String getUuid() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + uuid_ = s; + } + return s; + } + } + /** + * <code>optional string uuid = 9;</code> + */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int DEBT_IN_MINUTES_FIELD_NUMBER = 10; + private long debtInMinutes_; + /** + * <code>optional int64 debt_in_minutes = 10;</code> + */ + public boolean hasDebtInMinutes() { + return ((bitField0_ & 0x00000100) == 0x00000100); + } + /** + * <code>optional int64 debt_in_minutes = 10;</code> + */ + public long getDebtInMinutes() { + return debtInMinutes_; + } + + public static final int RESOLUTION_FIELD_NUMBER = 11; + private java.lang.Object resolution_; + /** + * <code>optional string resolution = 11;</code> + */ + public boolean hasResolution() { + return ((bitField0_ & 0x00000200) == 0x00000200); + } + /** + * <code>optional string resolution = 11;</code> + */ + public java.lang.String getResolution() { + java.lang.Object ref = resolution_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + resolution_ = s; + } + return s; + } + } + /** + * <code>optional string resolution = 11;</code> + */ + public com.google.protobuf.ByteString + getResolutionBytes() { + java.lang.Object ref = resolution_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + resolution_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int STATUS_FIELD_NUMBER = 12; + private java.lang.Object status_; + /** + * <code>optional string status = 12;</code> + */ + public boolean hasStatus() { + return ((bitField0_ & 0x00000400) == 0x00000400); + } + /** + * <code>optional string status = 12;</code> + */ + public java.lang.String getStatus() { + java.lang.Object ref = status_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + status_ = s; + } + return s; + } + } + /** + * <code>optional string status = 12;</code> + */ + public com.google.protobuf.ByteString + getStatusBytes() { + java.lang.Object ref = status_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + status_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int CHECKSUM_FIELD_NUMBER = 13; + private java.lang.Object checksum_; + /** + * <code>optional string checksum = 13;</code> + */ + public boolean hasChecksum() { + return ((bitField0_ & 0x00000800) == 0x00000800); + } + /** + * <code>optional string checksum = 13;</code> + */ + public java.lang.String getChecksum() { + java.lang.Object ref = checksum_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + checksum_ = s; + } + return s; + } + } + /** + * <code>optional string checksum = 13;</code> + */ + public com.google.protobuf.ByteString + getChecksumBytes() { + java.lang.Object ref = checksum_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + checksum_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int MANUAL_SEVERITY_FIELD_NUMBER = 14; + private boolean manualSeverity_; + /** + * <code>optional bool manual_severity = 14;</code> + */ + public boolean hasManualSeverity() { + return ((bitField0_ & 0x00001000) == 0x00001000); + } + /** + * <code>optional bool manual_severity = 14;</code> + */ + public boolean getManualSeverity() { + return manualSeverity_; + } + + public static final int REPORTER_FIELD_NUMBER = 15; + private java.lang.Object reporter_; + /** + * <code>optional string reporter = 15;</code> + */ + public boolean hasReporter() { + return ((bitField0_ & 0x00002000) == 0x00002000); + } + /** + * <code>optional string reporter = 15;</code> + */ + public java.lang.String getReporter() { + java.lang.Object ref = reporter_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + reporter_ = s; + } + return s; + } + } + /** + * <code>optional string reporter = 15;</code> + */ + public com.google.protobuf.ByteString + getReporterBytes() { + java.lang.Object ref = reporter_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + reporter_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ASSIGNEE_FIELD_NUMBER = 16; + private java.lang.Object assignee_; + /** + * <code>optional string assignee = 16;</code> + */ + public boolean hasAssignee() { + return ((bitField0_ & 0x00004000) == 0x00004000); + } + /** + * <code>optional string assignee = 16;</code> + */ + public java.lang.String getAssignee() { + java.lang.Object ref = assignee_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + assignee_ = s; + } + return s; + } + } + /** + * <code>optional string assignee = 16;</code> + */ + public com.google.protobuf.ByteString + getAssigneeBytes() { + java.lang.Object ref = assignee_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + assignee_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ACTION_PLAN_KEY_FIELD_NUMBER = 17; + private java.lang.Object actionPlanKey_; + /** + * <code>optional string action_plan_key = 17;</code> + */ + public boolean hasActionPlanKey() { + return ((bitField0_ & 0x00008000) == 0x00008000); + } + /** + * <code>optional string action_plan_key = 17;</code> + */ + public java.lang.String getActionPlanKey() { + java.lang.Object ref = actionPlanKey_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + actionPlanKey_ = s; + } + return s; + } + } + /** + * <code>optional string action_plan_key = 17;</code> + */ + public com.google.protobuf.ByteString + getActionPlanKeyBytes() { + java.lang.Object ref = actionPlanKey_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + actionPlanKey_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ATTRIBUTES_FIELD_NUMBER = 18; + private java.lang.Object attributes_; + /** + * <code>optional string attributes = 18;</code> + */ + public boolean hasAttributes() { + return ((bitField0_ & 0x00010000) == 0x00010000); + } + /** + * <code>optional string attributes = 18;</code> + */ + public java.lang.String getAttributes() { + java.lang.Object ref = attributes_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + attributes_ = s; + } + return s; + } + } + /** + * <code>optional string attributes = 18;</code> + */ + public com.google.protobuf.ByteString + getAttributesBytes() { + java.lang.Object ref = attributes_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + attributes_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int AUTHOR_LOGIN_FIELD_NUMBER = 19; + private java.lang.Object authorLogin_; + /** + * <code>optional string author_login = 19;</code> + */ + public boolean hasAuthorLogin() { + return ((bitField0_ & 0x00020000) == 0x00020000); + } + /** + * <code>optional string author_login = 19;</code> + */ + public java.lang.String getAuthorLogin() { + java.lang.Object ref = authorLogin_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + authorLogin_ = s; + } + return s; + } + } + /** + * <code>optional string author_login = 19;</code> + */ + public com.google.protobuf.ByteString + getAuthorLoginBytes() { + java.lang.Object ref = authorLogin_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + authorLogin_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int CREATION_DATE_FIELD_NUMBER = 20; + private long creationDate_; + /** + * <code>optional int64 creation_date = 20;</code> + */ + public boolean hasCreationDate() { + return ((bitField0_ & 0x00040000) == 0x00040000); + } + /** + * <code>optional int64 creation_date = 20;</code> + */ + public long getCreationDate() { + return creationDate_; + } + + public static final int CLOSE_DATE_FIELD_NUMBER = 21; + private long closeDate_; + /** + * <code>optional int64 close_date = 21;</code> + */ + public boolean hasCloseDate() { + return ((bitField0_ & 0x00080000) == 0x00080000); + } + /** + * <code>optional int64 close_date = 21;</code> + */ + public long getCloseDate() { + return closeDate_; + } + + public static final int UPDATE_DATE_FIELD_NUMBER = 22; + private long updateDate_; + /** + * <code>optional int64 update_date = 22;</code> + */ + public boolean hasUpdateDate() { + return ((bitField0_ & 0x00100000) == 0x00100000); + } + /** + * <code>optional int64 update_date = 22;</code> + */ + public long getUpdateDate() { + return updateDate_; + } + + public static final int SELECTED_AT_FIELD_NUMBER = 23; + private long selectedAt_; + /** + * <code>optional int64 selected_at = 23;</code> + */ + public boolean hasSelectedAt() { + return ((bitField0_ & 0x00200000) == 0x00200000); + } + /** + * <code>optional int64 selected_at = 23;</code> + */ + public long getSelectedAt() { + return selectedAt_; + } + + public static final int DIFF_FIELDS_FIELD_NUMBER = 24; + private java.lang.Object diffFields_; + /** + * <code>optional string diff_fields = 24;</code> + */ + public boolean hasDiffFields() { + return ((bitField0_ & 0x00400000) == 0x00400000); + } + /** + * <code>optional string diff_fields = 24;</code> + */ + public java.lang.String getDiffFields() { + java.lang.Object ref = diffFields_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + diffFields_ = s; + } + return s; + } + } + /** + * <code>optional string diff_fields = 24;</code> + */ + public com.google.protobuf.ByteString + getDiffFieldsBytes() { + java.lang.Object ref = diffFields_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + diffFields_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int IS_CHANGED_FIELD_NUMBER = 25; + private boolean isChanged_; + /** + * <code>optional bool is_changed = 25;</code> + */ + public boolean hasIsChanged() { + return ((bitField0_ & 0x00800000) == 0x00800000); + } + /** + * <code>optional bool is_changed = 25;</code> + */ + public boolean getIsChanged() { + return isChanged_; + } + + public static final int MUST_SEND_NOTIFICATION_FIELD_NUMBER = 26; + private boolean mustSendNotification_; + /** + * <code>optional bool must_send_notification = 26;</code> + */ + public boolean hasMustSendNotification() { + return ((bitField0_ & 0x01000000) == 0x01000000); + } + /** + * <code>optional bool must_send_notification = 26;</code> + */ + public boolean getMustSendNotification() { + return mustSendNotification_; + } + + private void initFields() { + ruleRepository_ = ""; + ruleKey_ = ""; + line_ = 0; + msg_ = ""; + severity_ = org.sonar.batch.protocol.Constants.Severity.INFO; + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + effortToFix_ = 0D; + isNew_ = false; + uuid_ = ""; + debtInMinutes_ = 0L; + resolution_ = ""; + status_ = ""; + checksum_ = ""; + manualSeverity_ = false; + reporter_ = ""; + assignee_ = ""; + actionPlanKey_ = ""; + attributes_ = ""; + authorLogin_ = ""; + creationDate_ = 0L; + closeDate_ = 0L; + updateDate_ = 0L; + selectedAt_ = 0L; + diffFields_ = ""; + isChanged_ = false; + mustSendNotification_ = false; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getRuleRepositoryBytes()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getRuleKeyBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeInt32(3, line_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeBytes(4, getMsgBytes()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeEnum(5, severity_.getNumber()); + } + for (int i = 0; i < tags_.size(); i++) { + output.writeBytes(6, tags_.getByteString(i)); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeDouble(7, effortToFix_); + } + if (((bitField0_ & 0x00000040) == 0x00000040)) { + output.writeBool(8, isNew_); + } + if (((bitField0_ & 0x00000080) == 0x00000080)) { + output.writeBytes(9, getUuidBytes()); + } + if (((bitField0_ & 0x00000100) == 0x00000100)) { + output.writeInt64(10, debtInMinutes_); + } + if (((bitField0_ & 0x00000200) == 0x00000200)) { + output.writeBytes(11, getResolutionBytes()); + } + if (((bitField0_ & 0x00000400) == 0x00000400)) { + output.writeBytes(12, getStatusBytes()); + } + if (((bitField0_ & 0x00000800) == 0x00000800)) { + output.writeBytes(13, getChecksumBytes()); + } + if (((bitField0_ & 0x00001000) == 0x00001000)) { + output.writeBool(14, manualSeverity_); + } + if (((bitField0_ & 0x00002000) == 0x00002000)) { + output.writeBytes(15, getReporterBytes()); + } + if (((bitField0_ & 0x00004000) == 0x00004000)) { + output.writeBytes(16, getAssigneeBytes()); + } + if (((bitField0_ & 0x00008000) == 0x00008000)) { + output.writeBytes(17, getActionPlanKeyBytes()); + } + if (((bitField0_ & 0x00010000) == 0x00010000)) { + output.writeBytes(18, getAttributesBytes()); + } + if (((bitField0_ & 0x00020000) == 0x00020000)) { + output.writeBytes(19, getAuthorLoginBytes()); + } + if (((bitField0_ & 0x00040000) == 0x00040000)) { + output.writeInt64(20, creationDate_); + } + if (((bitField0_ & 0x00080000) == 0x00080000)) { + output.writeInt64(21, closeDate_); + } + if (((bitField0_ & 0x00100000) == 0x00100000)) { + output.writeInt64(22, updateDate_); + } + if (((bitField0_ & 0x00200000) == 0x00200000)) { + output.writeInt64(23, selectedAt_); + } + if (((bitField0_ & 0x00400000) == 0x00400000)) { + output.writeBytes(24, getDiffFieldsBytes()); + } + if (((bitField0_ & 0x00800000) == 0x00800000)) { + output.writeBool(25, isChanged_); + } + if (((bitField0_ & 0x01000000) == 0x01000000)) { + output.writeBool(26, mustSendNotification_); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, getRuleRepositoryBytes()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(2, getRuleKeyBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, line_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(4, getMsgBytes()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(5, severity_.getNumber()); + } + { + int dataSize = 0; + for (int i = 0; i < tags_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeBytesSizeNoTag(tags_.getByteString(i)); + } + size += dataSize; + size += 1 * getTagsList().size(); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(7, effortToFix_); + } + if (((bitField0_ & 0x00000040) == 0x00000040)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(8, isNew_); + } + if (((bitField0_ & 0x00000080) == 0x00000080)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(9, getUuidBytes()); + } + if (((bitField0_ & 0x00000100) == 0x00000100)) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(10, debtInMinutes_); + } + if (((bitField0_ & 0x00000200) == 0x00000200)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(11, getResolutionBytes()); + } + if (((bitField0_ & 0x00000400) == 0x00000400)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(12, getStatusBytes()); + } + if (((bitField0_ & 0x00000800) == 0x00000800)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(13, getChecksumBytes()); + } + if (((bitField0_ & 0x00001000) == 0x00001000)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(14, manualSeverity_); + } + if (((bitField0_ & 0x00002000) == 0x00002000)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(15, getReporterBytes()); + } + if (((bitField0_ & 0x00004000) == 0x00004000)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(16, getAssigneeBytes()); + } + if (((bitField0_ & 0x00008000) == 0x00008000)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(17, getActionPlanKeyBytes()); + } + if (((bitField0_ & 0x00010000) == 0x00010000)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(18, getAttributesBytes()); + } + if (((bitField0_ & 0x00020000) == 0x00020000)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(19, getAuthorLoginBytes()); + } + if (((bitField0_ & 0x00040000) == 0x00040000)) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(20, creationDate_); + } + if (((bitField0_ & 0x00080000) == 0x00080000)) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(21, closeDate_); + } + if (((bitField0_ & 0x00100000) == 0x00100000)) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(22, updateDate_); + } + if (((bitField0_ & 0x00200000) == 0x00200000)) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(23, selectedAt_); + } + if (((bitField0_ & 0x00400000) == 0x00400000)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(24, getDiffFieldsBytes()); + } + if (((bitField0_ & 0x00800000) == 0x00800000)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(25, isChanged_); + } + if (((bitField0_ & 0x01000000) == 0x01000000)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(26, mustSendNotification_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Issue parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.sonar.batch.protocol.output.BatchReport.Issue parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.sonar.batch.protocol.output.BatchReport.Issue parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.sonar.batch.protocol.output.BatchReport.Issue prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code Issue} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder<Builder> implements + // @@protoc_insertion_point(builder_implements:Issue) + org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Issue_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Issue_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.sonar.batch.protocol.output.BatchReport.Issue.class, org.sonar.batch.protocol.output.BatchReport.Issue.Builder.class); + } + + // Construct using org.sonar.batch.protocol.output.BatchReport.Issue.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + ruleRepository_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + ruleKey_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + line_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + msg_ = ""; + bitField0_ = (bitField0_ & ~0x00000008); + severity_ = org.sonar.batch.protocol.Constants.Severity.INFO; + bitField0_ = (bitField0_ & ~0x00000010); + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000020); + effortToFix_ = 0D; + bitField0_ = (bitField0_ & ~0x00000040); + isNew_ = false; + bitField0_ = (bitField0_ & ~0x00000080); + uuid_ = ""; + bitField0_ = (bitField0_ & ~0x00000100); + debtInMinutes_ = 0L; + bitField0_ = (bitField0_ & ~0x00000200); + resolution_ = ""; + bitField0_ = (bitField0_ & ~0x00000400); + status_ = ""; + bitField0_ = (bitField0_ & ~0x00000800); + checksum_ = ""; + bitField0_ = (bitField0_ & ~0x00001000); + manualSeverity_ = false; + bitField0_ = (bitField0_ & ~0x00002000); + reporter_ = ""; + bitField0_ = (bitField0_ & ~0x00004000); + assignee_ = ""; + bitField0_ = (bitField0_ & ~0x00008000); + actionPlanKey_ = ""; + bitField0_ = (bitField0_ & ~0x00010000); + attributes_ = ""; + bitField0_ = (bitField0_ & ~0x00020000); + authorLogin_ = ""; + bitField0_ = (bitField0_ & ~0x00040000); + creationDate_ = 0L; + bitField0_ = (bitField0_ & ~0x00080000); + closeDate_ = 0L; + bitField0_ = (bitField0_ & ~0x00100000); + updateDate_ = 0L; + bitField0_ = (bitField0_ & ~0x00200000); + selectedAt_ = 0L; + bitField0_ = (bitField0_ & ~0x00400000); + diffFields_ = ""; + bitField0_ = (bitField0_ & ~0x00800000); + isChanged_ = false; + bitField0_ = (bitField0_ & ~0x01000000); + mustSendNotification_ = false; + bitField0_ = (bitField0_ & ~0x02000000); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Issue_descriptor; + } + + public org.sonar.batch.protocol.output.BatchReport.Issue getDefaultInstanceForType() { + return org.sonar.batch.protocol.output.BatchReport.Issue.getDefaultInstance(); + } + + public org.sonar.batch.protocol.output.BatchReport.Issue build() { + org.sonar.batch.protocol.output.BatchReport.Issue result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.sonar.batch.protocol.output.BatchReport.Issue buildPartial() { + org.sonar.batch.protocol.output.BatchReport.Issue result = new org.sonar.batch.protocol.output.BatchReport.Issue(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.ruleRepository_ = ruleRepository_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.ruleKey_ = ruleKey_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.line_ = line_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.msg_ = msg_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.severity_ = severity_; + if (((bitField0_ & 0x00000020) == 0x00000020)) { + tags_ = tags_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000020); + } + result.tags_ = tags_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000020; + } + result.effortToFix_ = effortToFix_; + if (((from_bitField0_ & 0x00000080) == 0x00000080)) { + to_bitField0_ |= 0x00000040; + } + result.isNew_ = isNew_; + if (((from_bitField0_ & 0x00000100) == 0x00000100)) { + to_bitField0_ |= 0x00000080; + } + result.uuid_ = uuid_; + if (((from_bitField0_ & 0x00000200) == 0x00000200)) { + to_bitField0_ |= 0x00000100; + } + result.debtInMinutes_ = debtInMinutes_; + if (((from_bitField0_ & 0x00000400) == 0x00000400)) { + to_bitField0_ |= 0x00000200; + } + result.resolution_ = resolution_; + if (((from_bitField0_ & 0x00000800) == 0x00000800)) { + to_bitField0_ |= 0x00000400; + } + result.status_ = status_; + if (((from_bitField0_ & 0x00001000) == 0x00001000)) { + to_bitField0_ |= 0x00000800; + } + result.checksum_ = checksum_; + if (((from_bitField0_ & 0x00002000) == 0x00002000)) { + to_bitField0_ |= 0x00001000; + } + result.manualSeverity_ = manualSeverity_; + if (((from_bitField0_ & 0x00004000) == 0x00004000)) { + to_bitField0_ |= 0x00002000; + } + result.reporter_ = reporter_; + if (((from_bitField0_ & 0x00008000) == 0x00008000)) { + to_bitField0_ |= 0x00004000; + } + result.assignee_ = assignee_; + if (((from_bitField0_ & 0x00010000) == 0x00010000)) { + to_bitField0_ |= 0x00008000; + } + result.actionPlanKey_ = actionPlanKey_; + if (((from_bitField0_ & 0x00020000) == 0x00020000)) { + to_bitField0_ |= 0x00010000; + } + result.attributes_ = attributes_; + if (((from_bitField0_ & 0x00040000) == 0x00040000)) { + to_bitField0_ |= 0x00020000; + } + result.authorLogin_ = authorLogin_; + if (((from_bitField0_ & 0x00080000) == 0x00080000)) { + to_bitField0_ |= 0x00040000; + } + result.creationDate_ = creationDate_; + if (((from_bitField0_ & 0x00100000) == 0x00100000)) { + to_bitField0_ |= 0x00080000; + } + result.closeDate_ = closeDate_; + if (((from_bitField0_ & 0x00200000) == 0x00200000)) { + to_bitField0_ |= 0x00100000; + } + result.updateDate_ = updateDate_; + if (((from_bitField0_ & 0x00400000) == 0x00400000)) { + to_bitField0_ |= 0x00200000; + } + result.selectedAt_ = selectedAt_; + if (((from_bitField0_ & 0x00800000) == 0x00800000)) { + to_bitField0_ |= 0x00400000; + } + result.diffFields_ = diffFields_; + if (((from_bitField0_ & 0x01000000) == 0x01000000)) { + to_bitField0_ |= 0x00800000; + } + result.isChanged_ = isChanged_; + if (((from_bitField0_ & 0x02000000) == 0x02000000)) { + to_bitField0_ |= 0x01000000; + } + result.mustSendNotification_ = mustSendNotification_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.sonar.batch.protocol.output.BatchReport.Issue) { + return mergeFrom((org.sonar.batch.protocol.output.BatchReport.Issue)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.sonar.batch.protocol.output.BatchReport.Issue other) { + if (other == org.sonar.batch.protocol.output.BatchReport.Issue.getDefaultInstance()) return this; + if (other.hasRuleRepository()) { + bitField0_ |= 0x00000001; + ruleRepository_ = other.ruleRepository_; + onChanged(); + } + if (other.hasRuleKey()) { + bitField0_ |= 0x00000002; + ruleKey_ = other.ruleKey_; + onChanged(); + } + if (other.hasLine()) { + setLine(other.getLine()); + } + if (other.hasMsg()) { + bitField0_ |= 0x00000008; + msg_ = other.msg_; + onChanged(); + } + if (other.hasSeverity()) { + setSeverity(other.getSeverity()); + } + if (!other.tags_.isEmpty()) { + if (tags_.isEmpty()) { + tags_ = other.tags_; + bitField0_ = (bitField0_ & ~0x00000020); + } else { + ensureTagsIsMutable(); + tags_.addAll(other.tags_); + } + onChanged(); + } + if (other.hasEffortToFix()) { + setEffortToFix(other.getEffortToFix()); + } + if (other.hasIsNew()) { + setIsNew(other.getIsNew()); + } + if (other.hasUuid()) { + bitField0_ |= 0x00000100; + uuid_ = other.uuid_; + onChanged(); + } + if (other.hasDebtInMinutes()) { + setDebtInMinutes(other.getDebtInMinutes()); + } + if (other.hasResolution()) { + bitField0_ |= 0x00000400; + resolution_ = other.resolution_; + onChanged(); + } + if (other.hasStatus()) { + bitField0_ |= 0x00000800; + status_ = other.status_; + onChanged(); + } + if (other.hasChecksum()) { + bitField0_ |= 0x00001000; + checksum_ = other.checksum_; + onChanged(); + } + if (other.hasManualSeverity()) { + setManualSeverity(other.getManualSeverity()); + } + if (other.hasReporter()) { + bitField0_ |= 0x00004000; + reporter_ = other.reporter_; + onChanged(); + } + if (other.hasAssignee()) { + bitField0_ |= 0x00008000; + assignee_ = other.assignee_; + onChanged(); + } + if (other.hasActionPlanKey()) { + bitField0_ |= 0x00010000; + actionPlanKey_ = other.actionPlanKey_; + onChanged(); + } + if (other.hasAttributes()) { + bitField0_ |= 0x00020000; + attributes_ = other.attributes_; + onChanged(); + } + if (other.hasAuthorLogin()) { + bitField0_ |= 0x00040000; + authorLogin_ = other.authorLogin_; + onChanged(); + } + if (other.hasCreationDate()) { + setCreationDate(other.getCreationDate()); + } + if (other.hasCloseDate()) { + setCloseDate(other.getCloseDate()); + } + if (other.hasUpdateDate()) { + setUpdateDate(other.getUpdateDate()); + } + if (other.hasSelectedAt()) { + setSelectedAt(other.getSelectedAt()); + } + if (other.hasDiffFields()) { + bitField0_ |= 0x00800000; + diffFields_ = other.diffFields_; + onChanged(); + } + if (other.hasIsChanged()) { + setIsChanged(other.getIsChanged()); + } + if (other.hasMustSendNotification()) { + setMustSendNotification(other.getMustSendNotification()); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.sonar.batch.protocol.output.BatchReport.Issue parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.sonar.batch.protocol.output.BatchReport.Issue) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object ruleRepository_ = ""; + /** + * <code>optional string rule_repository = 1;</code> + */ + public boolean hasRuleRepository() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * <code>optional string rule_repository = 1;</code> + */ + public java.lang.String getRuleRepository() { + java.lang.Object ref = ruleRepository_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + ruleRepository_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string rule_repository = 1;</code> + */ + public com.google.protobuf.ByteString + getRuleRepositoryBytes() { + java.lang.Object ref = ruleRepository_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ruleRepository_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string rule_repository = 1;</code> + */ + public Builder setRuleRepository( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + ruleRepository_ = value; + onChanged(); + return this; + } + /** + * <code>optional string rule_repository = 1;</code> + */ + public Builder clearRuleRepository() { + bitField0_ = (bitField0_ & ~0x00000001); + ruleRepository_ = getDefaultInstance().getRuleRepository(); + onChanged(); + return this; + } + /** + * <code>optional string rule_repository = 1;</code> + */ + public Builder setRuleRepositoryBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + ruleRepository_ = value; + onChanged(); + return this; + } + + private java.lang.Object ruleKey_ = ""; + /** + * <code>optional string rule_key = 2;</code> + */ + public boolean hasRuleKey() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * <code>optional string rule_key = 2;</code> + */ + public java.lang.String getRuleKey() { + java.lang.Object ref = ruleKey_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + ruleKey_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string rule_key = 2;</code> + */ + public com.google.protobuf.ByteString + getRuleKeyBytes() { + java.lang.Object ref = ruleKey_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ruleKey_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string rule_key = 2;</code> + */ + public Builder setRuleKey( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + ruleKey_ = value; + onChanged(); + return this; + } + /** + * <code>optional string rule_key = 2;</code> + */ + public Builder clearRuleKey() { + bitField0_ = (bitField0_ & ~0x00000002); + ruleKey_ = getDefaultInstance().getRuleKey(); + onChanged(); + return this; + } + /** + * <code>optional string rule_key = 2;</code> + */ + public Builder setRuleKeyBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + ruleKey_ = value; + onChanged(); + return this; + } + + private int line_ ; + /** + * <code>optional int32 line = 3;</code> + */ + public boolean hasLine() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * <code>optional int32 line = 3;</code> + */ + public int getLine() { + return line_; + } + /** + * <code>optional int32 line = 3;</code> + */ + public Builder setLine(int value) { + bitField0_ |= 0x00000004; + line_ = value; + onChanged(); + return this; + } + /** + * <code>optional int32 line = 3;</code> + */ + public Builder clearLine() { + bitField0_ = (bitField0_ & ~0x00000004); + line_ = 0; + onChanged(); + return this; + } + + private java.lang.Object msg_ = ""; + /** + * <code>optional string msg = 4;</code> + */ + public boolean hasMsg() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * <code>optional string msg = 4;</code> + */ + public java.lang.String getMsg() { + java.lang.Object ref = msg_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + msg_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string msg = 4;</code> + */ + public com.google.protobuf.ByteString + getMsgBytes() { + java.lang.Object ref = msg_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + msg_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string msg = 4;</code> + */ + public Builder setMsg( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; + msg_ = value; + onChanged(); + return this; + } + /** + * <code>optional string msg = 4;</code> + */ + public Builder clearMsg() { + bitField0_ = (bitField0_ & ~0x00000008); + msg_ = getDefaultInstance().getMsg(); + onChanged(); + return this; + } + /** + * <code>optional string msg = 4;</code> + */ + public Builder setMsgBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; + msg_ = value; + onChanged(); + return this; + } + + private org.sonar.batch.protocol.Constants.Severity severity_ = org.sonar.batch.protocol.Constants.Severity.INFO; + /** + * <code>optional .Severity severity = 5;</code> + */ + public boolean hasSeverity() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * <code>optional .Severity severity = 5;</code> + */ + public org.sonar.batch.protocol.Constants.Severity getSeverity() { + return severity_; + } + /** + * <code>optional .Severity severity = 5;</code> + */ + public Builder setSeverity(org.sonar.batch.protocol.Constants.Severity value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000010; + severity_ = value; + onChanged(); + return this; + } + /** + * <code>optional .Severity severity = 5;</code> + */ + public Builder clearSeverity() { + bitField0_ = (bitField0_ & ~0x00000010); + severity_ = org.sonar.batch.protocol.Constants.Severity.INFO; + onChanged(); + return this; + } + + private com.google.protobuf.LazyStringList tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureTagsIsMutable() { + if (!((bitField0_ & 0x00000020) == 0x00000020)) { + tags_ = new com.google.protobuf.LazyStringArrayList(tags_); + bitField0_ |= 0x00000020; + } + } + /** + * <code>repeated string tags = 6;</code> + */ + public com.google.protobuf.ProtocolStringList + getTagsList() { + return tags_.getUnmodifiableView(); + } + /** + * <code>repeated string tags = 6;</code> + */ + public int getTagsCount() { + return tags_.size(); + } + /** + * <code>repeated string tags = 6;</code> + */ + public java.lang.String getTags(int index) { + return tags_.get(index); + } + /** + * <code>repeated string tags = 6;</code> + */ + public com.google.protobuf.ByteString + getTagsBytes(int index) { + return tags_.getByteString(index); + } + /** + * <code>repeated string tags = 6;</code> + */ + public Builder setTags( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagsIsMutable(); + tags_.set(index, value); + onChanged(); + return this; + } + /** + * <code>repeated string tags = 6;</code> + */ + public Builder addTags( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagsIsMutable(); + tags_.add(value); + onChanged(); + return this; + } + /** + * <code>repeated string tags = 6;</code> + */ + public Builder addAllTags( + java.lang.Iterable<java.lang.String> values) { + ensureTagsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, tags_); + onChanged(); + return this; + } + /** + * <code>repeated string tags = 6;</code> + */ + public Builder clearTags() { + tags_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000020); + onChanged(); + return this; + } + /** + * <code>repeated string tags = 6;</code> + */ + public Builder addTagsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagsIsMutable(); + tags_.add(value); + onChanged(); + return this; + } + + private double effortToFix_ ; + /** + * <code>optional double effort_to_fix = 7;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + public boolean hasEffortToFix() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * <code>optional double effort_to_fix = 7;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + public double getEffortToFix() { + return effortToFix_; + } + /** + * <code>optional double effort_to_fix = 7;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + public Builder setEffortToFix(double value) { + bitField0_ |= 0x00000040; + effortToFix_ = value; + onChanged(); + return this; + } + /** + * <code>optional double effort_to_fix = 7;</code> + * + * <pre> + * temporary fields during development of computation stack + * </pre> + */ + public Builder clearEffortToFix() { + bitField0_ = (bitField0_ & ~0x00000040); + effortToFix_ = 0D; + onChanged(); + return this; + } + + private boolean isNew_ ; + /** + * <code>optional bool is_new = 8;</code> + */ + public boolean hasIsNew() { + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * <code>optional bool is_new = 8;</code> + */ + public boolean getIsNew() { + return isNew_; + } + /** + * <code>optional bool is_new = 8;</code> + */ + public Builder setIsNew(boolean value) { + bitField0_ |= 0x00000080; + isNew_ = value; + onChanged(); + return this; + } + /** + * <code>optional bool is_new = 8;</code> + */ + public Builder clearIsNew() { + bitField0_ = (bitField0_ & ~0x00000080); + isNew_ = false; + onChanged(); + return this; + } + + private java.lang.Object uuid_ = ""; + /** + * <code>optional string uuid = 9;</code> + */ + public boolean hasUuid() { + return ((bitField0_ & 0x00000100) == 0x00000100); + } + /** + * <code>optional string uuid = 9;</code> + */ + public java.lang.String getUuid() { + java.lang.Object ref = uuid_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + uuid_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string uuid = 9;</code> + */ + public com.google.protobuf.ByteString + getUuidBytes() { + java.lang.Object ref = uuid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + uuid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string uuid = 9;</code> + */ + public Builder setUuid( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000100; + uuid_ = value; + onChanged(); + return this; + } + /** + * <code>optional string uuid = 9;</code> + */ + public Builder clearUuid() { + bitField0_ = (bitField0_ & ~0x00000100); + uuid_ = getDefaultInstance().getUuid(); + onChanged(); + return this; + } + /** + * <code>optional string uuid = 9;</code> + */ + public Builder setUuidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000100; + uuid_ = value; + onChanged(); + return this; + } + + private long debtInMinutes_ ; + /** + * <code>optional int64 debt_in_minutes = 10;</code> + */ + public boolean hasDebtInMinutes() { + return ((bitField0_ & 0x00000200) == 0x00000200); + } + /** + * <code>optional int64 debt_in_minutes = 10;</code> + */ + public long getDebtInMinutes() { + return debtInMinutes_; + } + /** + * <code>optional int64 debt_in_minutes = 10;</code> + */ + public Builder setDebtInMinutes(long value) { + bitField0_ |= 0x00000200; + debtInMinutes_ = value; + onChanged(); + return this; + } + /** + * <code>optional int64 debt_in_minutes = 10;</code> + */ + public Builder clearDebtInMinutes() { + bitField0_ = (bitField0_ & ~0x00000200); + debtInMinutes_ = 0L; + onChanged(); + return this; + } + + private java.lang.Object resolution_ = ""; + /** + * <code>optional string resolution = 11;</code> + */ + public boolean hasResolution() { + return ((bitField0_ & 0x00000400) == 0x00000400); + } + /** + * <code>optional string resolution = 11;</code> + */ + public java.lang.String getResolution() { + java.lang.Object ref = resolution_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + resolution_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string resolution = 11;</code> + */ + public com.google.protobuf.ByteString + getResolutionBytes() { + java.lang.Object ref = resolution_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + resolution_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string resolution = 11;</code> + */ + public Builder setResolution( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000400; + resolution_ = value; + onChanged(); + return this; + } + /** + * <code>optional string resolution = 11;</code> + */ + public Builder clearResolution() { + bitField0_ = (bitField0_ & ~0x00000400); + resolution_ = getDefaultInstance().getResolution(); + onChanged(); + return this; + } + /** + * <code>optional string resolution = 11;</code> + */ + public Builder setResolutionBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000400; + resolution_ = value; + onChanged(); + return this; + } + + private java.lang.Object status_ = ""; + /** + * <code>optional string status = 12;</code> + */ + public boolean hasStatus() { + return ((bitField0_ & 0x00000800) == 0x00000800); + } + /** + * <code>optional string status = 12;</code> + */ + public java.lang.String getStatus() { + java.lang.Object ref = status_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + status_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string status = 12;</code> + */ + public com.google.protobuf.ByteString + getStatusBytes() { + java.lang.Object ref = status_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + status_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string status = 12;</code> + */ + public Builder setStatus( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000800; + status_ = value; + onChanged(); + return this; + } + /** + * <code>optional string status = 12;</code> + */ + public Builder clearStatus() { + bitField0_ = (bitField0_ & ~0x00000800); + status_ = getDefaultInstance().getStatus(); + onChanged(); + return this; + } + /** + * <code>optional string status = 12;</code> + */ + public Builder setStatusBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000800; + status_ = value; + onChanged(); + return this; + } + + private java.lang.Object checksum_ = ""; + /** + * <code>optional string checksum = 13;</code> + */ + public boolean hasChecksum() { + return ((bitField0_ & 0x00001000) == 0x00001000); + } + /** + * <code>optional string checksum = 13;</code> + */ + public java.lang.String getChecksum() { + java.lang.Object ref = checksum_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + checksum_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string checksum = 13;</code> + */ + public com.google.protobuf.ByteString + getChecksumBytes() { + java.lang.Object ref = checksum_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + checksum_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string checksum = 13;</code> + */ + public Builder setChecksum( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00001000; + checksum_ = value; + onChanged(); + return this; + } + /** + * <code>optional string checksum = 13;</code> + */ + public Builder clearChecksum() { + bitField0_ = (bitField0_ & ~0x00001000); + checksum_ = getDefaultInstance().getChecksum(); + onChanged(); + return this; + } + /** + * <code>optional string checksum = 13;</code> + */ + public Builder setChecksumBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00001000; + checksum_ = value; + onChanged(); + return this; + } + + private boolean manualSeverity_ ; + /** + * <code>optional bool manual_severity = 14;</code> + */ + public boolean hasManualSeverity() { + return ((bitField0_ & 0x00002000) == 0x00002000); + } + /** + * <code>optional bool manual_severity = 14;</code> + */ + public boolean getManualSeverity() { + return manualSeverity_; + } + /** + * <code>optional bool manual_severity = 14;</code> + */ + public Builder setManualSeverity(boolean value) { + bitField0_ |= 0x00002000; + manualSeverity_ = value; + onChanged(); + return this; + } + /** + * <code>optional bool manual_severity = 14;</code> + */ + public Builder clearManualSeverity() { + bitField0_ = (bitField0_ & ~0x00002000); + manualSeverity_ = false; + onChanged(); + return this; + } + + private java.lang.Object reporter_ = ""; + /** + * <code>optional string reporter = 15;</code> + */ + public boolean hasReporter() { + return ((bitField0_ & 0x00004000) == 0x00004000); + } + /** + * <code>optional string reporter = 15;</code> + */ + public java.lang.String getReporter() { + java.lang.Object ref = reporter_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + reporter_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string reporter = 15;</code> + */ + public com.google.protobuf.ByteString + getReporterBytes() { + java.lang.Object ref = reporter_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + reporter_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string reporter = 15;</code> + */ + public Builder setReporter( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00004000; + reporter_ = value; + onChanged(); + return this; + } + /** + * <code>optional string reporter = 15;</code> + */ + public Builder clearReporter() { + bitField0_ = (bitField0_ & ~0x00004000); + reporter_ = getDefaultInstance().getReporter(); + onChanged(); + return this; + } + /** + * <code>optional string reporter = 15;</code> + */ + public Builder setReporterBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00004000; + reporter_ = value; + onChanged(); + return this; + } + + private java.lang.Object assignee_ = ""; + /** + * <code>optional string assignee = 16;</code> + */ + public boolean hasAssignee() { + return ((bitField0_ & 0x00008000) == 0x00008000); + } + /** + * <code>optional string assignee = 16;</code> + */ + public java.lang.String getAssignee() { + java.lang.Object ref = assignee_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + assignee_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string assignee = 16;</code> + */ + public com.google.protobuf.ByteString + getAssigneeBytes() { + java.lang.Object ref = assignee_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + assignee_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string assignee = 16;</code> + */ + public Builder setAssignee( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00008000; + assignee_ = value; + onChanged(); + return this; + } + /** + * <code>optional string assignee = 16;</code> + */ + public Builder clearAssignee() { + bitField0_ = (bitField0_ & ~0x00008000); + assignee_ = getDefaultInstance().getAssignee(); + onChanged(); + return this; + } + /** + * <code>optional string assignee = 16;</code> + */ + public Builder setAssigneeBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00008000; + assignee_ = value; + onChanged(); + return this; + } + + private java.lang.Object actionPlanKey_ = ""; + /** + * <code>optional string action_plan_key = 17;</code> + */ + public boolean hasActionPlanKey() { + return ((bitField0_ & 0x00010000) == 0x00010000); + } + /** + * <code>optional string action_plan_key = 17;</code> + */ + public java.lang.String getActionPlanKey() { + java.lang.Object ref = actionPlanKey_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + actionPlanKey_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string action_plan_key = 17;</code> + */ + public com.google.protobuf.ByteString + getActionPlanKeyBytes() { + java.lang.Object ref = actionPlanKey_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + actionPlanKey_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string action_plan_key = 17;</code> + */ + public Builder setActionPlanKey( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00010000; + actionPlanKey_ = value; + onChanged(); + return this; + } + /** + * <code>optional string action_plan_key = 17;</code> + */ + public Builder clearActionPlanKey() { + bitField0_ = (bitField0_ & ~0x00010000); + actionPlanKey_ = getDefaultInstance().getActionPlanKey(); + onChanged(); + return this; + } + /** + * <code>optional string action_plan_key = 17;</code> + */ + public Builder setActionPlanKeyBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00010000; + actionPlanKey_ = value; + onChanged(); + return this; + } + + private java.lang.Object attributes_ = ""; + /** + * <code>optional string attributes = 18;</code> + */ + public boolean hasAttributes() { + return ((bitField0_ & 0x00020000) == 0x00020000); + } + /** + * <code>optional string attributes = 18;</code> + */ + public java.lang.String getAttributes() { + java.lang.Object ref = attributes_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + attributes_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string attributes = 18;</code> + */ + public com.google.protobuf.ByteString + getAttributesBytes() { + java.lang.Object ref = attributes_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + attributes_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string attributes = 18;</code> + */ + public Builder setAttributes( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00020000; + attributes_ = value; + onChanged(); + return this; + } + /** + * <code>optional string attributes = 18;</code> + */ + public Builder clearAttributes() { + bitField0_ = (bitField0_ & ~0x00020000); + attributes_ = getDefaultInstance().getAttributes(); + onChanged(); + return this; + } + /** + * <code>optional string attributes = 18;</code> + */ + public Builder setAttributesBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00020000; + attributes_ = value; + onChanged(); + return this; + } + + private java.lang.Object authorLogin_ = ""; + /** + * <code>optional string author_login = 19;</code> + */ + public boolean hasAuthorLogin() { + return ((bitField0_ & 0x00040000) == 0x00040000); + } + /** + * <code>optional string author_login = 19;</code> + */ + public java.lang.String getAuthorLogin() { + java.lang.Object ref = authorLogin_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + authorLogin_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string author_login = 19;</code> + */ + public com.google.protobuf.ByteString + getAuthorLoginBytes() { + java.lang.Object ref = authorLogin_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + authorLogin_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string author_login = 19;</code> + */ + public Builder setAuthorLogin( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00040000; + authorLogin_ = value; + onChanged(); + return this; + } + /** + * <code>optional string author_login = 19;</code> + */ + public Builder clearAuthorLogin() { + bitField0_ = (bitField0_ & ~0x00040000); + authorLogin_ = getDefaultInstance().getAuthorLogin(); + onChanged(); + return this; + } + /** + * <code>optional string author_login = 19;</code> + */ + public Builder setAuthorLoginBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00040000; + authorLogin_ = value; + onChanged(); + return this; + } + + private long creationDate_ ; + /** + * <code>optional int64 creation_date = 20;</code> + */ + public boolean hasCreationDate() { + return ((bitField0_ & 0x00080000) == 0x00080000); + } + /** + * <code>optional int64 creation_date = 20;</code> + */ + public long getCreationDate() { + return creationDate_; + } + /** + * <code>optional int64 creation_date = 20;</code> + */ + public Builder setCreationDate(long value) { + bitField0_ |= 0x00080000; + creationDate_ = value; + onChanged(); + return this; + } + /** + * <code>optional int64 creation_date = 20;</code> + */ + public Builder clearCreationDate() { + bitField0_ = (bitField0_ & ~0x00080000); + creationDate_ = 0L; + onChanged(); + return this; + } + + private long closeDate_ ; + /** + * <code>optional int64 close_date = 21;</code> + */ + public boolean hasCloseDate() { + return ((bitField0_ & 0x00100000) == 0x00100000); + } + /** + * <code>optional int64 close_date = 21;</code> + */ + public long getCloseDate() { + return closeDate_; + } + /** + * <code>optional int64 close_date = 21;</code> + */ + public Builder setCloseDate(long value) { + bitField0_ |= 0x00100000; + closeDate_ = value; + onChanged(); + return this; + } + /** + * <code>optional int64 close_date = 21;</code> + */ + public Builder clearCloseDate() { + bitField0_ = (bitField0_ & ~0x00100000); + closeDate_ = 0L; + onChanged(); + return this; + } + + private long updateDate_ ; + /** + * <code>optional int64 update_date = 22;</code> + */ + public boolean hasUpdateDate() { + return ((bitField0_ & 0x00200000) == 0x00200000); + } + /** + * <code>optional int64 update_date = 22;</code> + */ + public long getUpdateDate() { + return updateDate_; + } + /** + * <code>optional int64 update_date = 22;</code> + */ + public Builder setUpdateDate(long value) { + bitField0_ |= 0x00200000; + updateDate_ = value; + onChanged(); + return this; + } + /** + * <code>optional int64 update_date = 22;</code> + */ + public Builder clearUpdateDate() { + bitField0_ = (bitField0_ & ~0x00200000); + updateDate_ = 0L; + onChanged(); + return this; + } + + private long selectedAt_ ; + /** + * <code>optional int64 selected_at = 23;</code> + */ + public boolean hasSelectedAt() { + return ((bitField0_ & 0x00400000) == 0x00400000); + } + /** + * <code>optional int64 selected_at = 23;</code> + */ + public long getSelectedAt() { + return selectedAt_; + } + /** + * <code>optional int64 selected_at = 23;</code> + */ + public Builder setSelectedAt(long value) { + bitField0_ |= 0x00400000; + selectedAt_ = value; + onChanged(); + return this; + } + /** + * <code>optional int64 selected_at = 23;</code> + */ + public Builder clearSelectedAt() { + bitField0_ = (bitField0_ & ~0x00400000); + selectedAt_ = 0L; + onChanged(); + return this; + } + + private java.lang.Object diffFields_ = ""; + /** + * <code>optional string diff_fields = 24;</code> + */ + public boolean hasDiffFields() { + return ((bitField0_ & 0x00800000) == 0x00800000); + } + /** + * <code>optional string diff_fields = 24;</code> + */ + public java.lang.String getDiffFields() { + java.lang.Object ref = diffFields_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + diffFields_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string diff_fields = 24;</code> + */ + public com.google.protobuf.ByteString + getDiffFieldsBytes() { + java.lang.Object ref = diffFields_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + diffFields_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string diff_fields = 24;</code> + */ + public Builder setDiffFields( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00800000; + diffFields_ = value; + onChanged(); + return this; + } + /** + * <code>optional string diff_fields = 24;</code> + */ + public Builder clearDiffFields() { + bitField0_ = (bitField0_ & ~0x00800000); + diffFields_ = getDefaultInstance().getDiffFields(); + onChanged(); + return this; + } + /** + * <code>optional string diff_fields = 24;</code> + */ + public Builder setDiffFieldsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00800000; + diffFields_ = value; + onChanged(); + return this; + } + + private boolean isChanged_ ; + /** + * <code>optional bool is_changed = 25;</code> + */ + public boolean hasIsChanged() { + return ((bitField0_ & 0x01000000) == 0x01000000); + } + /** + * <code>optional bool is_changed = 25;</code> + */ + public boolean getIsChanged() { + return isChanged_; + } + /** + * <code>optional bool is_changed = 25;</code> + */ + public Builder setIsChanged(boolean value) { + bitField0_ |= 0x01000000; + isChanged_ = value; + onChanged(); + return this; + } + /** + * <code>optional bool is_changed = 25;</code> + */ + public Builder clearIsChanged() { + bitField0_ = (bitField0_ & ~0x01000000); + isChanged_ = false; + onChanged(); + return this; + } + + private boolean mustSendNotification_ ; + /** + * <code>optional bool must_send_notification = 26;</code> + */ + public boolean hasMustSendNotification() { + return ((bitField0_ & 0x02000000) == 0x02000000); + } + /** + * <code>optional bool must_send_notification = 26;</code> + */ + public boolean getMustSendNotification() { + return mustSendNotification_; + } + /** + * <code>optional bool must_send_notification = 26;</code> + */ + public Builder setMustSendNotification(boolean value) { + bitField0_ |= 0x02000000; + mustSendNotification_ = value; + onChanged(); + return this; + } + /** + * <code>optional bool must_send_notification = 26;</code> + */ + public Builder clearMustSendNotification() { + bitField0_ = (bitField0_ & ~0x02000000); + mustSendNotification_ = false; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:Issue) + } + + static { + defaultInstance = new Issue(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:Issue) + } + + public interface IssuesOrBuilder extends + // @@protoc_insertion_point(interface_extends:Issues) + com.google.protobuf.MessageOrBuilder { + + /** + * <code>optional int32 component_ref = 1;</code> + */ + boolean hasComponentRef(); + /** + * <code>optional int32 component_ref = 1;</code> + */ + int getComponentRef(); + + /** + * <code>repeated .Issue list = 2;</code> + */ + java.util.List<org.sonar.batch.protocol.output.BatchReport.Issue> + getListList(); + /** + * <code>repeated .Issue list = 2;</code> + */ + org.sonar.batch.protocol.output.BatchReport.Issue getList(int index); + /** + * <code>repeated .Issue list = 2;</code> + */ + int getListCount(); + /** + * <code>repeated .Issue list = 2;</code> + */ + java.util.List<? extends org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder> + getListOrBuilderList(); + /** + * <code>repeated .Issue list = 2;</code> + */ + org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder getListOrBuilder( + int index); + } + /** + * Protobuf type {@code Issues} + */ + public static final class Issues extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:Issues) + IssuesOrBuilder { + // Use Issues.newBuilder() to construct. + private Issues(com.google.protobuf.GeneratedMessage.Builder<?> builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private Issues(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final Issues defaultInstance; + public static Issues getDefaultInstance() { + return defaultInstance; + } + + public Issues getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Issues( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + componentRef_ = input.readInt32(); + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + list_ = new java.util.ArrayList<org.sonar.batch.protocol.output.BatchReport.Issue>(); + mutable_bitField0_ |= 0x00000002; + } + list_.add(input.readMessage(org.sonar.batch.protocol.output.BatchReport.Issue.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + list_ = java.util.Collections.unmodifiableList(list_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Issues_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Issues_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.sonar.batch.protocol.output.BatchReport.Issues.class, org.sonar.batch.protocol.output.BatchReport.Issues.Builder.class); + } + + public static com.google.protobuf.Parser<Issues> PARSER = + new com.google.protobuf.AbstractParser<Issues>() { + public Issues parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Issues(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser<Issues> getParserForType() { + return PARSER; + } + + private int bitField0_; + public static final int COMPONENT_REF_FIELD_NUMBER = 1; + private int componentRef_; + /** + * <code>optional int32 component_ref = 1;</code> + */ + public boolean hasComponentRef() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * <code>optional int32 component_ref = 1;</code> + */ + public int getComponentRef() { + return componentRef_; + } + + public static final int LIST_FIELD_NUMBER = 2; + private java.util.List<org.sonar.batch.protocol.output.BatchReport.Issue> list_; + /** + * <code>repeated .Issue list = 2;</code> + */ + public java.util.List<org.sonar.batch.protocol.output.BatchReport.Issue> getListList() { + return list_; + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public java.util.List<? extends org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder> + getListOrBuilderList() { + return list_; + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public int getListCount() { + return list_.size(); + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public org.sonar.batch.protocol.output.BatchReport.Issue getList(int index) { + return list_.get(index); + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder getListOrBuilder( + int index) { + return list_.get(index); + } + + private void initFields() { + componentRef_ = 0; + list_ = java.util.Collections.emptyList(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeInt32(1, componentRef_); + } + for (int i = 0; i < list_.size(); i++) { + output.writeMessage(2, list_.get(i)); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, componentRef_); + } + for (int i = 0; i < list_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, list_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Issues parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.sonar.batch.protocol.output.BatchReport.Issues parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.sonar.batch.protocol.output.BatchReport.Issues parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.sonar.batch.protocol.output.BatchReport.Issues prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code Issues} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder<Builder> implements + // @@protoc_insertion_point(builder_implements:Issues) + org.sonar.batch.protocol.output.BatchReport.IssuesOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Issues_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Issues_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.sonar.batch.protocol.output.BatchReport.Issues.class, org.sonar.batch.protocol.output.BatchReport.Issues.Builder.class); + } + + // Construct using org.sonar.batch.protocol.output.BatchReport.Issues.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getListFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + componentRef_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + if (listBuilder_ == null) { + list_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + } else { + listBuilder_.clear(); + } + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.sonar.batch.protocol.output.BatchReport.internal_static_Issues_descriptor; + } + + public org.sonar.batch.protocol.output.BatchReport.Issues getDefaultInstanceForType() { + return org.sonar.batch.protocol.output.BatchReport.Issues.getDefaultInstance(); + } + + public org.sonar.batch.protocol.output.BatchReport.Issues build() { + org.sonar.batch.protocol.output.BatchReport.Issues result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.sonar.batch.protocol.output.BatchReport.Issues buildPartial() { + org.sonar.batch.protocol.output.BatchReport.Issues result = new org.sonar.batch.protocol.output.BatchReport.Issues(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.componentRef_ = componentRef_; + if (listBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { + list_ = java.util.Collections.unmodifiableList(list_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.list_ = list_; + } else { + result.list_ = listBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.sonar.batch.protocol.output.BatchReport.Issues) { + return mergeFrom((org.sonar.batch.protocol.output.BatchReport.Issues)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.sonar.batch.protocol.output.BatchReport.Issues other) { + if (other == org.sonar.batch.protocol.output.BatchReport.Issues.getDefaultInstance()) return this; + if (other.hasComponentRef()) { + setComponentRef(other.getComponentRef()); + } + if (listBuilder_ == null) { + if (!other.list_.isEmpty()) { + if (list_.isEmpty()) { + list_ = other.list_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureListIsMutable(); + list_.addAll(other.list_); + } + onChanged(); + } + } else { + if (!other.list_.isEmpty()) { + if (listBuilder_.isEmpty()) { + listBuilder_.dispose(); + listBuilder_ = null; + list_ = other.list_; + bitField0_ = (bitField0_ & ~0x00000002); + listBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getListFieldBuilder() : null; + } else { + listBuilder_.addAllMessages(other.list_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.sonar.batch.protocol.output.BatchReport.Issues parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.sonar.batch.protocol.output.BatchReport.Issues) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private int componentRef_ ; + /** + * <code>optional int32 component_ref = 1;</code> + */ + public boolean hasComponentRef() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * <code>optional int32 component_ref = 1;</code> + */ + public int getComponentRef() { + return componentRef_; + } + /** + * <code>optional int32 component_ref = 1;</code> + */ + public Builder setComponentRef(int value) { + bitField0_ |= 0x00000001; + componentRef_ = value; + onChanged(); + return this; + } + /** + * <code>optional int32 component_ref = 1;</code> + */ + public Builder clearComponentRef() { + bitField0_ = (bitField0_ & ~0x00000001); + componentRef_ = 0; + onChanged(); + return this; + } + + private java.util.List<org.sonar.batch.protocol.output.BatchReport.Issue> list_ = + java.util.Collections.emptyList(); + private void ensureListIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + list_ = new java.util.ArrayList<org.sonar.batch.protocol.output.BatchReport.Issue>(list_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.sonar.batch.protocol.output.BatchReport.Issue, org.sonar.batch.protocol.output.BatchReport.Issue.Builder, org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder> listBuilder_; + + /** + * <code>repeated .Issue list = 2;</code> + */ + public java.util.List<org.sonar.batch.protocol.output.BatchReport.Issue> getListList() { + if (listBuilder_ == null) { + return java.util.Collections.unmodifiableList(list_); + } else { + return listBuilder_.getMessageList(); + } + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public int getListCount() { + if (listBuilder_ == null) { + return list_.size(); + } else { + return listBuilder_.getCount(); + } + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public org.sonar.batch.protocol.output.BatchReport.Issue getList(int index) { + if (listBuilder_ == null) { + return list_.get(index); + } else { + return listBuilder_.getMessage(index); + } + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public Builder setList( + int index, org.sonar.batch.protocol.output.BatchReport.Issue value) { + if (listBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureListIsMutable(); + list_.set(index, value); + onChanged(); + } else { + listBuilder_.setMessage(index, value); + } + return this; + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public Builder setList( + int index, org.sonar.batch.protocol.output.BatchReport.Issue.Builder builderForValue) { + if (listBuilder_ == null) { + ensureListIsMutable(); + list_.set(index, builderForValue.build()); + onChanged(); + } else { + listBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public Builder addList(org.sonar.batch.protocol.output.BatchReport.Issue value) { + if (listBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureListIsMutable(); + list_.add(value); + onChanged(); + } else { + listBuilder_.addMessage(value); + } + return this; + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public Builder addList( + int index, org.sonar.batch.protocol.output.BatchReport.Issue value) { + if (listBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureListIsMutable(); + list_.add(index, value); + onChanged(); + } else { + listBuilder_.addMessage(index, value); + } + return this; + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public Builder addList( + org.sonar.batch.protocol.output.BatchReport.Issue.Builder builderForValue) { + if (listBuilder_ == null) { + ensureListIsMutable(); + list_.add(builderForValue.build()); + onChanged(); + } else { + listBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public Builder addList( + int index, org.sonar.batch.protocol.output.BatchReport.Issue.Builder builderForValue) { + if (listBuilder_ == null) { + ensureListIsMutable(); + list_.add(index, builderForValue.build()); + onChanged(); + } else { + listBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public Builder addAllList( + java.lang.Iterable<? extends org.sonar.batch.protocol.output.BatchReport.Issue> values) { + if (listBuilder_ == null) { + ensureListIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, list_); + onChanged(); + } else { + listBuilder_.addAllMessages(values); + } + return this; + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public Builder clearList() { + if (listBuilder_ == null) { + list_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + listBuilder_.clear(); + } + return this; + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public Builder removeList(int index) { + if (listBuilder_ == null) { + ensureListIsMutable(); + list_.remove(index); + onChanged(); + } else { + listBuilder_.remove(index); + } + return this; + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public org.sonar.batch.protocol.output.BatchReport.Issue.Builder getListBuilder( + int index) { + return getListFieldBuilder().getBuilder(index); + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder getListOrBuilder( + int index) { + if (listBuilder_ == null) { + return list_.get(index); } else { + return listBuilder_.getMessageOrBuilder(index); + } + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public java.util.List<? extends org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder> + getListOrBuilderList() { + if (listBuilder_ != null) { + return listBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(list_); + } + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public org.sonar.batch.protocol.output.BatchReport.Issue.Builder addListBuilder() { + return getListFieldBuilder().addBuilder( + org.sonar.batch.protocol.output.BatchReport.Issue.getDefaultInstance()); + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public org.sonar.batch.protocol.output.BatchReport.Issue.Builder addListBuilder( + int index) { + return getListFieldBuilder().addBuilder( + index, org.sonar.batch.protocol.output.BatchReport.Issue.getDefaultInstance()); + } + /** + * <code>repeated .Issue list = 2;</code> + */ + public java.util.List<org.sonar.batch.protocol.output.BatchReport.Issue.Builder> + getListBuilderList() { + return getListFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.sonar.batch.protocol.output.BatchReport.Issue, org.sonar.batch.protocol.output.BatchReport.Issue.Builder, org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder> + getListFieldBuilder() { + if (listBuilder_ == null) { + listBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.sonar.batch.protocol.output.BatchReport.Issue, org.sonar.batch.protocol.output.BatchReport.Issue.Builder, org.sonar.batch.protocol.output.BatchReport.IssueOrBuilder>( + list_, + ((bitField0_ & 0x00000002) == 0x00000002), + getParentForChildren(), + isClean()); + list_ = null; + } + return listBuilder_; + } + + // @@protoc_insertion_point(builder_scope:Issues) + } + + static { + defaultInstance = new Issues(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:Issues) + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_Metadata_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_Metadata_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_Component_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_Component_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_Issue_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_Issue_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_Issues_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_Issues_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\022batch_report.proto\032\017constants.proto\"R\n" + + "\010Metadata\022\025\n\ranalysis_date\030\001 \001(\003\022\023\n\013proj" + + "ect_key\030\002 \001(\t\022\032\n\022root_component_ref\030\003 \001(" + + "\005\"\254\001\n\tComponent\022\013\n\003ref\030\001 \001(\005\022\014\n\004path\030\002 \001" + + "(\t\022\014\n\004name\030\003 \001(\t\022\034\n\004type\030\004 \001(\0162\016.Compone" + + "ntType\022\017\n\007is_test\030\005 \001(\010\022\020\n\010language\030\006 \001(" + + "\t\022\022\n\nchild_refs\030\007 \003(\005\022\023\n\013snapshot_id\030\010 \001" + + "(\005\022\014\n\004uuid\030\t \001(\t\"\232\004\n\005Issue\022\027\n\017rule_repos" + + "itory\030\001 \001(\t\022\020\n\010rule_key\030\002 \001(\t\022\014\n\004line\030\003 " + + "\001(\005\022\013\n\003msg\030\004 \001(\t\022\033\n\010severity\030\005 \001(\0162\t.Sev", + "erity\022\014\n\004tags\030\006 \003(\t\022\025\n\reffort_to_fix\030\007 \001" + + "(\001\022\016\n\006is_new\030\010 \001(\010\022\014\n\004uuid\030\t \001(\t\022\027\n\017debt" + + "_in_minutes\030\n \001(\003\022\022\n\nresolution\030\013 \001(\t\022\016\n" + + "\006status\030\014 \001(\t\022\020\n\010checksum\030\r \001(\t\022\027\n\017manua" + + "l_severity\030\016 \001(\010\022\020\n\010reporter\030\017 \001(\t\022\020\n\010as" + + "signee\030\020 \001(\t\022\027\n\017action_plan_key\030\021 \001(\t\022\022\n" + + "\nattributes\030\022 \001(\t\022\024\n\014author_login\030\023 \001(\t\022" + + "\025\n\rcreation_date\030\024 \001(\003\022\022\n\nclose_date\030\025 \001" + + "(\003\022\023\n\013update_date\030\026 \001(\003\022\023\n\013selected_at\030\027" + + " \001(\003\022\023\n\013diff_fields\030\030 \001(\t\022\022\n\nis_changed\030", + "\031 \001(\010\022\036\n\026must_send_notification\030\032 \001(\010\"5\n" + + "\006Issues\022\025\n\rcomponent_ref\030\001 \001(\005\022\024\n\004list\030\002" + + " \003(\0132\006.IssueB#\n\037org.sonar.batch.protocol" + + ".outputH\001" + }; + com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = + new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { + public com.google.protobuf.ExtensionRegistry assignDescriptors( + com.google.protobuf.Descriptors.FileDescriptor root) { + descriptor = root; + return null; + } + }; + com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + org.sonar.batch.protocol.Constants.getDescriptor(), + }, assigner); + internal_static_Metadata_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_Metadata_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_Metadata_descriptor, + new java.lang.String[] { "AnalysisDate", "ProjectKey", "RootComponentRef", }); + internal_static_Component_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_Component_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_Component_descriptor, + new java.lang.String[] { "Ref", "Path", "Name", "Type", "IsTest", "Language", "ChildRefs", "SnapshotId", "Uuid", }); + internal_static_Issue_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_Issue_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_Issue_descriptor, + new java.lang.String[] { "RuleRepository", "RuleKey", "Line", "Msg", "Severity", "Tags", "EffortToFix", "IsNew", "Uuid", "DebtInMinutes", "Resolution", "Status", "Checksum", "ManualSeverity", "Reporter", "Assignee", "ActionPlanKey", "Attributes", "AuthorLogin", "CreationDate", "CloseDate", "UpdateDate", "SelectedAt", "DiffFields", "IsChanged", "MustSendNotification", }); + internal_static_Issues_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_Issues_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_Issues_descriptor, + new java.lang.String[] { "ComponentRef", "List", }); + org.sonar.batch.protocol.Constants.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/GsonHelper.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/GsonHelper.java new file mode 100644 index 00000000000..b5ea008a538 --- /dev/null +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/GsonHelper.java @@ -0,0 +1,35 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.batch.protocol; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +public class GsonHelper { + + private GsonHelper() { + // Utility class + } + + public static Gson create() { + return new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").setPrettyPrinting().create(); + } + +} diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/ProtobufUtil.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/ProtobufUtil.java new file mode 100644 index 00000000000..8d7d5a671d4 --- /dev/null +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/ProtobufUtil.java @@ -0,0 +1,54 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.batch.protocol; + +import com.google.protobuf.Message; +import com.google.protobuf.Parser; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +public class ProtobufUtil { + private ProtobufUtil() { + // only static stuff + } + + public static <T extends Message> T readFile(File file, Parser<T> parser) { + try (InputStream input = new BufferedInputStream(new FileInputStream(file))) { + return parser.parseFrom(input); + } catch (IOException e) { + throw new IllegalStateException("Failed to read file: " + file, e); + } + } + + public static void writeToFile(Message message, File toFile) { + try (OutputStream out = new BufferedOutputStream(new FileOutputStream(toFile, false))) { + message.writeTo(out); + } catch (IOException e) { + throw new IllegalStateException("Unable to write protocol buffer data to file " + toFile, e); + } + } +} diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/ActiveRule.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/ActiveRule.java index 157253fa056..219f8a536ea 100644 --- a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/ActiveRule.java +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/ActiveRule.java @@ -30,7 +30,8 @@ public class ActiveRule { private final String name, severity, internalKey, language; private final Map<String, String> params = new HashMap<String, String>(); - public ActiveRule(String repositoryKey, String ruleKey, @Nullable String templateRuleKey, String name, String severity, @Nullable String internalKey, String language) { + public ActiveRule(String repositoryKey, String ruleKey, @Nullable String templateRuleKey, String name, @Nullable String severity, + @Nullable String internalKey, @Nullable String language) { this.repositoryKey = repositoryKey; this.ruleKey = ruleKey; this.templateRuleKey = templateRuleKey; @@ -57,10 +58,18 @@ public class ActiveRule { return name; } + /** + * Is null on manual rules + */ + @CheckForNull public String severity() { return severity; } + /** + * Is null on manual rules + */ + @CheckForNull public String language() { return language; } diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/FileData.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/FileData.java index fc7e7beca02..d68bcbd3c61 100644 --- a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/FileData.java +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/FileData.java @@ -25,12 +25,14 @@ import javax.annotation.Nullable; public class FileData { private final String hash; + private final boolean needBlame; private final String scmLastCommitDatetimesByLine; private final String scmRevisionsByLine; private final String scmAuthorsByLine; - public FileData(@Nullable String hash, @Nullable String scmLastCommitDatetimesByLine, @Nullable String scmRevisionsByLine, @Nullable String scmAuthorsByLine) { + public FileData(@Nullable String hash, boolean needBlame, @Nullable String scmLastCommitDatetimesByLine, @Nullable String scmRevisionsByLine, @Nullable String scmAuthorsByLine) { this.hash = hash; + this.needBlame = needBlame; this.scmLastCommitDatetimesByLine = scmLastCommitDatetimesByLine; this.scmRevisionsByLine = scmRevisionsByLine; this.scmAuthorsByLine = scmAuthorsByLine; @@ -41,6 +43,10 @@ public class FileData { return hash; } + public boolean needBlame() { + return needBlame; + } + @CheckForNull public String scmLastCommitDatetimesByLine() { return scmLastCommitDatetimesByLine; diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/GlobalReferentials.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/GlobalRepositories.java index 4fa32d5d68b..4dccd3a286f 100644 --- a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/GlobalReferentials.java +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/GlobalRepositories.java @@ -19,7 +19,7 @@ */ package org.sonar.batch.protocol.input; -import com.google.gson.Gson; +import org.sonar.batch.protocol.GsonHelper; import java.util.ArrayList; import java.util.Collection; @@ -30,7 +30,7 @@ import java.util.Map; * Container for all global data going from server to batch. * This is not an API since server and batch always share the same version. */ -public class GlobalReferentials { +public class GlobalRepositories { private long timestamp; private Collection<Metric> metrics = new ArrayList<Metric>(); @@ -40,7 +40,7 @@ public class GlobalReferentials { return globalSettings; } - public GlobalReferentials addGlobalSetting(String key, String value) { + public GlobalRepositories addGlobalSetting(String key, String value) { globalSettings.put(key, value); return this; } @@ -49,7 +49,7 @@ public class GlobalReferentials { return metrics; } - public GlobalReferentials addMetric(Metric metric) { + public GlobalRepositories addMetric(Metric metric) { metrics.add(metric); return this; } @@ -63,11 +63,11 @@ public class GlobalReferentials { } public String toJson() { - return new Gson().toJson(this); + return GsonHelper.create().toJson(this); } - public static GlobalReferentials fromJson(String json) { - return new Gson().fromJson(json, GlobalReferentials.class); + public static GlobalRepositories fromJson(String json) { + return GsonHelper.create().fromJson(json, GlobalRepositories.class); } } diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/ProjectReferentials.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/ProjectRepositories.java index 68d06e73b48..eb3200b6ac3 100644 --- a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/ProjectReferentials.java +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/ProjectRepositories.java @@ -19,24 +19,18 @@ */ package org.sonar.batch.protocol.input; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; +import org.sonar.batch.protocol.GsonHelper; import javax.annotation.CheckForNull; import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * Container for all project data going from server to batch. * This is not an API since server and batch always share the same version. */ -public class ProjectReferentials { +public class ProjectRepositories { private long timestamp; private Map<String, QProfile> qprofilesByLanguage = new HashMap<String, QProfile>(); @@ -45,15 +39,15 @@ public class ProjectReferentials { private Map<String, Map<String, FileData>> fileDataByModuleAndPath = new HashMap<String, Map<String, FileData>>(); private Date lastAnalysisDate; - public Map<String, String> settings(String projectKey) { - return settingsByModule.containsKey(projectKey) ? settingsByModule.get(projectKey) : Collections.<String, String>emptyMap(); + public Map<String, String> settings(String moduleKey) { + return settingsByModule.containsKey(moduleKey) ? settingsByModule.get(moduleKey) : Collections.<String, String>emptyMap(); } - public ProjectReferentials addSettings(String projectKey, Map<String, String> settings) { - Map<String, String> existingSettings = settingsByModule.get(projectKey); + public ProjectRepositories addSettings(String moduleKey, Map<String, String> settings) { + Map<String, String> existingSettings = settingsByModule.get(moduleKey); if (existingSettings == null) { - existingSettings = new HashMap<String, String>(); - settingsByModule.put(projectKey, existingSettings); + existingSettings = new HashMap<>(); + settingsByModule.put(moduleKey, existingSettings); } existingSettings.putAll(settings); return this; @@ -63,7 +57,7 @@ public class ProjectReferentials { return qprofilesByLanguage.values(); } - public ProjectReferentials addQProfile(QProfile qProfile) { + public ProjectRepositories addQProfile(QProfile qProfile) { qprofilesByLanguage.put(qProfile.language(), qProfile); return this; } @@ -72,20 +66,20 @@ public class ProjectReferentials { return activeRules; } - public ProjectReferentials addActiveRule(ActiveRule activeRule) { + public ProjectRepositories addActiveRule(ActiveRule activeRule) { activeRules.add(activeRule); return this; } - public Map<String, FileData> fileDataByPath(String projectKey) { - return fileDataByModuleAndPath.containsKey(projectKey) ? fileDataByModuleAndPath.get(projectKey) : Collections.<String, FileData>emptyMap(); + public Map<String, FileData> fileDataByPath(String moduleKey) { + return fileDataByModuleAndPath.containsKey(moduleKey) ? fileDataByModuleAndPath.get(moduleKey) : Collections.<String, FileData>emptyMap(); } - public ProjectReferentials addFileData(String projectKey, String path, FileData fileData) { - Map<String, FileData> existingFileDataByPath = fileDataByModuleAndPath.get(projectKey); + public ProjectRepositories addFileData(String moduleKey, String path, FileData fileData) { + Map<String, FileData> existingFileDataByPath = fileDataByModuleAndPath.get(moduleKey); if (existingFileDataByPath == null) { - existingFileDataByPath = new HashMap<String, FileData>(); - fileDataByModuleAndPath.put(projectKey, existingFileDataByPath); + existingFileDataByPath = new HashMap<>(); + fileDataByModuleAndPath.put(moduleKey, existingFileDataByPath); } existingFileDataByPath.put(path, fileData); return this; @@ -114,13 +108,11 @@ public class ProjectReferentials { } public String toJson() { - Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create(); - return gson.toJson(this); + return GsonHelper.create().toJson(this); } - public static ProjectReferentials fromJson(String json) { - Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create(); - return gson.fromJson(json, ProjectReferentials.class); + public static ProjectRepositories fromJson(String json) { + return GsonHelper.create().fromJson(json, ProjectRepositories.class); } } diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/issues/PreviousIssue.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/issues/PreviousIssue.java new file mode 100644 index 00000000000..d4d8a5ca7c9 --- /dev/null +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/issues/PreviousIssue.java @@ -0,0 +1,158 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.batch.protocol.input.issues; + +import javax.annotation.Nullable; + +import java.io.Serializable; +import java.util.Date; + +/** + * Issues from previous analysis. USed by local issue tracking. + */ +public class PreviousIssue implements Serializable { + + private String key; + private String componentKey; + private String ruleKey; + private String ruleRepo; + private Integer line; + private String message; + private String severity; + private boolean manualSeverity; + private String resolution; + private String status; + private String checksum; + private String assigneeLogin; + private Date creationDate; + + public PreviousIssue setKey(String key) { + this.key = key; + return this; + } + + public String key() { + return key; + } + + public PreviousIssue setComponentKey(String key) { + this.componentKey = key; + return this; + } + + public String componentKey() { + return componentKey; + } + + public PreviousIssue setLine(Integer line) { + this.line = line; + return this; + } + + public Integer line() { + return line; + } + + public PreviousIssue setMessage(String message) { + this.message = message; + return this; + } + + public String message() { + return message; + } + + public PreviousIssue setResolution(String resolution) { + this.resolution = resolution; + return this; + } + + public String resolution() { + return resolution; + } + + public PreviousIssue setStatus(String status) { + this.status = status; + return this; + } + + public String status() { + return status; + } + + public PreviousIssue setSeverity(@Nullable String severity) { + this.severity = severity; + return this; + } + + public String severity() { + return severity; + } + + public boolean isManualSeverity() { + return manualSeverity; + } + + public PreviousIssue setManualSeverity(boolean manualSeverity) { + this.manualSeverity = manualSeverity; + return this; + } + + public PreviousIssue setChecksum(String checksum) { + this.checksum = checksum; + return this; + } + + public String checksum() { + return checksum; + } + + public PreviousIssue setAssigneeLogin(String assigneeLogin) { + this.assigneeLogin = assigneeLogin; + return this; + } + + public String assigneeLogin() { + return assigneeLogin; + } + + public PreviousIssue setRuleKey(String ruleRepo, String ruleKey) { + this.ruleRepo = ruleRepo; + this.ruleKey = ruleKey; + return this; + } + + public String ruleRepo() { + return ruleRepo; + } + + public String ruleKey() { + return ruleKey; + } + + public Date creationDate() { + return creationDate; + } + + public PreviousIssue setCreationDate(Date creationDate) { + this.creationDate = creationDate; + return this; + } +} diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/issues/PreviousIssueHelper.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/issues/PreviousIssueHelper.java new file mode 100644 index 00000000000..056b0077eea --- /dev/null +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/issues/PreviousIssueHelper.java @@ -0,0 +1,129 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.batch.protocol.input.issues; + +import com.google.gson.Gson; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import org.sonar.batch.protocol.GsonHelper; + +import javax.annotation.Nullable; + +import java.io.Closeable; +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; +import java.util.Iterator; +import java.util.NoSuchElementException; + +public class PreviousIssueHelper implements Closeable { + + private final Gson gson = GsonHelper.create(); + JsonWriter writer; + + private PreviousIssueHelper(Writer out) { + try { + this.writer = new JsonWriter(out); + writer.setIndent(" "); + writer.beginArray(); + } catch (IOException e) { + throw new IllegalStateException("Unable to open writer", e); + } + } + + public static PreviousIssueHelper create(Writer out) { + return new PreviousIssueHelper(out); + } + + public static interface Function<F, T> { + T apply(@Nullable F from); + } + + public <G> void addIssue(G issue, Function<G, PreviousIssue> converter) { + gson.toJson(converter.apply(issue), PreviousIssue.class, writer); + } + + @Override + public void close() { + try { + writer.endArray(); + writer.close(); + } catch (IOException e) { + throw new IllegalStateException("Unable to close write", e); + } + } + + public static Iterable<PreviousIssue> getIssues(final Reader reader) { + + return new Iterable<PreviousIssue>() { + @Override + public Iterator<PreviousIssue> iterator() { + return new PreviousIssueIterator(reader); + } + }; + } + + private final static class PreviousIssueIterator implements Iterator<PreviousIssue> { + + private JsonReader jsonreader; + private final Gson gson = GsonHelper.create(); + + public PreviousIssueIterator(Reader reader) { + try { + jsonreader = new JsonReader(reader); + jsonreader.beginArray(); + } catch (IOException e) { + throw new IllegalStateException("Unable to read issues", e); + } + } + + @Override + public boolean hasNext() { + try { + if (jsonreader.hasNext()) { + return true; + } + jsonreader.endArray(); + jsonreader.close(); + return false; + } catch (IOException e) { + throw new IllegalStateException("Unable to iterate over JSON file ", e); + } + } + + @Override + public PreviousIssue next() { + try { + if (!jsonreader.hasNext()) { + throw new NoSuchElementException(); + } + } catch (IOException e) { + throw new IllegalStateException("Unable to iterate over JSON file ", e); + } + return gson.fromJson(jsonreader, PreviousIssue.class); + } + + @Override + public void remove() { + throw new UnsupportedOperationException("remove"); + } + } + +} diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/issues/package-info.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/issues/package-info.java new file mode 100644 index 00000000000..b2ea9bf0e15 --- /dev/null +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/input/issues/package-info.java @@ -0,0 +1,24 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +@ParametersAreNonnullByDefault +package org.sonar.batch.protocol.input.issues; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/BatchOutputReader.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/BatchOutputReader.java new file mode 100644 index 00000000000..28c50041c82 --- /dev/null +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/BatchOutputReader.java @@ -0,0 +1,62 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.batch.protocol.output; + +import org.sonar.batch.protocol.ProtobufUtil; + +import javax.annotation.CheckForNull; +import java.io.File; +import java.util.Collections; + +public class BatchOutputReader { + + private final FileStructure fileStructure; + + public BatchOutputReader(File dir) { + this.fileStructure = new FileStructure(dir); + } + + public BatchReport.Metadata readMetadata() { + File file = fileStructure.metadataFile(); + if (!file.exists() || !file.isFile()) { + throw new IllegalStateException("Metadata file is missing in analysis report: " + file); + } + return ProtobufUtil.readFile(file, BatchReport.Metadata.PARSER); + } + + @CheckForNull + public BatchReport.Component readComponent(int componentRef) { + File file = fileStructure.fileFor(FileStructure.Domain.COMPONENT, componentRef); + if (file.exists() && file.isFile()) { + return ProtobufUtil.readFile(file, BatchReport.Component.PARSER); + } + return null; + } + + public Iterable<BatchReport.Issue> readComponentIssues(int componentRef) { + File file = fileStructure.fileFor(FileStructure.Domain.ISSUES, componentRef); + if (file.exists() && file.isFile()) { + // all the issues are loaded in memory + BatchReport.Issues issues = ProtobufUtil.readFile(file, BatchReport.Issues.PARSER); + return issues.getListList(); + } + return Collections.emptyList(); + } +} diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/BatchOutputWriter.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/BatchOutputWriter.java new file mode 100644 index 00000000000..2e12a297e1e --- /dev/null +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/BatchOutputWriter.java @@ -0,0 +1,65 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.batch.protocol.output; + +import org.sonar.batch.protocol.ProtobufUtil; + +import java.io.File; + +public class BatchOutputWriter { + + private final FileStructure fileStructure; + + public BatchOutputWriter(File dir) { + if (!dir.exists() && !dir.mkdirs()) { + throw new IllegalStateException("Unable to create directory: " + dir); + } + this.fileStructure = new FileStructure(dir); + } + + FileStructure getFileStructure() { + return fileStructure; + } + + public boolean hasComponentData(FileStructure.Domain domain, int componentRef) { + File file = fileStructure.fileFor(domain, componentRef); + return file.exists() && file.isFile(); + } + + /** + * Metadata is mandatory + */ + public void writeMetadata(BatchReport.Metadata metadata) { + ProtobufUtil.writeToFile(metadata, fileStructure.metadataFile()); + } + + public void writeComponent(BatchReport.Component component) { + File file = fileStructure.fileFor(FileStructure.Domain.COMPONENT, component.getRef()); + ProtobufUtil.writeToFile(component, file); + } + + public void writeComponentIssues(int componentRef, Iterable<BatchReport.Issue> issues) { + BatchReport.Issues.Builder issuesBuilder = BatchReport.Issues.newBuilder(); + issuesBuilder.setComponentRef(componentRef); + issuesBuilder.addAllList(issues); + File file = fileStructure.fileFor(FileStructure.Domain.ISSUES, componentRef); + ProtobufUtil.writeToFile(issuesBuilder.build(), file); + } +} diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/FileStructure.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/FileStructure.java new file mode 100644 index 00000000000..5e2d51b26ce --- /dev/null +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/FileStructure.java @@ -0,0 +1,56 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.batch.protocol.output; + +import java.io.File; + +/** + * Structure of files in the zipped report + */ +public class FileStructure { + + public static enum Domain { + ISSUES("issues-"), COMPONENT("component-"); + + private final String filePrefix; + + Domain(String filePrefix) { + this.filePrefix = filePrefix; + } + } + + private final File dir; + + FileStructure(File dir) { + if (!dir.exists() || !dir.isDirectory()) { + throw new IllegalArgumentException("Directory of analysis report does not exist: " + dir); + } + this.dir = dir; + } + + public File metadataFile() { + return new File(dir, "metadata.pb"); + } + + public File fileFor(Domain domain, int componentRef) { + return new File(dir, domain.filePrefix + componentRef + ".pb"); + } + +} diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/package-info.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/package-info.java new file mode 100644 index 00000000000..a976368c3a7 --- /dev/null +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/output/package-info.java @@ -0,0 +1,24 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +@ParametersAreNonnullByDefault +package org.sonar.batch.protocol.output; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/package-info.java b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/package-info.java new file mode 100644 index 00000000000..c10ec61ea2a --- /dev/null +++ b/sonar-batch-protocol/src/main/java/org/sonar/batch/protocol/package-info.java @@ -0,0 +1,24 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +@ParametersAreNonnullByDefault +package org.sonar.batch.protocol; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/sonar-batch-protocol/src/main/protobuf/batch_report.proto b/sonar-batch-protocol/src/main/protobuf/batch_report.proto new file mode 100644 index 00000000000..0499fc2b3ca --- /dev/null +++ b/sonar-batch-protocol/src/main/protobuf/batch_report.proto @@ -0,0 +1,95 @@ +/* + SonarQube, open source software quality management tool. + Copyright (C) 2008-2015 SonarSource + mailto:contact AT sonarsource DOT com + + SonarQube is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 3 of the License, or (at your option) any later version. + + SonarQube is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +/* +Notes + + - "required" fields are not used as recommended by Google to keep forward-compatibility: + https://developers.google.com/protocol-buffers/docs/proto#simple + + - this is beta version of specification. It will evolve during next releases and is + not forward-compatible yet. + + - the related Java files are not generated during build. Indeed the existing protoc maven + plugins require protobuf to be installed on boxes. That means that generated Java files + are updated and committed for each change (see src/main/gen-java). +*/ + + +import "constants.proto"; + +option java_package = "org.sonar.batch.protocol.output"; +option optimize_for = SPEED; + +message Metadata { + optional int64 analysis_date = 1; + optional string project_key = 2; + optional int32 root_component_ref = 3; +} + +message Component { + optional int32 ref = 1; + optional string path = 2; + optional string name = 3; + optional ComponentType type = 4; + optional bool is_test = 5; + optional string language = 6; + repeated int32 child_refs = 7; + + // temporary fields during development of computation stack + optional int32 snapshot_id = 8; + optional string uuid = 9; +} + +message Issue { + optional string rule_repository = 1; + optional string rule_key = 2; + optional int32 line = 3; + optional string msg = 4; + optional Severity severity = 5; + repeated string tags = 6; + + // temporary fields during development of computation stack + optional double effort_to_fix = 7; + optional bool is_new = 8; + optional string uuid = 9; + optional int64 debt_in_minutes = 10; + optional string resolution = 11; + optional string status = 12; + optional string checksum = 13; + optional bool manual_severity = 14; + optional string reporter = 15; + optional string assignee = 16; + optional string action_plan_key = 17; + optional string attributes = 18; + optional string author_login = 19; + optional int64 creation_date = 20; + optional int64 close_date = 21; + optional int64 update_date = 22; + optional int64 selected_at = 23; + optional string diff_fields = 24; + optional bool is_changed = 25; + optional bool must_send_notification = 26; +} + +message Issues { + optional int32 component_ref = 1; + repeated Issue list = 2; +} diff --git a/sonar-batch-protocol/src/main/protobuf/constants.proto b/sonar-batch-protocol/src/main/protobuf/constants.proto new file mode 100644 index 00000000000..3cbc886accd --- /dev/null +++ b/sonar-batch-protocol/src/main/protobuf/constants.proto @@ -0,0 +1,39 @@ +/* + SonarQube, open source software quality management tool. + Copyright (C) 2008-2015 SonarSource + mailto:contact AT sonarsource DOT com + + SonarQube is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 3 of the License, or (at your option) any later version. + + SonarQube is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +option java_package = "org.sonar.batch.protocol"; +option optimize_for = SPEED; + +enum Severity { + INFO = 0; + MINOR = 1; + MAJOR = 2; + CRITICAL = 3; + BLOCKER = 4; +} + +enum ComponentType { + PROJECT = 0; + MODULE = 1; + DIRECTORY = 2; + FILE = 3; + VIEW = 4; + SUBVIEW = 5; +} diff --git a/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/ProtobufUtilTest.java b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/ProtobufUtilTest.java new file mode 100644 index 00000000000..8084bb2d947 --- /dev/null +++ b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/ProtobufUtilTest.java @@ -0,0 +1,34 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.batch.protocol; + +import org.junit.Test; +import org.sonar.test.TestUtils; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ProtobufUtilTest { + + @Test + public void only_utils() throws Exception { + assertThat(TestUtils.hasOnlyPrivateConstructors(ProtobufUtil.class)); + } + +} diff --git a/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/GlobalReferentialsTest.java b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/GlobalRepositoriesTest.java index 0fc741e3910..2f4652d3ded 100644 --- a/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/GlobalReferentialsTest.java +++ b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/GlobalRepositoriesTest.java @@ -19,18 +19,17 @@ */ package org.sonar.batch.protocol.input; -import org.fest.assertions.MapAssert; import org.json.JSONException; import org.junit.Test; import org.skyscreamer.jsonassert.JSONAssert; -import static org.fest.assertions.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; -public class GlobalReferentialsTest { +public class GlobalRepositoriesTest { @Test public void to_json() throws Exception { - GlobalReferentials ref = new GlobalReferentials(); + GlobalRepositories ref = new GlobalRepositories(); ref.addMetric(new Metric(1, "ncloc", "INT", "Description", -1, "NCLOC", true, false, 2.0, 1.0, true)); ref.addGlobalSetting("prop", "value"); ref.setTimestamp(10); @@ -45,7 +44,7 @@ public class GlobalReferentialsTest { @Test public void from_json() throws JSONException { - GlobalReferentials ref = GlobalReferentials + GlobalRepositories ref = GlobalRepositories .fromJson( "{timestamp:1," + "metrics:[{id:1,key:ncloc,valueType:DATA,description:Description,direction:-1,name:NCLOC,qualitative:true,userManaged:false,worstValue:2.0,bestValue:1.0,optimizedBestValue:true}]," @@ -65,6 +64,6 @@ public class GlobalReferentialsTest { assertThat(metric.bestValue()).isEqualTo(1.0); assertThat(metric.isOptimizedBestValue()).isTrue(); - assertThat(ref.globalSettings()).includes(MapAssert.entry("prop", "value")); + assertThat(ref.globalSettings()).containsEntry("prop", "value"); } } diff --git a/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/ProjectReferentialsTest.java b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/ProjectRepositoriesTest.java index c446e11aa9e..cfb584f97e7 100644 --- a/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/ProjectReferentialsTest.java +++ b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/ProjectRepositoriesTest.java @@ -19,7 +19,6 @@ */ package org.sonar.batch.protocol.input; -import org.fest.assertions.MapAssert; import org.json.JSONException; import org.junit.Test; import org.skyscreamer.jsonassert.JSONAssert; @@ -28,13 +27,13 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.HashMap; -import static org.fest.assertions.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; -public class ProjectReferentialsTest { +public class ProjectRepositoriesTest { @Test public void testToJson() throws Exception { - ProjectReferentials ref = new ProjectReferentials(); + ProjectRepositories ref = new ProjectRepositories(); assertThat(ref.settings("foo")).isEmpty(); ref.addQProfile(new QProfile("squid-java", "Java", "java", new SimpleDateFormat("dd/MM/yyyy").parse("14/03/1984"))); @@ -50,28 +49,29 @@ public class ProjectReferentialsTest { ref.addActiveRule(activeRule); ref.setLastAnalysisDate(new SimpleDateFormat("dd/MM/yyyy").parse("31/10/2014")); ref.setTimestamp(10); - ref.addFileData("foo", "src/main/java/Foo.java", new FileData("xyz", "1=12345,2=3456", "1=345,2=345", "1=henryju,2=gaudin")); + ref.addFileData("foo", "src/main/java/Foo.java", new FileData("xyz", true, "1=12345,2=3456", "1=345,2=345", "1=henryju,2=gaudin")); + ref.addFileData("foo", "src/main/java/Foo2.java", new FileData("xyz", false, "1=12345,2=3456", "1=345,2=345", "1=henryju,2=gaudin")); - System.out.println(ref.toJson()); JSONAssert .assertEquals( "{timestamp:10," + "qprofilesByLanguage:{java:{key:\"squid-java\",name:Java,language:java,rulesUpdatedAt:\"1984-03-14T00:00:00+0100\"}}," + "activeRules:[{repositoryKey:repo,ruleKey:rule,templateRuleKey:templateRule,name:Rule,severity:MAJOR,internalKey:rule,language:java,params:{param1:value1}}]," + "settingsByModule:{foo:{prop1:value1,prop2:value2,prop:value}}," - + "fileDataByModuleAndPath:{foo:{\"src/main/java/Foo.java\":{hash:xyz,scmLastCommitDatetimesByLine:\"1\u003d12345,2\u003d3456\",scmRevisionsByLine:\"1\u003d345,2\u003d345\",scmAuthorsByLine:\"1\u003dhenryju,2\u003dgaudin\"}}}," + + "fileDataByModuleAndPath:{foo:{\"src/main/java/Foo.java\":{hash:xyz,needBlame:true,scmLastCommitDatetimesByLine:\"1\u003d12345,2\u003d3456\",scmRevisionsByLine:\"1\u003d345,2\u003d345\",scmAuthorsByLine:\"1\u003dhenryju,2\u003dgaudin\"}," + + "\"src/main/java/Foo2.java\":{hash:xyz,needBlame:false,scmLastCommitDatetimesByLine:\"1\u003d12345,2\u003d3456\",scmRevisionsByLine:\"1\u003d345,2\u003d345\",scmAuthorsByLine:\"1\u003dhenryju,2\u003dgaudin\"}}}," + "lastAnalysisDate:\"2014-10-31T00:00:00+0100\"}", ref.toJson(), true); } @Test public void testFromJson() throws JSONException, ParseException { - ProjectReferentials ref = ProjectReferentials + ProjectRepositories ref = ProjectRepositories .fromJson("{timestamp:1," + "qprofilesByLanguage:{java:{key:\"squid-java\",name:Java,language:java,rulesUpdatedAt:\"1984-03-14T00:00:00+0100\"}}," + "activeRules:[{repositoryKey:repo,ruleKey:rule,templateRuleKey:templateRule,name:Rule,severity:MAJOR,internalKey:rule1,language:java,params:{param1:value1}}]," + "settingsByModule:{foo:{prop:value}}," - + "fileDataByModuleAndPath:{foo:{\"src/main/java/Foo.java\":{hash:xyz,scmLastCommitDatetimesByLine:\"1\u003d12345,2\u003d3456\",scmRevisionsByLine:\"1\u003d345,2\u003d345\",scmAuthorsByLine:\"1\u003dhenryju,2\u003dgaudin\"}}}," + + "fileDataByModuleAndPath:{foo:{\"src/main/java/Foo.java\":{hash:xyz,needBlame:true,scmLastCommitDatetimesByLine:\"1\u003d12345,2\u003d3456\",scmRevisionsByLine:\"1\u003d345,2\u003d345\",scmAuthorsByLine:\"1\u003dhenryju,2\u003dgaudin\"}}}," + "lastAnalysisDate:\"2014-10-31T00:00:00+0100\"}"); assertThat(ref.timestamp()).isEqualTo(1); @@ -84,15 +84,18 @@ public class ProjectReferentialsTest { assertThat(activeRule.severity()).isEqualTo("MAJOR"); assertThat(activeRule.internalKey()).isEqualTo("rule1"); assertThat(activeRule.language()).isEqualTo("java"); - assertThat(activeRule.params()).includes(MapAssert.entry("param1", "value1")); + assertThat(activeRule.params()).containsEntry("param1", "value1"); assertThat(activeRule.param("param1")).isEqualTo("value1"); QProfile qProfile = ref.qProfiles().iterator().next(); assertThat(qProfile.key()).isEqualTo("squid-java"); assertThat(qProfile.name()).isEqualTo("Java"); assertThat(qProfile.rulesUpdatedAt()).isEqualTo(new SimpleDateFormat("dd/MM/yyyy").parse("14/03/1984")); - assertThat(ref.settings("foo")).includes(MapAssert.entry("prop", "value")); + assertThat(ref.settings("foo")).containsEntry("prop", "value"); + + assertThat(ref.fileData("foo2", "src/main/java/Foo3.java")).isNull(); assertThat(ref.fileData("foo", "src/main/java/Foo.java").hash()).isEqualTo("xyz"); + assertThat(ref.fileData("foo", "src/main/java/Foo.java").needBlame()).isTrue(); assertThat(ref.fileData("foo", "src/main/java/Foo.java").scmAuthorsByLine()).isEqualTo("1=henryju,2=gaudin"); assertThat(ref.fileData("foo", "src/main/java/Foo.java").scmLastCommitDatetimesByLine()).isEqualTo("1=12345,2=3456"); assertThat(ref.fileData("foo", "src/main/java/Foo.java").scmRevisionsByLine()).isEqualTo("1=345,2=345"); diff --git a/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/QProfileTest.java b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/QProfileTest.java index 460d1720405..d28bdbbe489 100644 --- a/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/QProfileTest.java +++ b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/QProfileTest.java @@ -24,7 +24,7 @@ import org.junit.Test; import java.text.ParseException; import java.text.SimpleDateFormat; -import static org.fest.assertions.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; public class QProfileTest { diff --git a/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/issues/PreviousIssueHelperTest.java b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/issues/PreviousIssueHelperTest.java new file mode 100644 index 00000000000..ffbc9545d85 --- /dev/null +++ b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/input/issues/PreviousIssueHelperTest.java @@ -0,0 +1,108 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.batch.protocol.input.issues; + +import org.json.JSONException; +import org.junit.Test; +import org.skyscreamer.jsonassert.JSONAssert; + +import java.io.StringReader; +import java.io.StringWriter; +import java.util.Iterator; + +import static org.assertj.core.api.Assertions.assertThat; + +public class PreviousIssueHelperTest { + + @Test + public void writeIssues() throws JSONException { + StringWriter out = new StringWriter(); + PreviousIssueHelper helper = PreviousIssueHelper.create(out); + + PreviousIssue issue1 = new PreviousIssue(); + issue1.setKey("key1"); + issue1.setComponentKey("key"); + issue1.setRuleKey("repokey", "rulekey"); + issue1.setLine(2); + issue1.setMessage("message"); + issue1.setSeverity("severity"); + issue1.setManualSeverity(true); + issue1.setResolution("resolution"); + issue1.setStatus("status"); + issue1.setChecksum("checksum"); + issue1.setAssigneeLogin("login"); + PreviousIssue issue2 = new PreviousIssue(); + issue2.setKey("key2"); + + PreviousIssueFunction previousIssueFunction = new PreviousIssueFunction(); + helper.addIssue(issue1, previousIssueFunction); + helper.addIssue(issue2, previousIssueFunction); + helper.close(); + + JSONAssert + .assertEquals( + "[{\"key\": \"key1\", \"componentKey\": \"key\", \"ruleKey\": \"rulekey\", \"ruleRepo\": \"repokey\", \"line\": 2,\"message\": \"message\", " + + "\"severity\": \"severity\", \"manualSeverity\": true, \"resolution\": \"resolution\", \"status\": \"status\", \"checksum\": \"checksum\",\"assigneeLogin\": \"login\"}," + + + "{\"key\": \"key2\", \"manualSeverity\": false}]", + out.getBuffer().toString(), true); + } + + private static class PreviousIssueFunction implements PreviousIssueHelper.Function<PreviousIssue, PreviousIssue> { + @Override + public PreviousIssue apply(PreviousIssue from) { + return from; + } + } + + @Test + public void readIssues() { + StringWriter out = new StringWriter(); + PreviousIssueHelper helper = PreviousIssueHelper.create(out); + StringReader reader = new StringReader( + "[{\"key\": \"key1\", \"componentKey\": \"key\", \"ruleKey\": \"rulekey\", \"ruleRepo\": \"repokey\", \"line\": 2,\"message\": \"message\", " + + "\"severity\": \"severity\", \"manualSeverity\": true, \"resolution\": \"resolution\", \"status\": \"status\", \"checksum\": \"checksum\",\"assigneeLogin\": \"login\"}," + + + "{\"key\": \"key2\"}]"); + + Iterator<PreviousIssue> iterator = helper.getIssues(reader).iterator(); + PreviousIssue issue1 = iterator.next(); + assertThat(iterator.hasNext()).isTrue(); + PreviousIssue issue2 = iterator.next(); + assertThat(iterator.hasNext()).isFalse(); + + assertThat(issue1.key()).isEqualTo("key1"); + assertThat(issue1.componentKey()).isEqualTo("key"); + assertThat(issue1.ruleRepo()).isEqualTo("repokey"); + assertThat(issue1.ruleKey()).isEqualTo("rulekey"); + assertThat(issue1.line()).isEqualTo(2); + assertThat(issue1.message()).isEqualTo("message"); + assertThat(issue1.severity()).isEqualTo("severity"); + assertThat(issue1.isManualSeverity()).isTrue(); + assertThat(issue1.resolution()).isEqualTo("resolution"); + assertThat(issue1.status()).isEqualTo("status"); + assertThat(issue1.checksum()).isEqualTo("checksum"); + assertThat(issue1.assigneeLogin()).isEqualTo("login"); + + assertThat(issue2.key()).isEqualTo("key2"); + helper.close(); + } + +} diff --git a/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/output/BatchOutputReaderTest.java b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/output/BatchOutputReaderTest.java new file mode 100644 index 00000000000..c9fc72df6c7 --- /dev/null +++ b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/output/BatchOutputReaderTest.java @@ -0,0 +1,77 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.batch.protocol.output; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; + +import java.io.File; +import java.util.Arrays; + +import static org.assertj.core.api.Assertions.assertThat; + +public class BatchOutputReaderTest { + + @Rule + public TemporaryFolder temp = new TemporaryFolder(); + + @Test + public void create_dir_if_does_not_exist() throws Exception { + File dir = temp.newFolder(); + + initFiles(dir); + + BatchOutputReader reader = new BatchOutputReader(dir); + assertThat(reader.readMetadata().getAnalysisDate()).isEqualTo(15000000L); + assertThat(reader.readComponentIssues(1)).hasSize(1); + assertThat(reader.readComponentIssues(200)).isEmpty(); + assertThat(reader.readComponent(1).getUuid()).isEqualTo("UUID_A"); + assertThat(reader.readComponent(200)).isNull(); + + } + + private void initFiles(File dir) { + BatchOutputWriter writer = new BatchOutputWriter(dir); + + BatchReport.Metadata.Builder metadata = BatchReport.Metadata.newBuilder() + .setAnalysisDate(15000000L) + .setProjectKey("PROJECT_A") + .setRootComponentRef(1); + writer.writeMetadata(metadata.build()); + + BatchReport.Component.Builder component = BatchReport.Component.newBuilder() + .setRef(1) + .setUuid("UUID_A"); + writer.writeComponent(component.build()); + + BatchReport.Issue issue = BatchReport.Issue.newBuilder() + .setUuid("ISSUE_A") + .setLine(50) + .build(); + + writer.writeComponentIssues(1, Arrays.asList(issue)); + } + + @Test + public void readMetadata() throws Exception { + + } +} diff --git a/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/output/BatchOutputWriterTest.java b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/output/BatchOutputWriterTest.java new file mode 100644 index 00000000000..ed1d4362048 --- /dev/null +++ b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/output/BatchOutputWriterTest.java @@ -0,0 +1,120 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.batch.protocol.output; + +import org.apache.commons.io.FileUtils; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import org.sonar.batch.protocol.Constants; +import org.sonar.batch.protocol.ProtobufUtil; + +import java.io.File; +import java.util.Arrays; + +import static org.assertj.core.api.Assertions.assertThat; + +public class BatchOutputWriterTest { + + @Rule + public TemporaryFolder temp = new TemporaryFolder(); + + @Test + public void create_dir_if_does_not_exist() throws Exception { + File dir = temp.newFolder(); + FileUtils.deleteQuietly(dir); + + new BatchOutputWriter(dir); + + assertThat(dir).isDirectory().exists(); + } + + @Test + public void write_metadata() throws Exception { + File dir = temp.newFolder(); + BatchOutputWriter writer = new BatchOutputWriter(dir); + BatchReport.Metadata.Builder metadata = BatchReport.Metadata.newBuilder() + .setAnalysisDate(15000000L) + .setProjectKey("PROJECT_A") + .setRootComponentRef(1); + writer.writeMetadata(metadata.build()); + + BatchReport.Metadata read = ProtobufUtil.readFile(writer.getFileStructure().metadataFile(), BatchReport.Metadata.PARSER); + assertThat(read.getAnalysisDate()).isEqualTo(15000000L); + assertThat(read.getProjectKey()).isEqualTo("PROJECT_A"); + assertThat(read.getRootComponentRef()).isEqualTo(1); + } + + @Test + public void write_component() throws Exception { + File dir = temp.newFolder(); + BatchOutputWriter writer = new BatchOutputWriter(dir); + + // no data yet + assertThat(writer.hasComponentData(FileStructure.Domain.COMPONENT, 1)).isFalse(); + + // write data + BatchReport.Component.Builder component = BatchReport.Component.newBuilder() + .setRef(1) + .setLanguage("java") + .setPath("src/Foo.java") + .setUuid("UUID_A") + .setType(Constants.ComponentType.FILE) + .setIsTest(false) + .addChildRefs(5) + .addChildRefs(42); + writer.writeComponent(component.build()); + + assertThat(writer.hasComponentData(FileStructure.Domain.COMPONENT, 1)).isTrue(); + File file = writer.getFileStructure().fileFor(FileStructure.Domain.COMPONENT, 1); + assertThat(file).exists().isFile(); + BatchReport.Component read = ProtobufUtil.readFile(file, BatchReport.Component.PARSER); + assertThat(read.getRef()).isEqualTo(1); + assertThat(read.getChildRefsList()).containsOnly(5, 42); + assertThat(read.hasName()).isFalse(); + assertThat(read.getIsTest()).isFalse(); + assertThat(read.getUuid()).isEqualTo("UUID_A"); + } + + @Test + public void write_issues() throws Exception { + File dir = temp.newFolder(); + BatchOutputWriter writer = new BatchOutputWriter(dir); + + // no data yet + assertThat(writer.hasComponentData(FileStructure.Domain.ISSUES, 1)).isFalse(); + + // write data + BatchReport.Issue issue = BatchReport.Issue.newBuilder() + .setUuid("ISSUE_A") + .setLine(50) + .setMsg("the message") + .build(); + + writer.writeComponentIssues(1, Arrays.asList(issue)); + + assertThat(writer.hasComponentData(FileStructure.Domain.ISSUES, 1)).isTrue(); + File file = writer.getFileStructure().fileFor(FileStructure.Domain.ISSUES, 1); + assertThat(file).exists().isFile(); + BatchReport.Issues read = ProtobufUtil.readFile(file, BatchReport.Issues.PARSER); + assertThat(read.getComponentRef()).isEqualTo(1); + assertThat(read.getListCount()).isEqualTo(1); + } +} diff --git a/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/output/FileStructureTest.java b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/output/FileStructureTest.java new file mode 100644 index 00000000000..465e5a6301d --- /dev/null +++ b/sonar-batch-protocol/src/test/java/org/sonar/batch/protocol/output/FileStructureTest.java @@ -0,0 +1,74 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.batch.protocol.output; + +import org.apache.commons.io.FileUtils; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; + +import java.io.File; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.fail; + +public class FileStructureTest { + + @Rule + public TemporaryFolder temp = new TemporaryFolder(); + + @Test + public void fail_if_dir_does_not_exist() throws Exception { + File dir = temp.newFolder(); + FileUtils.deleteQuietly(dir); + try { + new FileStructure(dir); + fail(); + } catch (IllegalArgumentException e) { + assertThat(e).hasMessageContaining("Directory of analysis report does not exist"); + } + } + + @Test + public void fail_if_invalid_dir() throws Exception { + // not a dir but a file + File dir = temp.newFile(); + try { + new FileStructure(dir); + fail(); + } catch (IllegalArgumentException e) { + assertThat(e).hasMessageContaining("Directory of analysis report does not exist"); + } + } + + @Test + public void locate_files() throws Exception { + File dir = temp.newFolder(); + FileUtils.write(new File(dir, "metadata.pb"), "metadata content"); + FileUtils.write(new File(dir, "issues-3.pb"), "issues of component 3"); + FileUtils.write(new File(dir, "component-42.pb"), "details of component 42"); + + FileStructure structure = new FileStructure(dir); + assertThat(structure.metadataFile()).exists().isFile(); + assertThat(structure.fileFor(FileStructure.Domain.COMPONENT, 42)).exists().isFile(); + assertThat(structure.fileFor(FileStructure.Domain.ISSUES, 3)).exists().isFile(); + assertThat(structure.fileFor(FileStructure.Domain.ISSUES, 42)).doesNotExist(); + } +} diff --git a/sonar-batch-protocol/src/test/resources/org/sonar/batch/protocol/output/component/ReportComponentsTest/expected.json b/sonar-batch-protocol/src/test/resources/org/sonar/batch/protocol/output/component/ReportComponentsTest/expected.json new file mode 100644 index 00000000000..581bbc5ea23 --- /dev/null +++ b/sonar-batch-protocol/src/test/resources/org/sonar/batch/protocol/output/component/ReportComponentsTest/expected.json @@ -0,0 +1,43 @@ +{ + "analysisDate": "2012-12-12T00:00:00+0100", + "root": { + "batchId": 1, + "id": 11, + "snapshotId": 111, + "name": "Root project", + "type": "PRJ", + "children": [ + { + "batchId": 2, + "id": 22, + "snapshotId": 222, + "path": "module1", + "name": "Module", + "type": "MOD", + "children": [ + { + "batchId": 3, + "id": 33, + "snapshotId": 333, + "path": "src", + "name": "src", + "type": "DIR", + "children": [ + { + "batchId": 4, + "id": 44, + "snapshotId": 444, + "path": "Foo.java", + "name": "Foo.java", + "type": "FIL", + "languageKey": "java", + "isTest": true, + "children": [] + } + ] + } + ] + } + ] + } +}
\ No newline at end of file |