private void loadForeignMarshallables(GlobalConfiguration globalCfg) { log.trace("Loading user defined externalizers"); for (Map.Entry<Integer, AdvancedExternalizer<?>> config : globalCfg.serialization().advancedExternalizers().entrySet()) { AdvancedExternalizer<?> ext = config.getValue(); // If no XML or programmatic config, id in annotation is used // as long as it's not default one (meaning, user did not set it). // If XML or programmatic config in use ignore @Marshalls annotation and use value in config. Integer id = ext.getId(); if (config.getKey() == null && id == null) throw new CacheConfigurationException( String.format( "No advanced externalizer identifier set for externalizer %s", ext.getClass().getName())); else if (config.getKey() != null) id = config.getKey(); id = checkForeignIdLimit(id, ext); updateExtReadersWritersWithTypes( new ForeignExternalizerAdapter(id, ext), generateForeignReaderIndex(id)); } }
void addInternalExternalizer(AdvancedExternalizer<?> ext) { int id = checkInternalIdLimit(ext.getId(), ext); updateExtReadersWritersWithTypes(new ExternalizerAdapter(id, ext)); }