@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;
}