@Override public final ConfiguredObjectFactory getObjectFactory() { return getModel().getObjectFactory(); }
public final <T> T getAncestor(final Class<T> clazz) { return getModel().getAncestor(clazz, this); }
private ConfiguredObjectTypeRegistry getTypeRegistry() { return getModel().getTypeRegistry(); }
private void populateChildTypeMaps() { if(!(_children.isEmpty() && _childrenById.isEmpty() && _childrenByName.isEmpty())) { throw new IllegalStateException("Cannot update the child type maps on a class with pre-existing child types"); } for (Class<? extends ConfiguredObject> childClass : getModel().getChildTypes(getCategoryClass())) { _children.put(childClass, new CopyOnWriteArrayList<ConfiguredObject<?>>()); _childrenById.put(childClass, new ConcurrentHashMap<UUID, ConfiguredObject<?>>()); _childrenByName.put(childClass, new ConcurrentHashMap<String, ConfiguredObject<?>>()); } }
@Override public Set<String> getContextKeys(final boolean excludeSystem) { Map<String,String> inheritedContext = new HashMap<>(getTypeRegistry().getDefaultContext()); if(!excludeSystem) { inheritedContext.putAll(System.getenv()); inheritedContext.putAll((Map) System.getProperties()); } generateInheritedContext(getModel(), this, inheritedContext); return Collections.unmodifiableSet(inheritedContext.keySet()); }
@Override public <Y extends ConfiguredObject<Y>> Y findConfiguredObject(Class<Y> clazz, String name) { Collection<Y> reachable = getModel().getReachableObjects(this, clazz); for(Y candidate : reachable) { if(candidate.getName().equals(name)) { return candidate; } } return null; }
@Override public Map<String, UUID> getParents() { Map<String, UUID> parents = new LinkedHashMap<>(); Class<? extends ConfiguredObject> parentClass = getModel().getParentType(getCategoryClass()); ConfiguredObject parent = (ConfiguredObject) getParent(); if(parent != null) { parents.put(parentClass.getSimpleName(), parent.getId()); } return parents; }
private void checkReferencesOnDelete(final ConfiguredObject<?> referrer, final ConfiguredObject<?> referee) { if (!managesChildren(referee)) { getModel().getChildTypes(referee.getCategoryClass()) .forEach(childClass -> referee.getChildren(childClass) .forEach(child -> checkReferencesOnDelete(referrer, child))); } checkReferences(referrer, referee); }
protected void applyToChildren(Action<ConfiguredObject<?>> action) { for (Class<? extends ConfiguredObject> childClass : getModel().getChildTypes(getCategoryClass())) { Collection<? extends ConfiguredObject> children = getChildren(childClass); if (children != null) { for (ConfiguredObject<?> child : children) { action.performAction(child); } } } }
return getModel().getTypeRegistry() .getAttributes(referrer.getClass()) .stream()
getModel().getChildTypes(referrer.getCategoryClass()) .forEach(childClass -> referrer.getChildren(childClass) .stream()