public StatisticsReportingTask(final ConfiguredObject<?> root, final Subject subject) { _root = root; _typeRegistry = root.getModel().getTypeRegistry(); _subject = subject; }
@Override public Collection<LegacyConfiguredObject> getChildren(final String category) { Class<? extends ConfiguredObject> categoryClass = getRequestCategoryClass(category.toLowerCase(), _configuredObject.getModel()); return _configuredObject.getChildren(categoryClass) .stream() .map(LegacyConfiguredObjectObject::new) .collect(Collectors.toSet()); }
private Class<? extends ConfiguredObject> getConfiguredClass(HttpServletRequest request, ConfiguredObject<?> managedObject) { final String[] servletPathElements = request.getServletPath().split("/"); String categoryName = servletPathElements[servletPathElements.length-1]; Model model = managedObject.getModel(); for(Class<? extends ConfiguredObject> category : model.getSupportedCategories()) { if(category.getSimpleName().toLowerCase().equals(categoryName)) { return category; } } return null; } }
private ConfiguredObjectAttribute<?, ?> getConfiguredObjectAttribute(final String name) { return _configuredObject.getModel() .getTypeRegistry() .getAttributeTypes(_configuredObject.getClass()) .get(name); } }
@Override public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable { if(method.getName().equals("getParent") && (args == null || args.length == 0)) { return _parent; } else if(method.getName().equals("getCategoryClass")) { return _category; } else if(method.getName().equals("getModel") && (args == null || args.length == 0)) { return _parent.getModel(); } return super.invoke(proxy, method, args); }
private Class<? extends ConfiguredObject> findAncestorCategoryBySimpleClassName(String targetCategorySimpleClassName, Class<? extends ConfiguredObject> objectCategory) { if (targetCategorySimpleClassName.equals(objectCategory.getSimpleName().toLowerCase())) { return objectCategory; } Class<? extends ConfiguredObject> parentCategory = _object.getModel().getParentType(objectCategory); if(parentCategory != null) { Class<? extends ConfiguredObject> targetCategoryClass = findAncestorCategoryBySimpleClassName(targetCategorySimpleClassName, parentCategory); if (targetCategoryClass != null) { return targetCategoryClass; } } return null; } }
private Set<Protocol> getPortProtocolsAttribute(Map<String, Object> attributes) { Object object = attributes.get(Port.PROTOCOLS); if (object == null) { return null; } Model model = _parent.getModel(); ConfiguredObjectTypeRegistry typeRegistry = model.getTypeRegistry(); Map<String, ConfiguredObjectAttribute<?, ?>> attributeTypes = typeRegistry.getAttributeTypes(Port.class); ConfiguredSettableAttribute protocolsAttribute = (ConfiguredSettableAttribute) attributeTypes.get(Port.PROTOCOLS); return (Set<Protocol>) protocolsAttribute.convert(object,_parent); }
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 Collection<ConfiguredObject<?>> getTargetObjects(final ConfiguredObject<?> root, final String category, final List<String> path, final Predicate<ConfiguredObject<?>> filterPredicate) { final ConfiguredObjectFinder finder = getConfiguredObjectFinder(root); final Class<? extends ConfiguredObject> configuredClass = getRequestCategoryClass(category, root.getModel()); Collection<ConfiguredObject<?>> targetObjects = finder.findObjectsFromPath(path, getHierarchy(finder, configuredClass), true); if (targetObjects == null) { targetObjects = Collections.emptySet(); } else if (filterPredicate != null) { targetObjects = targetObjects.stream().filter(filterPredicate).collect(Collectors.toList()); } return targetObjects; }
@Override protected void doGet(final HttpServletRequest request, final HttpServletResponse response, final ConfiguredObject<?> managedObject) throws ServletException, IOException { response.setContentType("application/json"); sendCachingHeadersOnResponse(response); response.setStatus(HttpServletResponse.SC_OK); ConfiguredObjectFinder finder = getConfiguredObjectFinder(managedObject); Map<String, Map> classToDataMap = new TreeMap<>(); for (Class<? extends ConfiguredObject> clazz : finder.getManagedCategories()) { classToDataMap.put(clazz.getSimpleName(), processCategory(clazz, managedObject.getModel())); } final OutputStream stream = getOutputStream(request, response); ObjectMapper mapper = new ObjectMapper(); mapper.configure(SerializationFeature.INDENT_OUTPUT, true); mapper.writeValue(stream, classToDataMap); response.setContentType("application/json"); response.setStatus(HttpServletResponse.SC_OK); }
private Map<UUID, Map<String, SortedSet<ConfiguredObjectRecord>>> createChildMap() Model model = _parent.getModel(); Map<UUID, Map<String, SortedSet<ConfiguredObjectRecord>>> map = new HashMap<>();
static String interpolate(ConfiguredObject<?> object, String value) { if(object == null) { return value; } else { Map<String, String> inheritedContext = new HashMap<String, String>(); generateInheritedContext(object.getModel(), object, inheritedContext); return Strings.expand(value, false, JSON_SUBSTITUTION_RESOLVER, getOwnAttributeResolver(object), getAncestorAttributeResolver(object), new Strings.MapResolver(inheritedContext), Strings.JAVA_SYS_PROPS_RESOLVER, Strings.ENV_VARS_RESOLVER, object.getModel().getTypeRegistry().getDefaultContextResolver()); } }
private void applyRecursively(final ConfiguredObject<?> object, final RecursiveAction<ConfiguredObject<?>> action, final HashSet<ConfiguredObject<?>> visited) { if(!visited.contains(object)) { visited.add(object); action.performAction(object); if (action.applyToChildren(object)) { for (Class<? extends ConfiguredObject> childClass : object.getModel().getChildTypes(object.getCategoryClass())) { Collection<? extends ConfiguredObject> children = object.getChildren(childClass); if (children != null) { for (ConfiguredObject<?> child : children) { applyRecursively(child, action, visited); } } } } } }
@Override public void init(ConfiguredObject<?> parent) { assertState(State.CLOSED); _parent = parent; _classNameMapping = generateClassNameMap(_parent.getModel(), _rootClass); FileBasedSettings fileBasedSettings = (FileBasedSettings) _parent; setup(parent.getName(), fileBasedSettings.getStorePath(), parent.getContextValue(String.class, SystemConfig.POSIX_FILE_PERMISSIONS), Collections.emptyMap()); changeState(State.CLOSED, State.CONFIGURED); }
private Map<String, Object> generateStructure(ConfiguredObject<?> object, Class<? extends ConfiguredObject> clazz, final boolean includeAssociated) { Map<String, Object> structure = new LinkedHashMap<>(); structure.put("id", object.getId()); structure.put("name", object.getName()); for(Class<? extends ConfiguredObject> childClass : object.getModel().getChildTypes(clazz)) { addChildrenToStructure(structure, childClass, object.getChildren(childClass)); } if(includeAssociated) { ConfiguredObjectFinder finder = getConfiguredObjectFinder(object); for(Class<? extends ConfiguredObject> childClass : finder.getAssociatedChildCategories()) { addChildrenToStructure(structure, childClass, finder.getAssociatedChildren(childClass)); } } return structure; }
public ConfiguredObjectFinder(final ConfiguredObject<?> root) { _root = root; _model = root.getModel(); final Class<? extends ConfiguredObject> managedCategory = root.getCategoryClass(); addManagedHierarchies(managedCategory, managedCategory); for (ConfiguredObjectOperation operation : _model.getTypeRegistry().getOperations(managedCategory).values()) { if (operation.isAssociateAsIfChildren() && returnsCollectionOfConfiguredObjects(operation)) { Class<? extends ConfiguredObject> associatedChildCategory = (getCollectionMemberType((ParameterizedType) operation.getGenericReturnType())); _associatedChildrenOperations.put(associatedChildCategory, operation); addManagedHierarchies(associatedChildCategory, associatedChildCategory); } } }
@Override protected RequestType getRequestType(final ManagementRequest request) throws ManagementException { final ConfiguredObject<?> root = request.getRoot(); if (root == null) { final String message = String.format("No HTTP Management alias mapping found for '%s'", request.getRequestURL()); LOGGER.info(message); throw createNotFoundManagementException(message); } final ConfiguredObjectFinder finder = getConfiguredObjectFinder(root); final String category = request.getCategory(); final Class<? extends ConfiguredObject> configuredClass = getRequestCategoryClass(category, root.getModel()); final Class<? extends ConfiguredObject>[] hierarchy = getHierarchy(finder, configuredClass); return getManagementRequestType(request.getMethod(), category, request.getPath(), hierarchy); }
public NameDependency(final Class<X> clazz, final String attributeName, final String attrValue) { super(clazz, attributeName); _name = attrValue; }
@Override public void childAdded(ConfiguredObject<?> object, ConfiguredObject<?> child) { if (!object.managesChildStorage()) { if(object.isDurable() && child.isDurable()) { Model model = child.getModel(); Class<? extends ConfiguredObject> parentType = model.getParentType(child.getCategoryClass()); if(parentType.equals(object.getCategoryClass())) { child.addChangeListener(this); _store.update(true, child.asObjectRecord()); Class<? extends ConfiguredObject> categoryClass = child.getCategoryClass(); Collection<Class<? extends ConfiguredObject>> childTypes = model.getChildTypes(categoryClass); for (Class<? extends ConfiguredObject> childClass : childTypes) { for (ConfiguredObject<?> grandchild : child.getChildren(childClass)) { childAdded(child, grandchild); } } } } } }
private ObjectProperties createObjectPropertiesForMethod(final PermissionedObject permissionedObject, final String methodName) { ObjectProperties properties = new ObjectProperties(permissionedObject.getName()); properties.put(ObjectProperties.Property.METHOD_NAME, methodName); if (permissionedObject instanceof ConfiguredObject<?>) { ConfiguredObject<?> configuredObject = ((ConfiguredObject) permissionedObject); Model model = configuredObject.getModel(); VirtualHost<?> virtualHost = model.getAncestor(VirtualHost.class, configuredObject); final String componentName; if (virtualHost != null) { properties.put(ObjectProperties.Property.VIRTUALHOST_NAME, virtualHost.getName()); componentName = buildHierarchicalCategoryName(configuredObject, virtualHost); } else { componentName = buildHierarchicalCategoryName(configuredObject, model.getAncestor(Broker.class, configuredObject)); } properties.put(ObjectProperties.Property.COMPONENT, componentName); final String createdBy = (String) configuredObject.getAttribute(ConfiguredObject.CREATED_BY); if (createdBy != null) { properties.put(ObjectProperties.Property.CREATED_BY, createdBy); } } return properties; }