private static boolean isEqualEnums(Schema s1, Schema s2) { List<String> symbols1 = s1.getEnumSymbols(); List<String> symbols2 = s2.getEnumSymbols(); if (symbols1.size() != symbols2.size()) { return false; } else { Collections.sort(symbols1); Collections.sort(symbols2); return symbols1.equals(symbols2); } }
public EnumConverter(String fieldName, boolean nullable, String sourceType, Schema schemaNode) { super(fieldName, nullable, sourceType); this.enumSet.addAll(schemaNode.getEnumSymbols()); this.enumName = schemaNode.getType().getName(); this.schema = schemaNode; }
/** * Processes enum type. * * @param schemaNode schema for current type. * @return generated value for input enum type. */ private Object processEnum(Schema schemaNode) { GenericEnumSymbol result = new GenericData.EnumSymbol(schemaNode, schemaNode.getEnumSymbols().get(0)); return result; }
protected void processEnum(Schema schema, String template) { VelocityContext context = new VelocityContext(); List<String> symbols = schema.getEnumSymbols(); context.put("schema", schema); context.put("symbols", symbols); context.put("StyleUtils", StyleUtils.class); context.put("namespacePrefix", namespacePrefix); StringWriter writer = new StringWriter(); engine.getTemplate(template).merge(context, writer); appendResult(writer.toString(), true); }
static String[] getDomain(Schema fieldSchema) { if (fieldSchema.getType() == Schema.Type.ENUM) { return fieldSchema.getEnumSymbols().toArray(new String[] {}); } else if (fieldSchema.getType() == Schema.Type.UNION) { List<Schema> unionSchemas = fieldSchema.getTypes(); if (unionSchemas.size() == 1) { return getDomain(unionSchemas.get(0)); } else if (unionSchemas.size() == 2) { Schema s1 = unionSchemas.get(0); Schema s2 = unionSchemas.get(1); if (s1.getType() == Schema.Type.NULL) return getDomain(s2); else if (s2.getType() == Schema.Type.NULL) return getDomain(s1); } } throw new IllegalArgumentException("Cannot get domain from field: " + fieldSchema); }
/** Called to read an enum value. May be overridden for alternate enum * representations. By default, returns a GenericEnumSymbol. */ protected Object readEnum(Schema expected, Decoder in) throws IOException { return createEnum(expected.getEnumSymbols().get(in.readEnum()), expected); }
/** Called to read an enum value. May be overridden for alternate enum * representations. By default, returns a GenericEnumSymbol. */ protected Object readEnum(Schema expected, Decoder in) throws IOException { return createEnum(expected.getEnumSymbols().get(in.readEnum()), expected); }
private Object nextValue(Schema s, int column) throws IOException { Object v = values[column].nextValue(); switch (s.getType()) { case ENUM: return model.createEnum(s.getEnumSymbols().get((Integer)v), s); case FIXED: return model.createFixed(null, ((ByteBuffer)v).array(), s); } return v; }
private SchemaCompatibilityResult checkReaderEnumContainsAllWriterEnumSymbols( final Schema reader, final Schema writer, final Deque<String> location) { SchemaCompatibilityResult result = SchemaCompatibilityResult.compatible(); location.addFirst("symbols"); final Set<String> symbols = new TreeSet<>(writer.getEnumSymbols()); symbols.removeAll(reader.getEnumSymbols()); if (!symbols.isEmpty()) { if(reader.getEnumDefault() != null && reader.getEnumSymbols().contains(reader.getEnumDefault())) { symbols.clear(); result = SchemaCompatibilityResult.compatible(); } else { result = SchemaCompatibilityResult.incompatible( SchemaIncompatibilityType.MISSING_ENUM_SYMBOLS, reader, writer, symbols.toString(), asList(location)); } } // POP "symbols" literal location.removeFirst(); return result; }
List<String> newEnumSymbols = newSchema.getEnumSymbols(); List<String> oldEnumSymbols = oldSchema.getEnumSymbols();
if (st == Schema.Type.ENUM) { o.append(",\"symbols\":["); for (String enumSymbol: s.getEnumSymbols()) { if (! firstTime) o.append(','); else firstTime = false; o.append('"').append(enumSymbol).append('"');
if (st == Schema.Type.ENUM) { o.append(",\"symbols\":["); for (String enumSymbol: s.getEnumSymbols()) { if (! firstTime) o.append(','); else firstTime = false; o.append('"').append(enumSymbol).append('"');
List<String> ws = w.getEnumSymbols(); List<String> rs = r.getEnumSymbols(); if (ws.size() != rs.size()) return false; int i = 0;
List<String> symbols = schema.getEnumSymbols(); return new GenericData.EnumSymbol (schema, symbols.get(random.nextInt(symbols.size())));
@Override void genSourceData() { Random r = newRandom(); Schema eSchema = writeSchema.getField("f").schema(); sourceData = new GenericRecord[count]; for (int i = 0; i < sourceData.length; i++) { GenericRecord rec = new GenericData.Record(writeSchema); int tag = r.nextInt(2); rec.put("f", GenericData.get().createEnum(eSchema.getEnumSymbols().get(tag), eSchema)); sourceData[i] = rec; } } }
case ENUM: newSchema = Schema.createEnum(terminal.getName(), copyDocs ? terminal.getDoc() : null, terminal.getNamespace(), terminal.getEnumSymbols()); break; case FIXED:
if (aliases.containsKey(name)) result = Schema.createEnum(aliases.get(name).full, s.getDoc(), null, s.getEnumSymbols(), s.getEnumDefault()); break; case ARRAY:
case ENUM: newSchema = Schema.createEnum(terminal.getName(), terminal.getDoc(), terminal.getNamespace(), terminal.getEnumSymbols(), terminal.getEnumDefault()); break; case FIXED:
case ENUM: if (!isEnum(datum)) return false; return schema.getEnumSymbols().contains(datum.toString()); case ARRAY: if (!(isArray(datum))) return false;
case ENUM: if (!isEnum(datum)) return false; return schema.getEnumSymbols().contains(datum.toString()); case ARRAY: if (!(isArray(datum))) return false;