Merge pull request #2392 from vighnesh1987/apache-thrift

Add Apache thrift support to generated? check
This commit is contained in:
Arfon Smith
2015-05-20 12:43:55 -05:00
9 changed files with 766 additions and 0 deletions

View File

@@ -67,6 +67,7 @@ module Linguist
compiled_cython_file? ||
generated_protocol_buffer_go? ||
generated_protocol_buffer? ||
generated_apache_thrift? ||
generated_jni_header? ||
generated_unity3d_meta? ||
vcr_cassette?
@@ -249,6 +250,16 @@ module Linguist
return lines[0].include?("Generated by the protocol buffer compiler. DO NOT EDIT!")
end
# Internal: Is the blob generated by Apache Thrift compiler?
#
# Returns true or false
def generated_apache_thrift?
return false unless ['.rb', '.py', '.go', '.js', '.m', '.java', '.h', '.cc', '.cpp'].include?(extname)
return false unless lines.count > 1
return lines[0].include?("Autogenerated by Thrift Compiler") || lines[1].include?("Autogenerated by Thrift Compiler")
end
# Internal: Is the blob a C/C++ header generated by the Java JNI tool javah?
#

View File

@@ -0,0 +1,18 @@
// Autogenerated by Thrift Compiler (1.0.0-dev)
// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
package linguist
import (
"bytes"
"fmt"
"git.apache.org/thrift.git/lib/go/thrift"
)
// (needed to ensure safety because of naive import list construction.)
var _ = thrift.ZERO
var _ = fmt.Printf
var _ = bytes.Equal
func init() {
}

View File

