@Override public void childRemoved(final ConfiguredObject<?> object, final ConfiguredObject<?> child) { if(object.getCategoryClass() == Broker.class && child.getCategoryClass() == AccessControlProvider.class) { BrokerImpl.this.updateAccessControl(); } }
protected Class<? extends ConfiguredObject> getCategoryClass() { return _configuredObject.getCategoryClass(); }
@Override public String getCategory(final ConfiguredObject<?> managedObject) { return managedObject.getCategoryClass().getSimpleName(); }
@Override public String getCategory() { return _configuredObject.getCategoryClass().getSimpleName(); }
@Override public void bulkChangeStart(final ConfiguredObject<?> object) { if(object.getCategoryClass() == AccessControlProvider.class) { _bulkChanges.add(object); } }
@Override public void attributeSet(final ConfiguredObject<?> object, final String attributeName, final Object oldAttributeValue, final Object newAttributeValue) { if(object.getCategoryClass() == AccessControlProvider.class && !_bulkChanges.contains(object)) { BrokerImpl.this.updateAccessControl(); } }
@Override public void bulkChangeEnd(final ConfiguredObject<?> object) { if(object.getCategoryClass() == AccessControlProvider.class) { _bulkChanges.remove(object); BrokerImpl.this.updateAccessControl(); } } }
@Override public void childAdded(final ConfiguredObject<?> object, final ConfiguredObject<?> child) { if(object.getCategoryClass() == Broker.class && child.getCategoryClass() == AccessControlProvider.class) { child.addChangeListener(this); BrokerImpl.this.updateAccessControl(); } }
public OperationLogMessage(ConfiguredObject<?> object, String operation) { _hierarchy = AbstractMessageLogger.DEFAULT_LOG_HIERARCHY_PREFIX + "." + object.getCategoryClass().getSimpleName().toLowerCase() + ".operation"; _logMessage = object.getCategoryClass().getSimpleName() + "("+object.getName()+") : Operation " + operation; }
private List<Class<? extends ConfiguredObject>> calculateHierarchy(Class<? extends ConfiguredObject> category, Class<? extends ConfiguredObject> rootClass) { Class<? extends ConfiguredObject> managedCategoryClass = _root.getCategoryClass(); return calculateHierarchy(category, rootClass, managedCategoryClass, _model); }
private String buildHierarchicalCategoryName(final ConfiguredObject<?> configuredObject, final ConfiguredObject<?> significantAncestor) { LinkedList<String> hierarchicalName = new LinkedList<>(); ConfiguredObject<?> current = configuredObject; hierarchicalName.add(configuredObject.getCategoryClass().getSimpleName()); while (current != null && significantAncestor != current) { ConfiguredObject<?> parent = configuredObject.getParent(); hierarchicalName.add(0, parent.getCategoryClass().getSimpleName()); current = parent; } return hierarchicalName.stream().collect(Collectors.joining(".")); }
private <C extends ConfiguredObject> void unregisterChild(final C child) { Class categoryClass = child.getCategoryClass(); synchronized(_children) { _children.get(categoryClass).remove(child); _childrenById.get(categoryClass).remove(child.getId(), child); _childrenByName.get(categoryClass).remove(child.getName(), child); } }
public List<String> getPathAsList(final ConfiguredObject<?> object) { final List<Class<? extends ConfiguredObject>> hierarchy = _hierarchies.get(object.getCategoryClass()); List<String> pathElements = new ArrayList<>(); for (Class<? extends ConfiguredObject> ancestorClass : hierarchy) { pathElements.add(_model.getAncestor(ancestorClass, object).getName()); } return pathElements; }
@Override public LegacyConfiguredObject getParent(final String category) { ConfiguredObject<?> parent = _configuredObject.getParent(); if (category != null && !parent.getCategoryClass().getSimpleName().equalsIgnoreCase(category)) { throw new IllegalArgumentException(String.format( "ConfiguredObject of category '%s' has no parent of category %s", getCategory(), category)); } return new LegacyConfiguredObjectObject(parent); }
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response, final ConfiguredObject<?> managedObject) throws IOException, ServletException { sendJsonResponse(generateStructure(managedObject, managedObject.getCategoryClass(), true), request, response); }
private void applyRecursively(final ConfiguredObject<?> object) { Collection<Class<? extends ConfiguredObject>> childTypes = object.getModel().getChildTypes(object.getCategoryClass()); childTypes.forEach(childClass -> { Collection<? extends ConfiguredObject> children = object.getChildren(childClass); if (!children.isEmpty()) { children.forEach(this::processChild); } }); processAssociations(object); }
private void processChild(final ConfiguredObject<?> child) { reportStatisticsForObject(child); if (!child.getCategoryClass().getAnnotation(ManagedObject.class).managesChildren()) { applyRecursively(child); } }
@Override protected void validateChildDelete(final ConfiguredObject<?> child) { super.validateChildDelete(child); if(child instanceof AccessControlProvider && getChildren(AccessControlProvider.class).size() == 1) { String categoryName = child.getCategoryClass().getSimpleName(); throw new IllegalConfigurationException("The " + categoryName + " named '" + child.getName() + "' cannot be deleted as at least one " + categoryName + " must be present"); } }
private boolean managesChildren(final ConfiguredObject<?> object) { return managesChildren(object.getCategoryClass()) || managesChildren(object.getTypeClass()); }
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); }