@Override public Object get() { Map<String, Map<String, Object>> entities = Maps.newLinkedHashMap(); for (EntityMeta meta : entityMetaRegistry.getEntities()) { Map data = Maps.newHashMap(); entities.put(meta.getEntityName(), data); } Theme theme = context.getTheme(); if (theme != null) { addAddons(entities, theme.getDefinition().getAddons(), AddonSource.THEME); addModels(entities, theme.getDefinition().getModels()); addImageFormats(entities, theme.getDefinition().getImageFormats(), AddonSource.THEME); addTypes(entities, theme.getDefinition().getProductTypes()); } addAddons(entities, platformSettings.getAddons(), AddonSource.PLATFORM); addImageFormats(entities, platformSettings.getImages(), AddonSource.PLATFORM); addModels(entities, platformSettings.getModels()); for (String entity : entities.keySet()) { for (EntityConfigurationContributor contributor : contributors.values()) { if (contributor.contributesTo().equals(entity)) { contributor.contribute(entities.get(entity)); } } } return entities; }