@Override protected void describe(OrderedChildTypesAttachment orderedChildTypesAttachment, Resource resource, ModelNode addressModel, ModelNode result, ImmutableManagementResourceRegistration registration) { if (resource == null || registration.isRemote() || registration.isRuntimeOnly() || resource.isProxy() || resource.isRuntime() || registration.isAlias()) return; result.add(createAddOperation(orderedChildTypesAttachment, addressModel, resource, registration.getChildAddresses(PathAddress.EMPTY_ADDRESS))); PathAddress address = PathAddress.pathAddress(addressModel); for (String type : resource.getChildTypes()) { for (Resource.ResourceEntry entry : resource.getChildren(type)) { PathElement path = entry.getPathElement(); ImmutableManagementResourceRegistration childRegistration = Optional.ofNullable(registration.getSubModel(PathAddress.pathAddress(path))).orElse(registration.getSubModel(PathAddress.pathAddress(PathElement.pathElement(path.getKey())))); PathAddress childAddress = address.append(path); this.describe(orderedChildTypesAttachment, entry, childAddress.toModelNode(), result, childRegistration); } } }
@Override public boolean isRuntimeOnly() { return delegate.isRuntimeOnly(); }
@Override public boolean isRuntimeOnly() { return delegate.isRuntimeOnly(); }
@Override public boolean isRuntimeOnly() { return delegate.isRuntimeOnly(); }
@Override public boolean isRuntimeOnly() { return delegate.isRuntimeOnly(); }
/** * Provides a resource for the current step, either from the context, if the context doesn't have one * and {@code registry} is runtime-only, it creates a dummy resource. */ private static Resource nullSafeReadResource(final OperationContext context, final ImmutableManagementResourceRegistration registry) { Resource result; if (registry != null && registry.isRuntimeOnly()) { try { result = context.readResource(PathAddress.EMPTY_ADDRESS, false); } catch (RuntimeException e) { result = PlaceholderResource.INSTANCE; } } else { result = context.readResource(PathAddress.EMPTY_ADDRESS, false); } return result; }
private static Set<String> getNonIgnoredChildTypes(ImmutableManagementResourceRegistration mrr) { Set<String> result = new HashSet<>(); for (PathElement pe : mrr.getChildAddresses(PathAddress.EMPTY_ADDRESS)) { ImmutableManagementResourceRegistration childMrr = mrr.getSubModel(PathAddress.pathAddress(pe)); if (childMrr != null && !childMrr.isRemote() && !childMrr.isRuntimeOnly()) { result.add(pe.getKey()); } } return result; }
private static Set<String> getNonIgnoredChildTypes(ImmutableManagementResourceRegistration mrr) { Set<String> result = new HashSet<>(); for (PathElement pe : mrr.getChildAddresses(PathAddress.EMPTY_ADDRESS)) { ImmutableManagementResourceRegistration childMrr = mrr.getSubModel(PathAddress.pathAddress(pe)); if (childMrr != null && !childMrr.isRemote() && !childMrr.isRuntimeOnly()) { result.add(pe.getKey()); } } return result; }
protected ResourceTransformer resolveTransformer(TransformerEntry entry, PathAddress address) { final ResourceTransformer transformer = entry.getResourceTransformer(); if (transformer == null) { final ImmutableManagementResourceRegistration childReg = originalModel.getRegistration(address); if (childReg == null) { return ResourceTransformer.DISCARD; } if (childReg.isRemote() || childReg.isRuntimeOnly()) { return ResourceTransformer.DISCARD; } return ResourceTransformer.DEFAULT; } return transformer; }
@Override public ResourceTransformer resolveTransformer(PathAddress address) { final ResourceTransformer transformer = originalModel.target.resolveTransformer(address); if (transformer == null) { final ImmutableManagementResourceRegistration childReg = originalModel.getRegistration(address); if (childReg == null) { return ResourceTransformer.DISCARD; } if (childReg.isRemote() || childReg.isRuntimeOnly()) { return ResourceTransformer.DISCARD; } return ResourceTransformer.DEFAULT; } return transformer; }
protected ResourceTransformer resolveTransformer(TransformerEntry entry, PathAddress address) { final ResourceTransformer transformer = entry.getResourceTransformer(); if (transformer == null) { final ImmutableManagementResourceRegistration childReg = originalModel.getRegistration(address); if (childReg == null) { return ResourceTransformer.DISCARD; } if (childReg.isRemote() || childReg.isRuntimeOnly()) { return ResourceTransformer.DISCARD; } return ResourceTransformer.DEFAULT; } return transformer; }
void checkResourceAccess(final OperationContext context, final ImmutableManagementResourceRegistration registration, final ModelNode nodeDescription, Map<String, ModelNode> operations) { final ModelNode defaultAccess = Util.createOperation( opAddress.size() > 0 && !opAddress.getLastElement().isWildcard() ? GlobalOperationHandlers.CHECK_DEFAULT_RESOURCE_ACCESS : GlobalOperationHandlers.CHECK_RESOURCE_ACCESS, opAddress); defaultWildcardAccessControl = new ModelNode(); context.addStep(defaultAccess, new CheckResourceAccessHandler(registration.isRuntimeOnly(), true, defaultWildcardAccessControl, nodeDescription, operations), OperationContext.Stage.MODEL, true); for (final PathAddress address : localResourceAddresses) { final ModelNode op = Util.createOperation(GlobalOperationHandlers.CHECK_RESOURCE_ACCESS, address); final ModelNode resultHolder = new ModelNode(); localResourceAccessControlResults.put(address, resultHolder); context.addStep(op, new CheckResourceAccessHandler(registration.isRuntimeOnly(), false, resultHolder, nodeDescription, operations), OperationContext.Stage.MODEL, true); } } }
void checkResourceAccess(final OperationContext context, final ImmutableManagementResourceRegistration registration, final ModelNode nodeDescription, Map<String, ModelNode> operations) { final ModelNode defaultAccess = Util.createOperation( opAddress.size() > 0 && !opAddress.getLastElement().isWildcard() ? GlobalOperationHandlers.CHECK_DEFAULT_RESOURCE_ACCESS : GlobalOperationHandlers.CHECK_RESOURCE_ACCESS, opAddress); defaultWildcardAccessControl = new ModelNode(); context.addStep(defaultAccess, new CheckResourceAccessHandler(registration.isRuntimeOnly(), true, defaultWildcardAccessControl, nodeDescription, operations), OperationContext.Stage.MODEL, true); for (final PathAddress address : localResourceAddresses) { final ModelNode op = Util.createOperation(GlobalOperationHandlers.CHECK_RESOURCE_ACCESS, address); final ModelNode resultHolder = new ModelNode(); localResourceAccessControlResults.put(address, resultHolder); context.addStep(op, new CheckResourceAccessHandler(registration.isRuntimeOnly(), false, resultHolder, nodeDescription, operations), OperationContext.Stage.MODEL, true); } } }
@Override public ResourceTransformer resolveTransformer(PathAddress address) { final ResourceTransformer transformer = originalModel.target.resolveTransformer(this, address); if (transformer == null) { final ImmutableManagementResourceRegistration childReg = originalModel.getRegistration(address); if (childReg == null) { return ResourceTransformer.DISCARD; } if (childReg.isRemote() || childReg.isRuntimeOnly()) { return ResourceTransformer.DISCARD; } return ResourceTransformer.DEFAULT; } return transformer; }
void checkResourceAccess(final OperationContext context, final ImmutableManagementResourceRegistration registration, final ModelNode nodeDescription, Map<String, ModelNode> operations) { final ModelNode defaultAccess = Util.createOperation( opAddress.size() > 0 && !opAddress.getLastElement().isWildcard() ? GlobalOperationHandlers.CHECK_DEFAULT_RESOURCE_ACCESS : GlobalOperationHandlers.CHECK_RESOURCE_ACCESS, opAddress); defaultWildcardAccessControl = new ModelNode(); context.addStep(defaultAccess, new CheckResourceAccessHandler(registration.isRuntimeOnly(), true, defaultWildcardAccessControl, nodeDescription, operations), OperationContext.Stage.MODEL, true); for (final PathAddress address : localResourceAddresses) { final ModelNode op = Util.createOperation(GlobalOperationHandlers.CHECK_RESOURCE_ACCESS, address); final ModelNode resultHolder = new ModelNode(); localResourceAccessControlResults.put(address, resultHolder); context.addStep(op, new CheckResourceAccessHandler(registration.isRuntimeOnly(), false, resultHolder, nodeDescription, operations), OperationContext.Stage.MODEL, true); } } }
/** * Creates a set of child types that are not {@linkplain ImmutableManagementResourceRegistration#isRemote() remote} * or {@linkplain ImmutableManagementResourceRegistration#isRuntimeOnly() runtime} child types. * * @param mrr the resource registration to process the child types for * * @return a collection of non-remote and non-runtime only child types */ private static Set<String> getNonIgnoredChildTypes(ImmutableManagementResourceRegistration mrr) { final Set<String> result = new LinkedHashSet<>(); for (PathElement pe : mrr.getChildAddresses(PathAddress.EMPTY_ADDRESS)) { ImmutableManagementResourceRegistration childMrr = mrr.getSubModel(PathAddress.pathAddress(pe)); if (childMrr != null && !childMrr.isRemote() && !childMrr.isRuntimeOnly()) { result.add(pe.getKey()); } } return result; }
private Resource createResourceInternal(PathAddress relativeAddress, int index) throws UnsupportedOperationException { ImmutableManagementResourceRegistration current = getResourceRegistration(); ImmutableManagementResourceRegistration mrr = relativeAddress == PathAddress.EMPTY_ADDRESS ? current : current.getSubModel(relativeAddress); final Resource toAdd = Resource.Factory.create(mrr.isRuntimeOnly()); addResourceInternal(relativeAddress, index, toAdd); return toAdd; }
private Resource createResourceInternal(PathAddress relativeAddress, int index) throws UnsupportedOperationException { ImmutableManagementResourceRegistration current = getResourceRegistration(); ImmutableManagementResourceRegistration mrr = relativeAddress == PathAddress.EMPTY_ADDRESS ? current : current.getSubModel(relativeAddress); final Resource toAdd = Resource.Factory.create(mrr.isRuntimeOnly()); addResourceInternal(relativeAddress, index, toAdd); return toAdd; }
private boolean isResourceRuntimeOnly(PathAddress fullAddress) { Resource resource = this.managementModel.getRootResource(); for (Iterator<PathElement> it = fullAddress.iterator(); it.hasNext() && resource != null;) { PathElement element = it.next(); if (element.isMultiTarget()) { resource = null; } else { resource = resource.getChild(element); } } if (resource != null) { return resource.isRuntime(); } // No resource -- op will eventually fail ImmutableManagementResourceRegistration mrr = managementModel.getRootResourceRegistration().getSubModel(fullAddress); return mrr != null && mrr.isRuntimeOnly(); }
@Override protected void describe(OrderedChildTypesAttachment orderedChildTypesAttachment, Resource resource, ModelNode addressModel, ModelNode result, ImmutableManagementResourceRegistration registration) { if (resource == null || registration.isRemote() || registration.isRuntimeOnly() || resource.isProxy() || resource.isRuntime() || registration.isAlias()) return; result.add(createAddOperation(orderedChildTypesAttachment, addressModel, resource, registration.getChildAddresses(PathAddress.EMPTY_ADDRESS))); PathAddress address = PathAddress.pathAddress(addressModel); for (String type : resource.getChildTypes()) { for (Resource.ResourceEntry entry : resource.getChildren(type)) { PathElement path = entry.getPathElement(); ImmutableManagementResourceRegistration childRegistration = Optional.ofNullable(registration.getSubModel(PathAddress.pathAddress(path))).orElse(registration.getSubModel(PathAddress.pathAddress(PathElement.pathElement(path.getKey())))); PathAddress childAddress = address.append(path); this.describe(orderedChildTypesAttachment, entry, childAddress.toModelNode(), result, childRegistration); } } }