@Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("ThriftType"); sb.append("{"); sb.append(protocolType).append(" ").append(javaType); if (structMetadata != null) { sb.append(" ").append(getStructMetadata().getStructClass().getName()); } else if (keyTypeReference != null) { sb.append(" keyTypeReference=").append(keyTypeReference); sb.append(", valueTypeReference=").append(valueTypeReference); } else if (valueTypeReference != null) { sb.append(" valueTypeReference=").append(valueTypeReference); } sb.append('}'); return sb.toString(); } }
public ThriftContext(String namespace, List<String> includes, List<ThriftType> thriftTypes, List<ThriftServiceMetadata> thriftServices, Map<String, String> namespaceMap) { this.namespace = namespace; this.includes = includes; for (ThriftType t: thriftTypes) { switch (t.getProtocolType()) { case STRUCT: this.thriftStructs.add(t.getStructMetadata()); break; case ENUM: this.thriftEnums.add(t.getEnumMetadata()); break; default: throw new IllegalStateException("Unknown protocol type: " + t.getProtocolType()); } } this.thriftServices = thriftServices; customNamespaces = namespaceMap; }
private boolean verifyStruct(ThriftType t, boolean quiet) { if (t.getProtocolType() == ThriftProtocolType.ENUM) { knownTypes.add(t); return true; } ThriftStructMetadata metadata = t.getStructMetadata(); boolean ok = true; knownTypes.add(t); for (ThriftFieldMetadata fieldMetadata: metadata.getFields(FieldKind.THRIFT_FIELD)) { if (!recursive && fieldMetadata.isTypeReferenceRecursive()) { continue; } boolean fieldOk = verifyField(fieldMetadata.getThriftType()); if (!fieldOk) { ok = false; if (!quiet) { LOG.error("Unknown type %s in %s.%s", thriftTypeRenderer.toString(fieldMetadata.getThriftType()), metadata.getStructName(), fieldMetadata.getName()); } } } if (!ok) { knownTypes.remove(t); } return ok; }
@Test public void testMatchByJavaNameWithThriftNameOverride() throws Exception { ThriftCatalog catalog = readCodecManager.getCatalog(); ThriftType thriftType = catalog.getThriftType(BonkConstructorNameOverride.class); ThriftStructMetadata structMetadata = thriftType.getStructMetadata(); assertEquals(structMetadata.getField(1).getName(), "myMessage"); assertEquals(structMetadata.getField(2).getName(), "myType"); BonkConstructorNameOverride bonk = new BonkConstructorNameOverride("message", 42); testRoundTripSerialize(bonk, new TCompactProtocol.Factory()); }
return factory.generateThriftTypeCodec(ThriftCodecManager.this, type.getStructMetadata());
public String toString(ThriftType t) { switch (t.getProtocolType()) { case BOOL: return "bool"; case BYTE: return "byte"; case DOUBLE: return "double"; case I16: return "i16"; case I32: return "i32"; case I64: return "i64"; case ENUM: return prefix(t) + t.getEnumMetadata().getEnumName(); case MAP: return "map<" + toString(t.getKeyTypeReference().get()) + ", " + toString(t.getValueTypeReference().get()) + ">"; case SET: return "set<" + toString(t.getValueTypeReference().get()) + ">"; case LIST: return "list<" + toString(t.getValueTypeReference().get()) + ">"; // void is encoded as a struct case STRUCT: return t.equals(ThriftType.VOID) ? "void" : prefix(t) + t.getStructMetadata().getStructName(); case STRING: return "string"; case BINARY: return "binary"; } throw new IllegalStateException("Bad protocol type" + t.getProtocolType()); }