### Question:
ExtendedJsonField extends TextField implements ResourceLoaderAware { protected TokenizerFactory getTokenizerFactory(final Map<String,String> args) { return new ExtendedJsonTokenizerFactory(args); }  @Override IndexableField createField(final SchemaField field, final Object value,
                                    final float boost); @Override Analyzer getQueryAnalyzer(); @Override SortField getSortField(final SchemaField field, final boolean reverse); @Override void write(final TextResponseWriter writer, final String name, final IndexableField f); @Override Query getFieldQuery(final QParser parser, final SchemaField field,
                             final String externalVal); @Override Query getRangeQuery(final QParser parser, final SchemaField field,
                             final String part1, final String part2,
                             final boolean minInclusive, final boolean maxInclusive); @Override Analyzer getMultiTermAnalyzer(); @Override boolean getAutoGeneratePhraseQueries(); Map<String, Datatype> getDatatypes(); @Override void inform(final ResourceLoader resourceLoader); static String DATATYPECONFIG_KEY; }### Answer:
@Test public void testSirenFieldAnalyzer() throws Exception { final IndexSchema schema = h.getCore().getLatestSchema(); final SchemaField ntriple = schema.getField(JSON_FIELD); final FieldType tmp = ntriple.getType(); assertTrue(tmp.getAnalyzer() instanceof TokenizerChain); final TokenizerChain ts = (TokenizerChain) tmp.getAnalyzer(); assertNotNull(ts.getTokenizerFactory()); assertTrue(ts.getTokenizerFactory() instanceof ExtendedJsonTokenizerFactory); assertNotNull(ts.getTokenFilterFactories()); assertEquals(3, ts.getTokenFilterFactories().length); assertTrue(ts.getTokenFilterFactories()[0] instanceof DatatypeAnalyzerFilterFactory); assertTrue(ts.getTokenFilterFactories()[1] instanceof PositionAttributeFilterFactory); assertTrue(ts.getTokenFilterFactories()[2] instanceof SirenPayloadFilterFactory); }
@Test public void testSirenFieldDatatypeAnalyzer() throws Exception { final IndexSchema schema = h.getCore().getLatestSchema(); final SchemaField ntriple = schema.getField(JSON_FIELD); final FieldType tmp = ntriple.getType(); TokenizerChain ts = (TokenizerChain) tmp.getAnalyzer(); assertTrue(ts.getTokenFilterFactories()[0] instanceof DatatypeAnalyzerFilterFactory); final DatatypeAnalyzerFilterFactory f = (DatatypeAnalyzerFilterFactory) ts.getTokenFilterFactories()[0]; assertNotNull(f.getDatatypeAnalyzers()); assertEquals(9, f.getDatatypeAnalyzers().size()); assertNotNull(f.getDatatypeAnalyzers().get("http: ts = (TokenizerChain) f.getDatatypeAnalyzers().get("http: assertNotNull(ts.getTokenizerFactory()); assertTrue(ts.getTokenizerFactory() instanceof WhitespaceTokenizerFactory); assertNotNull(f.getDatatypeAnalyzers().get("http: ts = (TokenizerChain) f.getDatatypeAnalyzers().get("http: assertNotNull(ts.getTokenizerFactory()); assertTrue(ts.getTokenizerFactory() instanceof UAX29URLEmailTokenizerFactory); assertNotNull(f.getDatatypeAnalyzers().get("http: assertTrue(f.getDatatypeAnalyzers().get("http: final IntNumericAnalyzer a = (IntNumericAnalyzer) f.getDatatypeAnalyzers().get("http: assertEquals(8, a.getPrecisionStep()); assertEquals(32, a.getNumericParser().getValueSize()); assertEquals(NumericType.INT, a.getNumericParser().getNumericType()); }