@@ -0,0 +1,396 @@
/**
* Autogenerated by Thrift Compiler (1.0.0-dev)
*
* DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
* @generated
*/
import org.apache.thrift.scheme.IScheme;
import org.apache.thrift.scheme.SchemeFactory;
import org.apache.thrift.scheme.StandardScheme;
import org.apache.thrift.scheme.TupleScheme;
import org.apache.thrift.protocol.TTupleProtocol;
import org.apache.thrift.protocol.TProtocolException;
import org.apache.thrift.EncodingUtils;
import org.apache.thrift.TException;
import org.apache.thrift.async.AsyncMethodCallback;
import org.apache.thrift.server.AbstractNonblockingServer.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.EnumMap;
import java.util.Set;
import java.util.HashSet;
import java.util.EnumSet;
import java.util.Collections;
import java.util.BitSet;
import java.nio.ByteBuffer;
import java.util.Arrays;
import javax.annotation.Generated;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
@Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2015-5-12")
public class PullRequest implements org.apache.thrift.TBase<PullRequest, PullRequest._Fields>, java.io.Serializable, Cloneable, Comparable<PullRequest> {
private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("PullRequest");
private static final org.apache.thrift.protocol.TField TITLE_FIELD_DESC = new org.apache.thrift.protocol.TField("title", org.apache.thrift.protocol.TType.STRING, (short)1);
private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
static {
schemes.put(StandardScheme.class, new PullRequestStandardSchemeFactory());
schemes.put(TupleScheme.class, new PullRequestTupleSchemeFactory());
}
public String title; // required
/** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
public enum _Fields implements org.apache.thrift.TFieldIdEnum {
TITLE((short)1, "title");
private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
static {
for (_Fields field : EnumSet.allOf(_Fields.class)) {
byName.put(field.getFieldName(), field);
}
}
/**
* Find the _Fields constant that matches fieldId, or null if its not found.
*/
public static _Fields findByThriftId(int fieldId) {
switch(fieldId) {
case 1: // TITLE
return TITLE;
default:
return null;
}
}
/**
* Find the _Fields constant that matches fieldId, throwing an exception
* if it is not found.
*/
public static _Fields findByThriftIdOrThrow(int fieldId) {
_Fields fields = findByThriftId(fieldId);
if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
return fields;
}
/**
* Find the _Fields constant that matches name, or null if its not found.
*/
public static _Fields findByName(String name) {
return byName.get(name);
}
private final short _thriftId;
private final String _fieldName;
_Fields(short thriftId, String fieldName) {
_thriftId = thriftId;
_fieldName = fieldName;
}
public short getThriftFieldId() {
return _thriftId;
}
public String getFieldName() {
return _fieldName;
}
}
// isset id assignments
public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
static {
Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
tmpMap.put(_Fields.TITLE, new org.apache.thrift.meta_data.FieldMetaData("title", org.apache.thrift.TFieldRequirementType.DEFAULT,
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
metaDataMap = Collections.unmodifiableMap(tmpMap);
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(PullRequest.class, metaDataMap);
}
public PullRequest() {
}
public PullRequest(
String title)
{
this();
this.title = title;
}
/**
* Performs a deep copy on <i>other</i>.
*/
public PullRequest(PullRequest other) {
if (other.isSetTitle()) {
this.title = other.title;
}
}
public PullRequest deepCopy() {
return new PullRequest(this);
}
@Override
public void clear() {
this.title = null;
}
public String getTitle() {
return this.title;
}
public PullRequest setTitle(String title) {
this.title = title;
return this;
}
public void unsetTitle() {
this.title = null;
}
/** Returns true if field title is set (has been assigned a value) and false otherwise */
public boolean isSetTitle() {
return this.title != null;
}
public void setTitleIsSet(boolean value) {
if (!value) {
this.title = null;
}
}
public void setFieldValue(_Fields field, Object value) {
switch (field) {
case TITLE:
if (value == null) {
unsetTitle();
} else {
setTitle((String)value);
}
break;
}
}
public Object getFieldValue(_Fields field) {
switch (field) {
case TITLE:
return getTitle();
}
throw new IllegalStateException();
}
/** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
public boolean isSet(_Fields field) {
if (field == null) {
throw new IllegalArgumentException();
}
switch (field) {
case TITLE:
return isSetTitle();
}
throw new IllegalStateException();
}
@Override
public boolean equals(Object that) {
if (that == null)
return false;
if (that instanceof PullRequest)
return this.equals((PullRequest)that);
return false;
}
public boolean equals(PullRequest that) {
if (that == null)
return false;
boolean this_present_title = true && this.isSetTitle();
boolean that_present_title = true && that.isSetTitle();
if (this_present_title || that_present_title) {
if (!(this_present_title && that_present_title))
return false;
if (!this.title.equals(that.title))
return false;
}
return true;
}
@Override
public int hashCode() {
List<Object> list = new ArrayList<Object>();
boolean present_title = true && (isSetTitle());
list.add(present_title);
if (present_title)
list.add(title);
return list.hashCode();
}
@Override
public int compareTo(PullRequest other) {
if (!getClass().equals(other.getClass())) {
return getClass().getName().compareTo(other.getClass().getName());
}
int lastComparison = 0;
lastComparison = Boolean.valueOf(isSetTitle()).compareTo(other.isSetTitle());
if (lastComparison != 0) {
return lastComparison;
}
if (isSetTitle()) {
lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.title, other.title);
if (lastComparison != 0) {
return lastComparison;
}
}
return 0;
}
public _Fields fieldForId(int fieldId) {
return _Fields.findByThriftId(fieldId);
}
public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
}
public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder("PullRequest(");
boolean first = true;
sb.append("title:");
if (this.title == null) {
sb.append("null");
} else {
sb.append(this.title);
}
first = false;
sb.append(")");
return sb.toString();
}
public void validate() throws org.apache.thrift.TException {
// check for required fields
// check for sub-struct validity
}
private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
try {
write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
} catch (org.apache.thrift.TException te) {
throw new java.io.IOException(te);
}
}
private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
try {
read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
} catch (org.apache.thrift.TException te) {
throw new java.io.IOException(te);
}
}
private static class PullRequestStandardSchemeFactory implements SchemeFactory {
public PullRequestStandardScheme getScheme() {
return new PullRequestStandardScheme();
}
}
private static class PullRequestStandardScheme extends StandardScheme<PullRequest> {
public void read(org.apache.thrift.protocol.TProtocol iprot, PullRequest struct) throws org.apache.thrift.TException {
org.apache.thrift.protocol.TField schemeField;
iprot.readStructBegin();
while (true)
{
schemeField = iprot.readFieldBegin();
if (schemeField.type == org.apache.thrift.protocol.TType.STOP) {
break;
}
switch (schemeField.id) {
case 1: // TITLE
if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
struct.title = iprot.readString();
struct.setTitleIsSet(true);
} else {
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
}
break;
default:
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
}
iprot.readFieldEnd();
}
iprot.readStructEnd();
// check for required fields of primitive type, which can't be checked in the validate method
struct.validate();
}
public void write(org.apache.thrift.protocol.TProtocol oprot, PullRequest struct) throws org.apache.thrift.TException {
struct.validate();
oprot.writeStructBegin(STRUCT_DESC);
if (struct.title != null) {
oprot.writeFieldBegin(TITLE_FIELD_DESC);
oprot.writeString(struct.title);
oprot.writeFieldEnd();
}
oprot.writeFieldStop();
oprot.writeStructEnd();
}
}
private static class PullRequestTupleSchemeFactory implements SchemeFactory {
public PullRequestTupleScheme getScheme() {
return new PullRequestTupleScheme();
}
}
private static class PullRequestTupleScheme extends TupleScheme<PullRequest> {
@Override
public void write(org.apache.thrift.protocol.TProtocol prot, PullRequest struct) throws org.apache.thrift.TException {
TTupleProtocol oprot = (TTupleProtocol) prot;
BitSet optionals = new BitSet();
if (struct.isSetTitle()) {
optionals.set(0);
}
oprot.writeBitSet(optionals, 1);
if (struct.isSetTitle()) {
oprot.writeString(struct.title);
}
}
@Override
public void read(org.apache.thrift.protocol.TProtocol prot, PullRequest struct) throws org.apache.thrift.TException {
TTupleProtocol iprot = (TTupleProtocol) prot;
BitSet incoming = iprot.readBitSet(1);
if (incoming.get(0)) {
struct.title = iprot.readString();
struct.setTitleIsSet(true);
}
}
}
}

View File

@@ -0,0 +1,60 @@
//
// Autogenerated by Thrift Compiler (1.0.0-dev)
//
// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
//
PullRequest = function(args) {
this.title = null;
if (args) {
if (args.title !== undefined) {
this.title = args.title;
}
}
};
PullRequest.prototype = {};
PullRequest.prototype.read = function(input) {
input.readStructBegin();
while (true)
{
var ret = input.readFieldBegin();
var fname = ret.fname;
var ftype = ret.ftype;
var fid = ret.fid;
if (ftype == Thrift.Type.STOP) {
break;
}
switch (fid)
{
case 1:
if (ftype == Thrift.Type.STRING) {
this.title = input.readString().value;
} else {
input.skip(ftype);
}
break;
case 0:
input.skip(ftype);
break;
default:
input.skip(ftype);
}
input.readFieldEnd();
}
input.readStructEnd();
return;
};
PullRequest.prototype.write = function(output) {
output.writeStructBegin('PullRequest');
if (this.title !== null && this.title !== undefined) {
output.writeFieldBegin('title', Thrift.Type.STRING, 1);
output.writeString(this.title);
output.writeFieldEnd();
}
output.writeFieldStop();
output.writeStructEnd();
return;
};

View File

@@ -0,0 +1,176 @@
/**
* Autogenerated by Thrift Compiler (1.0.0-dev)
*
* DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
* @generated
*/
#import <Foundation/Foundation.h>
#import "TProtocol.h"
#import "TApplicationException.h"
#import "TProtocolException.h"
#import "TProtocolUtil.h"
#import "TProcessor.h"
#import "TObjective-C.h"
#import "TBase.h"
#import "linguist.h"
@implementation PullRequest
- (id) init
{
self = [super init];
#if TARGET_OS_IPHONE || (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
#endif
return self;
}
- (id) initWithTitle: (NSString *) title
{
self = [super init];
__title = [title retain_stub];
__title_isset = YES;
return self;
}
- (id) initWithCoder: (NSCoder *) decoder
{
self = [super init];
if ([decoder containsValueForKey: @"title"])
{
__title = [[decoder decodeObjectForKey: @"title"] retain_stub];
__title_isset = YES;
}
return self;
}
- (void) encodeWithCoder: (NSCoder *) encoder
{
if (__title_isset)
{
[encoder encodeObject: __title forKey: @"title"];
}
}
- (NSUInteger) hash
{
NSUInteger hash = 17;
hash = (hash * 31) ^ __title_isset ? 2654435761 : 0;
if (__title_isset)
{
hash = (hash * 31) ^ [__title hash];
}
return hash;
}
- (BOOL) isEqual: (id) anObject
{
if (self == anObject) {
return YES;
}
if (![anObject isKindOfClass:[PullRequest class]]) {
return NO;
}
PullRequest *other = (PullRequest *)anObject;
if ((__title_isset != other->__title_isset) ||
(__title_isset && ((__title || other->__title) && ![__title isEqual:other->__title]))) {
return NO;
}
return YES;
}
- (void) dealloc
{
[__title release_stub];
[super dealloc_stub];
}
- (NSString *) title {
return [[__title retain_stub] autorelease_stub];
}
- (void) setTitle: (NSString *) title {
[title retain_stub];
[__title release_stub];
__title = title;
__title_isset = YES;
}
- (BOOL) titleIsSet {
return __title_isset;
}
- (void) unsetTitle {
[__title release_stub];
__title = nil;
__title_isset = NO;
}
- (void) read: (id <TProtocol>) inProtocol
{
NSString * fieldName;
int fieldType;
int fieldID;
[inProtocol readStructBeginReturningName: NULL];
while (true)
{
[inProtocol readFieldBeginReturningName: &fieldName type: &fieldType fieldID: &fieldID];
if (fieldType == TType_STOP) {
break;
}
switch (fieldID)
{
case 1:
if (fieldType == TType_STRING) {
NSString * fieldValue = [inProtocol readString];
[self setTitle: fieldValue];
} else {
[TProtocolUtil skipType: fieldType onProtocol: inProtocol];
}
break;
default:
[TProtocolUtil skipType: fieldType onProtocol: inProtocol];
break;
}
[inProtocol readFieldEnd];
}
[inProtocol readStructEnd];
}
- (void) write: (id <TProtocol>) outProtocol {
[outProtocol writeStructBeginWithName: @"PullRequest"];
if (__title_isset) {
if (__title != nil) {
[outProtocol writeFieldBeginWithName: @"title" type: TType_STRING fieldID: 1];
[outProtocol writeString: __title];
[outProtocol writeFieldEnd];
}
}
[outProtocol writeFieldStop];
[outProtocol writeStructEnd];
}
- (void) validate {
// check for required fields
}
- (NSString *) description {
NSMutableString * ms = [NSMutableString stringWithString: @"PullRequest("];
[ms appendString: @"title:"];
[ms appendFormat: @"\"%@\"", __title];
[ms appendString: @")"];
return [NSString stringWithString: ms];
}
@end
@implementation linguistConstants
+ (void) initialize {
}
@end

View File

@@ -0,0 +1,83 @@
#
# Autogenerated by Thrift Compiler (1.0.0-dev)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#
# options string: py
#
from thrift.Thrift import TType, TMessageType, TException, TApplicationException
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol, TProtocol
try:
from thrift.protocol import fastbinary
except:
fastbinary = None
class PullRequest:
"""
Attributes:
- title
"""
thrift_spec = (
None, # 0
(1, TType.STRING, 'title', None, None, ), # 1
)
def __init__(self, title=None,):
self.title = title
def read(self, iprot):
if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
return
iprot.readStructBegin()
while True:
(fname, ftype, fid) = iprot.readFieldBegin()
if ftype == TType.STOP:
break
if fid == 1:
if ftype == TType.STRING:
self.title = iprot.readString()
else:
iprot.skip(ftype)
else:
iprot.skip(ftype)
iprot.readFieldEnd()
iprot.readStructEnd()
def write(self, oprot):
if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
return
oprot.writeStructBegin('PullRequest')
if self.title is not None:
oprot.writeFieldBegin('title', TType.STRING, 1)
oprot.writeString(self.title)
oprot.writeFieldEnd()
oprot.writeFieldStop()
oprot.writeStructEnd()
def validate(self):
return
def __hash__(self):
value = 17
value = (value * 31) ^ hash(self.title)
return value
def __repr__(self):
L = ['%s=%r' % (key, value)
for key, value in self.__dict__.iteritems()]
return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
def __eq__(self, other):
return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
def __ne__(self, other):
return not (self == other)

View File

@@ -0,0 +1,9 @@
#
# Autogenerated by Thrift Compiler (1.0.0-dev)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#
require 'thrift'
require 'linguist_types'

View File

@@ -0,0 +1,5 @@
struct PullRequest {
1: string title
}

View File

@@ -218,6 +218,14 @@ class TestBlob < Minitest::Test
assert sample_blob("Python/protocol_buffer_pb2.py").generated?
assert sample_blob("Go/api.pb.go").generated?
# Apache Thrift generated code
assert sample_blob("Python/gen-py-linguist-thrift.py").generated?
assert sample_blob("Go/gen-go-linguist-thrift.go").generated?
assert sample_blob("Java/gen-java-linguist-thrift.java").generated?
assert sample_blob("JavaScript/gen-js-linguist-thrift.js").generated?
assert sample_blob("Ruby/gen-rb-linguist-thrift.rb").generated?
assert sample_blob("Objective-C/gen-cocoa-linguist-thrift.m").generated?
# Generated JNI
assert sample_blob("C/jni_layer.h").generated?