private void loadCustomExternalizers(XMap element, boolean custom) { externalizersConfiguration = element.getOne("externalizers/configuration"); for (XMap externalizer : element.getAll("externalizers/externalizer")) { String externalizerType = externalizer.get("@type"); for (XMap include : externalizer.getAll("include")) { String type = include.get("@type"); if (type != null) externalizersByType.put(type, EXTERNALIZER_FACTORY.getInstance(externalizerType, this)); else { String instanceOf = include.get("@instance-of"); if (instanceOf != null) externalizersByInstanceOf.put(instanceOf, externalizerType); else { String annotatedWith = include.get("@annotated-with"); if (annotatedWith == null) throw new GraniteConfigException( "Element 'include' has no attribute 'type', 'instance-of' or 'annotated-with'"); externalizersByAnnotatedWith.put(annotatedWith, externalizerType); } } } } }
public Externalizer setExternalizersByType(String type, String externalizerType) { return externalizersByType.put(type, EXTERNALIZER_FACTORY.getInstance(externalizerType, this)); }