protected void process(final OperationTransformerRegistry registry, final PathAddress address, final ModelVersion version, Map<PathAddress, ModelVersion> versions) { final OperationTransformerRegistry current = registryUpdater.get(this, version); if(current != null) { final OperationTransformerRegistry.ResourceTransformerEntry resourceTransformer = current.getResourceTransformer(); final OperationTransformerRegistry.OperationTransformerEntry defaultTransformer = current.getDefaultTransformer(); registry.createChildRegistry(address.iterator(), current.getPathAddressTransformer(), resourceTransformer, defaultTransformer); final Map<String, OperationTransformerRegistry.OperationTransformerEntry> transformers = current.getTransformers(); for(final Map.Entry<String, OperationTransformerRegistry.OperationTransformerEntry> transformer : transformers.entrySet()) { registry.registerTransformer(address, transformer.getKey(), transformer.getValue().getTransformer()); } } final Map<String, SubRegistry> snapshot = subRegistriesUpdater.get(this); if(snapshot != null) { for(final Map.Entry<String, SubRegistry> registryEntry : snapshot.entrySet()) { // final String key = registryEntry.getKey(); final SubRegistry subRegistry = registryEntry.getValue(); final Map<String, GlobalTransformerRegistry> children = SubRegistry.childrenUpdater.get(subRegistry); for(final Map.Entry<String, GlobalTransformerRegistry> childEntry : children.entrySet()) { // final String value = childEntry.getKey(); final GlobalTransformerRegistry child = childEntry.getValue(); final PathAddress childAddress = address.append(PathElement.pathElement(key, value)); final ModelVersion childVersion = versions.containsKey(childAddress) ? versions.get(childAddress) : version; child.process(registry, childAddress, childVersion, versions); } } } }
if (!iterator.hasNext()) { if (description.getDiscardedOperations().contains(operationName)) { return new OperationTransformerEntry(OperationTransformer.DISCARD, description.isInherited()); return new OperationTransformerEntry(description.getOperationTransformer(), description.isInherited()); return new OperationTransformerEntry(transformer, description.isInherited()); } else { final PathElement element = iterator.next(); return new OperationTransformerEntry(transformer, description.isInherited()); return new OperationTransformerEntry(transformer, description.isInherited());
if (entry != null && entry.isInherited()) { return entry; if (entry != null && entry.isInherited()) { return entry;
if (entry != null && entry.isInherited()) { return entry; if (entry != null && entry.isInherited()) { return entry;
if (!iterator.hasNext()) { if (description.getDiscardedOperations().contains(operationName)) { return new OperationTransformerEntry(OperationTransformer.DISCARD, description.isInherited()); return new OperationTransformerEntry(description.getOperationTransformer(), description.isInherited()); return new OperationTransformerEntry(transformer, description.isInherited()); } else { final PathElement element = iterator.next(); return new OperationTransformerEntry(transformer, description.isInherited()); return new OperationTransformerEntry(transformer, description.isInherited());
private void process(final OperationTransformerRegistry registry, final PathAddress address, final ModelVersion version, Map<PathAddress, ModelVersion> versions) { final OperationTransformerRegistry current = getRegistryUpdater(version); if(current != null) { final OperationTransformerRegistry.ResourceTransformerEntry resourceTransformer = current.getResourceTransformer(); final OperationTransformerRegistry.OperationTransformerEntry defaultTransformer = current.getDefaultTransformer(); registry.createChildRegistry(address.iterator(), current.getPathAddressTransformer(), resourceTransformer, defaultTransformer, current.isPlaceholder()); final Map<String, OperationTransformerRegistry.OperationTransformerEntry> transformers = current.getTransformers(); for(final Map.Entry<String, OperationTransformerRegistry.OperationTransformerEntry> transformer : transformers.entrySet()) { registry.registerTransformer(address, transformer.getKey(), transformer.getValue().getTransformer()); } } final Map<String, SubRegistry> snapshot = subRegistriesUpdater.get(this); if(snapshot != null) { for(final Map.Entry<String, SubRegistry> registryEntry : snapshot.entrySet()) { // final String key = registryEntry.getKey(); final SubRegistry subRegistry = registryEntry.getValue(); final Map<String, GlobalTransformerRegistry> children = SubRegistry.childrenUpdater.get(subRegistry); for(final Map.Entry<String, GlobalTransformerRegistry> childEntry : children.entrySet()) { // final String value = childEntry.getKey(); final GlobalTransformerRegistry child = childEntry.getValue(); final PathAddress childAddress = address.append(PathElement.pathElement(key, value)); final ModelVersion childVersion = versions.containsKey(childAddress) ? versions.get(childAddress) : version; child.process(registry, childAddress, childVersion, versions); } } } }
private OperationTransformerEntry resolveOperationTransformer(final Iterator<PathElement> iterator, final String operationName) { if(! iterator.hasNext()) { final OperationTransformerEntry entry = entriesUpdater.get(this, operationName); if(entry == null) { return defaultTransformer; } return entry; } else { final PathElement element = iterator.next(); final String key = element.getKey(); SubRegistry registry = subRegistriesUpdater.get(this, key); OperationTransformerEntry entry = null; if(registry != null) { entry = registry.resolveTransformer(iterator, element.getValue(), operationName); if (entry != null) { return entry; } } //Look for inherited entries entry = entriesUpdater.get(this, operationName); if (entry != null && entry.isInherited()) { return entry; } entry = defaultTransformer; if (entry != null && entry.isInherited()) { return entry; } return null; } }
private OperationTransformerEntry resolveOperationTransformer(final Iterator<PathElement> iterator, final String operationName) { if(! iterator.hasNext()) { final OperationTransformerEntry entry = entriesUpdater.get(this, operationName); if(entry == null) { return defaultTransformer; } return entry; } else { final PathElement element = iterator.next(); final String key = element.getKey(); SubRegistry registry = subRegistriesUpdater.get(this, key); OperationTransformerEntry entry = null; if(registry != null) { entry = registry.resolveTransformer(iterator, element.getValue(), operationName); if (entry != null) { return entry; } } //Look for inherited entries entry = entriesUpdater.get(this, operationName); if (entry != null && entry.isInherited()) { return entry; } entry = defaultTransformer; if (entry != null && entry.isInherited()) { return entry; } return null; } }
private void process(final OperationTransformerRegistry registry, final PathAddress address, final ModelVersion version, Map<PathAddress, ModelVersion> versions) { final OperationTransformerRegistry current = getRegistryUpdater(version); if(current != null) { final OperationTransformerRegistry.ResourceTransformerEntry resourceTransformer = current.getResourceTransformer(); final OperationTransformerRegistry.OperationTransformerEntry defaultTransformer = current.getDefaultTransformer(); registry.createChildRegistry(address.iterator(), current.getPathAddressTransformer(), resourceTransformer, defaultTransformer, current.isPlaceholder()); final Map<String, OperationTransformerRegistry.OperationTransformerEntry> transformers = current.getTransformers(); for(final Map.Entry<String, OperationTransformerRegistry.OperationTransformerEntry> transformer : transformers.entrySet()) { registry.registerTransformer(address, transformer.getKey(), transformer.getValue().getTransformer()); } } final Map<String, SubRegistry> snapshot = subRegistriesUpdater.get(this); if(snapshot != null) { for(final Map.Entry<String, SubRegistry> registryEntry : snapshot.entrySet()) { // final String key = registryEntry.getKey(); final SubRegistry subRegistry = registryEntry.getValue(); final Map<String, GlobalTransformerRegistry> children = SubRegistry.childrenUpdater.get(subRegistry); for(final Map.Entry<String, GlobalTransformerRegistry> childEntry : children.entrySet()) { // final String value = childEntry.getKey(); final GlobalTransformerRegistry child = childEntry.getValue(); final PathAddress childAddress = address.append(PathElement.pathElement(key, value)); final ModelVersion childVersion = versions.containsKey(childAddress) ? versions.get(childAddress) : version; child.process(registry, childAddress, childVersion, versions); } } } }
protected void process(final OperationTransformerRegistry registry, final PathAddress address, final ModelVersion version, Map<PathAddress, ModelVersion> versions) { final OperationTransformerRegistry current = registryUpdater.get(this, version); if(current != null) { final OperationTransformerRegistry.ResourceTransformerEntry resourceTransformer = current.getResourceTransformer(); final OperationTransformerRegistry.OperationTransformerEntry defaultTransformer = current.getDefaultTransformer(); registry.createChildRegistry(address.iterator(), current.getPathAddressTransformer(), resourceTransformer, defaultTransformer); final Map<String, OperationTransformerRegistry.OperationTransformerEntry> transformers = current.getTransformers(); for(final Map.Entry<String, OperationTransformerRegistry.OperationTransformerEntry> transformer : transformers.entrySet()) { registry.registerTransformer(address, transformer.getKey(), transformer.getValue().getTransformer()); } } final Map<String, SubRegistry> snapshot = subRegistriesUpdater.get(this); if(snapshot != null) { for(final Map.Entry<String, SubRegistry> registryEntry : snapshot.entrySet()) { // final String key = registryEntry.getKey(); final SubRegistry subRegistry = registryEntry.getValue(); final Map<String, GlobalTransformerRegistry> children = SubRegistry.childrenUpdater.get(subRegistry); for(final Map.Entry<String, GlobalTransformerRegistry> childEntry : children.entrySet()) { // final String value = childEntry.getKey(); final GlobalTransformerRegistry child = childEntry.getValue(); final PathAddress childAddress = address.append(PathElement.pathElement(key, value)); final ModelVersion childVersion = versions.containsKey(childAddress) ? versions.get(childAddress) : version; child.process(registry, childAddress, childVersion, versions); } } } }
@Override public OperationTransformer resolveTransformer(TransformationContext context, final PathAddress address, final String operationName) { if(address.size() == 0) { // TODO use registry registry to register this operations. if(ModelDescriptionConstants.COMPOSITE.equals(operationName)) { return new CompositeOperationTransformer(); } } if (operationIgnoredRegistry.isOperationExcluded(address, operationName)) { ControllerLogger.MGMT_OP_LOGGER.tracef("Excluding operation %s to %s", operationName, address); return OperationTransformer.DISCARD; } if (version.getMajor() < 3 && ModelDescriptionConstants.QUERY.equals(operationName)) { // TODO use transformer inheritance and register this normally return QueryOperationHandler.TRANSFORMER; } final OperationTransformerRegistry.OperationTransformerEntry entry = registry.resolveOperationTransformer(address, operationName, placeholderResolver); return entry.getTransformer(); }
@Override public OperationTransformer resolveTransformer(TransformationContext context, final PathAddress address, final String operationName) { if(address.size() == 0) { // TODO use registry registry to register this operations. if(ModelDescriptionConstants.COMPOSITE.equals(operationName)) { return new CompositeOperationTransformer(); } } if (operationIgnoredRegistry.isOperationExcluded(address, operationName)) { ControllerLogger.MGMT_OP_LOGGER.tracef("Excluding operation %s to %s", operationName, address); return OperationTransformer.DISCARD; } if (version.getMajor() < 3 && ModelDescriptionConstants.QUERY.equals(operationName)) { // TODO use transformer inheritance and register this normally return QueryOperationHandler.TRANSFORMER; } final OperationTransformerRegistry.OperationTransformerEntry entry = registry.resolveOperationTransformer(address, operationName, placeholderResolver); return entry.getTransformer(); }
public TransformedOperation transformOperation(ModelVersion modelVersion, ModelNode operation, TransformerOperationAttachment attachment) throws OperationFailedException { checkIsMainController(); TransformerRegistry transformerRegistry = extensionRegistry.getTransformerRegistry(); PathAddress address = PathAddress.pathAddress(operation.get(OP_ADDR)); Map<PathAddress, ModelVersion> subsystemVersions = Collections.<PathAddress, ModelVersion>emptyMap(); OperationTransformerRegistry registry = transformerRegistry.resolveHost(modelVersion, subsystemVersions); TransformationTarget target = TransformationTargetImpl.create(null, extensionRegistry.getTransformerRegistry(), modelVersion, subsystemVersions, TransformationTarget.TransformationTargetType.DOMAIN); TransformationContext transformationContext = createTransformationContext(target, attachment); OperationTransformer operationTransformer = registry.resolveOperationTransformer(address, operation.get(OP).asString(), null).getTransformer(); if (operationTransformer != null) { return operationTransformer.transformOperation(transformationContext, address, operation); } return new OperationTransformer.TransformedOperation(operation, OperationResultTransformer.ORIGINAL_RESULT); }
public TransformedOperation transformOperation(ModelVersion modelVersion, ModelNode operation, TransformerOperationAttachment attachment) throws OperationFailedException { checkIsMainController(); TransformerRegistry transformerRegistry = extensionRegistry.getTransformerRegistry(); PathAddress address = PathAddress.pathAddress(operation.get(OP_ADDR)); Map<PathAddress, ModelVersion> subsystemVersions = Collections.<PathAddress, ModelVersion>emptyMap(); OperationTransformerRegistry registry = transformerRegistry.resolveHost(modelVersion, subsystemVersions); TransformationTarget target = TransformationTargetImpl.create(null, extensionRegistry.getTransformerRegistry(), modelVersion, subsystemVersions, TransformationTarget.TransformationTargetType.DOMAIN); TransformationContext transformationContext = createTransformationContext(target, attachment); OperationTransformer operationTransformer = registry.resolveOperationTransformer(address, operation.get(OP).asString(), null).getTransformer(); if (operationTransformer != null) { return operationTransformer.transformOperation(transformationContext, address, operation); } return new OperationTransformer.TransformedOperation(operation, OperationResultTransformer.ORIGINAL_RESULT); }
/** * Register an operation transformer. * * @param address the transformer address * @param version the model version * @param pathAddressTransformer the path address transformer * @param resourceTransformer the resource transformer * @param operationTransformer the operation transformer * @param inherited whether the transformers are inherited * @param placeholder if {@code true} the pathAddress-, resource-, and operationTransformers are responsible for handling children of their address via a {@link org.jboss.as.controller.registry.OperationTransformerRegistry.PlaceholderResolver} */ public void createChildRegistry(final PathAddress address, final ModelVersion version, PathAddressTransformer pathAddressTransformer, ResourceTransformer resourceTransformer, OperationTransformer operationTransformer, boolean inherited, boolean placeholder) { createChildRegistry(address.iterator(), version, pathAddressTransformer, new OperationTransformerRegistry.ResourceTransformerEntry(resourceTransformer, false), new OperationTransformerRegistry.OperationTransformerEntry(operationTransformer, inherited), placeholder); }
public void createChildRegistry(final PathAddress address, final ModelVersion version, OperationTransformer transformer) { createChildRegistry(address.iterator(), version, PathAddressTransformer.DEFAULT, RESOURCE_TRANSFORMER, new OperationTransformerRegistry.OperationTransformerEntry(transformer, false), false); }
public void createChildRegistry(final PathAddress address, final ModelVersion version, PathAddressTransformer pathAddressTransformer, ResourceTransformer resourceTransformer, OperationTransformer operationTransformer, boolean inherited) { createChildRegistry(address.iterator(), version, pathAddressTransformer, new OperationTransformerRegistry.ResourceTransformerEntry(resourceTransformer, false), new OperationTransformerRegistry.OperationTransformerEntry(operationTransformer, inherited)); }
void registerTransformer(final PathAddress address, final String operationName, final OperationTransformer transformer) { registerTransformer(address.iterator(), operationName, new OperationTransformerEntry(transformer, false)); }
void registerTransformer(final PathAddress address, final String operationName, final OperationTransformer transformer) { registerTransformer(address.iterator(), operationName, new OperationTransformerEntry(transformer, false)); }
@Override public OperationTransformer resolveTransformer(TransformationContext context, final PathAddress address, final String operationName) { if (ignoreResourceTransformation(context, address)) { return OperationTransformer.DEFAULT; } if(address.size() == 0) { // TODO use registry registry to register this operations. if(ModelDescriptionConstants.COMPOSITE.equals(operationName)) { return new CompositeOperationTransformer(); } } final OperationTransformerRegistry.OperationTransformerEntry entry = registry.resolveOperationTransformer(address, operationName); return entry.getTransformer(); }