@Override protected ServiceName getParentServiceName(PathAddress parentAddress) { String profileName = null; for (final PathElement element : parentAddress) { if (element.getKey().equals(EJB3SubsystemModel.REMOTING_PROFILE)) { profileName = element.getValue(); } } return RemotingProfileService.BASE_SERVICE_NAME.append(profileName); }
@Override protected PathAddress getParentAddress(PathAddress address) { for (int i = address.size() - 1; i >= 0; i--) { PathElement pe = address.getElement(i); if (pe.getKey().equals("service") && pe.getValue().equals("remote")) { return address.subAddress(0, i + 1); } } return null; }
@Override public Map<String, ModelNode> getChildTypeOverrideDescriptions(Locale locale) { String description = JGroupsExtension.SUBSYSTEM_RESOLVER.getChildTypeDescription(ProtocolResourceDefinition.WILDCARD_PATH.getKey(), locale, JGroupsExtension.SUBSYSTEM_RESOLVER.getResourceBundle(locale)); ModelNode result = new ModelNode(); result.get(ModelDescriptionConstants.DESCRIPTION).set(description); return Collections.singletonMap(ProtocolResourceDefinition.WILDCARD_PATH.getKey(), result); } };
private static void writeThreadPoolElements(XMLElement element, ThreadPoolResourceDefinition pool, XMLExtendedStreamWriter writer, ModelNode transport) throws XMLStreamException { PathElement path = pool.getPathElement(); if (transport.get(path.getKey()).hasDefined(path.getValue())) { ModelNode threadPool = transport.get(path.getKeyValuePair()); if (hasDefined(threadPool, pool.getAttributes())) { writer.writeStartElement(element.getLocalName()); writeAttributes(writer, threadPool, pool.getAttributes()); writer.writeEndElement(); } } }
@Override public void transformResource(ResourceTransformationContext context, PathAddress address, Resource resource) throws OperationFailedException { for (String name : resource.getChildrenNames(ProtocolResourceDefinition.WILDCARD_PATH.getKey())) { resource.getModel().get(PROTOCOLS.getName()).add(name); } context.addTransformedResource(PathAddress.EMPTY_ADDRESS, resource).processChildren(resource); } };
private LoadBalanceFactorProvider getLoadProvider(String proxyName, final Set<LoadMetric> metrics, final OperationContext context, ModelNode model) throws OperationFailedException { LoadBalanceFactorProvider load = null; if (model.get(SimpleLoadProviderResourceDefinition.PATH.getKeyValuePair()).isDefined()) { ModelNode simpleProviderModel = model.get(SimpleLoadProviderResourceDefinition.PATH.getKeyValuePair()); int value = SimpleLoadProviderResourceDefinition.Attribute.FACTOR.resolveModelAttribute(context, simpleProviderModel).asInt(); SimpleLoadBalanceFactorProvider simpleLoadProvider = new SimpleLoadBalanceFactorProvider(); load = simpleLoadProvider; if (model.get(DynamicLoadProviderResourceDefinition.PATH.getKeyValuePair()).isDefined()) { ModelNode node = model.get(DynamicLoadProviderResourceDefinition.PATH.getKeyValuePair()); int decayFactor = DynamicLoadProviderResourceDefinition.Attribute.DECAY.resolveModelAttribute(context, node).asInt(); int history = DynamicLoadProviderResourceDefinition.Attribute.HISTORY.resolveModelAttribute(context, node).asInt(); if (node.hasDefined(LoadMetricResourceDefinition.WILDCARD_PATH.getKey())) { this.addLoadMetrics(metrics, node.get(LoadMetricResourceDefinition.WILDCARD_PATH.getKey()), context); if (node.hasDefined(CustomLoadMetricResourceDefinition.WILDCARD_PATH.getKey())) { this.addLoadMetrics(metrics, node.get(CustomLoadMetricResourceDefinition.WILDCARD_PATH.getKey()), context);
@Override public Resource navigate(final PathAddress address) { if (address.size() == 1 && CONTEXT.equals(address.getElement(0).getKey())) { return requireChild(address.getElement(0)); } throw new NoSuchResourceException(address.getElement(0)); }
public static void checkMapModels(KernelServices services, ModelVersion version, PathAddress address, String... properties) throws Exception { final ModelNode readResource = Util.createEmptyOperation(READ_RESOURCE_OPERATION, address); readResource.get(RECURSIVE).set(true); readResource.get(INCLUDE_DEFAULTS).set(false); ModelNode mainModel = services.executeForResult(readResource.clone()); checkMainMapModel(mainModel, properties); final ModelNode legacyModel; if (address.getLastElement().getKey().equals("transport")) { //TODO get rid of this once the PathAddress transformer works properly //Temporary workaround readResource.get(OP_ADDR).set(address.subAddress(0, address.size() - 1).append("transport", "TRANSPORT").toModelNode()); legacyModel = services.getLegacyServices(version).executeForResult(readResource); } else { legacyModel = ModelTestUtils.checkResultAndGetContents(services.executeOperation(version, services.transformOperation(version, readResource.clone()))); } checkLegacyChildResourceModel(legacyModel, properties); }
ModelNode originalSubsystemModel = services.readWholeModel().get(JGroupsSubsystemResourceDefinition.PATH.getKeyValuePair()); ModelNode originalChannelModel = originalSubsystemModel.get(ChannelResourceDefinition.pathElement("ee").getKeyValuePair()); ModelNode originalForkModel = originalChannelModel.get(ForkResourceDefinition.pathElement("web").getKeyValuePair()); Assert.assertTrue(0 < originalForkModel.get(ProtocolResourceDefinition.WILDCARD_PATH.getKey()).keys().size()); ModelNode originalStackModel = originalSubsystemModel.get(StackResourceDefinition.pathElement("maximal").getKeyValuePair()); final PathAddress subsystemAddress = PathAddress.pathAddress(JGroupsSubsystemResourceDefinition.PATH); final PathAddress forkAddress = subsystemAddress.append(ChannelResourceDefinition.pathElement("ee")).append(ForkResourceDefinition.pathElement("web")); final PathAddress stackAddress = subsystemAddress.append(StackResourceDefinition.pathElement("maximal")); ModelNode forkModel = channelModel.get(ForkResourceDefinition.pathElement("web").getKeyValuePair()); Assert.assertEquals(originalForkModel.keys().size() + 1, forkModel.get(ProtocolResourceDefinition.WILDCARD_PATH.getKey()).keys().size()); Assert.assertEquals("MERGE3", forkModel.get(ProtocolResourceDefinition.WILDCARD_PATH.getKey()).keys().iterator().next());
static PathAddress translateProxyPath(OperationContext context, PathAddress address) throws OperationFailedException { Set<Resource.ResourceEntry> children = context.readResourceFromRoot(address, false).getChildren(ProxyConfigurationResourceDefinition.WILDCARD_PATH.getKey()); if (children.size() != 1) { throw new OperationFailedException(ModClusterLogger.ROOT_LOGGER.legacyOperationsWithMultipleProxies()); } PathAddress proxyPath = PathAddress.pathAddress(ProxyConfigurationResourceDefinition.pathElement(children.iterator().next().getName())); address = address.append(proxyPath); return address; }
/** * Test that the model created from the xml looks as expected */ @Test public void testInstallIntoController() throws Exception { // Parse the subsystem xml and install into the controller KernelServices services = createKernelServicesBuilder().setSubsystemXml(getSubsystemXml()).build(); // Read the whole model and make sure it looks as expected ModelNode model = services.readWholeModel(); assertTrue(model.get(InfinispanSubsystemRootResource.PATH.getKey()).hasDefined(InfinispanSubsystemRootResource.PATH.getValue())); }
public static ServiceName getFilterRefServiceName(final PathAddress address, String name) { final PathAddress oneUp = address.subAddress(0, address.size() - 1); final PathAddress twoUp = oneUp.subAddress(0, oneUp.size() - 1); final PathAddress threeUp = twoUp.subAddress(0, twoUp.size() - 1); ServiceName serviceName; if (address.getLastElement().getKey().equals(Constants.FILTER_REF)) { if (oneUp.getLastElement().getKey().equals(Constants.HOST)) { //adding reference String host = oneUp.getLastElement().getValue(); String server = twoUp.getLastElement().getValue(); serviceName = UndertowService.filterRefName(server, host, name); } else { String location = oneUp.getLastElement().getValue(); String host = twoUp.getLastElement().getValue(); String server = threeUp.getLastElement().getValue(); serviceName = UndertowService.filterRefName(server, host, location, name); } } else if (address.getLastElement().getKey().equals(Constants.HOST)) { String host = address.getLastElement().getValue(); String server = oneUp.getLastElement().getValue(); serviceName = UndertowService.filterRefName(server, host, name); } else { String location = address.getLastElement().getValue(); String host = oneUp.getLastElement().getValue(); String server = twoUp.getLastElement().getValue(); serviceName = UndertowService.filterRefName(server, host, location, name); } return serviceName; }
@Override public PathAddress transform(PathAddress address) { PathAddress parentAddress = address.subAddress(0, address.size() - 1); return parentAddress.getLastElement().getKey().equals(TransportResourceDefinition.WILDCARD_PATH.getKey()) ? TransportResourceDefinition.LEGACY_ADDRESS_TRANSFORMER.transform(parentAddress).append(address.getLastElement()) : address; } };
@Override public PathAddress convertToTargetAddress(PathAddress address, AliasContext aliasContext) { PathAddress target = this.getTargetAddress(); List<PathElement> result = new ArrayList<>(address.size()); for (int i = 0; i < address.size(); ++i) { PathElement element = address.getElement(i); if (i < target.size()) { PathElement targetElement = target.getElement(i); result.add(targetElement.isWildcard() ? PathElement.pathElement(targetElement.getKey(), element.getValue()) : targetElement); } else { result.add(element); } } return PathAddress.pathAddress(result); } }
@Override public TransformedOperation transformOperation(final TransformationContext context, final PathAddress address, final ModelNode operation) throws OperationFailedException { Resource original = context.readResourceFromRoot(address); String defaultDataStore = original.getModel().get(TimerServiceResourceDefinition.DEFAULT_DATA_STORE.getName()).asString(); boolean hasFileDataStore = original.hasChild(PathElement.pathElement(EJB3SubsystemModel.FILE_DATA_STORE_PATH.getKey(), defaultDataStore)); if (original.getChildren(EJB3SubsystemModel.FILE_DATA_STORE).size() > 1 || !hasFileDataStore) { return new TransformedOperation(operation, new OperationRejectionPolicy() { @Override public boolean rejectOperation(ModelNode preparedResult) { return true; } @Override public String getFailureDescription() { return context.getLogger().getRejectedResourceWarning(address, operation); } }, OperationResultTransformer.ORIGINAL_RESULT); } operation.get(TimerServiceResourceDefinition.THREAD_POOL_NAME.getName()).set(original.getModel().get(TimerServiceResourceDefinition.THREAD_POOL_NAME.getName())); return new TransformedOperation(operation, OperationResultTransformer.ORIGINAL_RESULT); }
private static <P extends ScheduledThreadPoolDefinition & ResourceDefinition> void writeScheduledThreadPoolElements(XMLElement element, P pool, XMLExtendedStreamWriter writer, ModelNode container) throws XMLStreamException { if (container.get(pool.getPathElement().getKey()).hasDefined(pool.getPathElement().getValue())) { ModelNode threadPool = container.get(pool.getPathElement().getKeyValuePair()); Iterable<Attribute> attributes = Arrays.asList(pool.getMaxThreads(), pool.getKeepAliveTime()); if (hasDefined(threadPool, attributes)) { writer.writeStartElement(element.getLocalName()); writeAttributes(writer, threadPool, attributes); writer.writeEndElement(); } } } }
@Override protected ServiceName getParentServiceName(PathAddress parentAddress) { String profileName = null; for (final PathElement element : parentAddress) { if (element.getKey().equals(EJB3SubsystemModel.REMOTING_PROFILE)) { profileName = element.getValue(); } } return RemotingProfileService.BASE_SERVICE_NAME.append(profileName); } }
@Override public void writeContent(final XMLExtendedStreamWriter writer, final SubsystemMarshallingContext context) throws XMLStreamException { context.startSubsystemElement(ModClusterSchema.CURRENT.getNamespaceUri(), false); ModelNode subsystemModel = context.getModelNode(); if (subsystemModel.hasDefined(ProxyConfigurationResourceDefinition.WILDCARD_PATH.getKey())) { for (Property property : subsystemModel.get(ProxyConfigurationResourceDefinition.WILDCARD_PATH.getKey()).asPropertyList()) { String name = property.getName(); ModelNode proxy = property.getValue(); writeProxy(writer, name, proxy); } } writer.writeEndElement(); }
if (model.get(SimpleLoadProviderResourceDefinition.PATH.getKeyValuePair()).isDefined()) { ModelNode loadProviderModel = model.get(SimpleLoadProviderResourceDefinition.PATH.getKeyValuePair()); writer.writeStartElement(XMLElement.SIMPLE_LOAD_PROVIDER.getLocalName()); writeAttributes(writer, loadProviderModel, SimpleLoadProviderResourceDefinition.Attribute.class); writer.writeEndElement(); if (model.get(DynamicLoadProviderResourceDefinition.PATH.getKeyValuePair()).isDefined()) { ModelNode loadProviderModel = model.get(DynamicLoadProviderResourceDefinition.PATH.getKeyValuePair()); writer.writeStartElement(XMLElement.DYNAMIC_LOAD_PROVIDER.getLocalName()); writeAttributes(writer, loadProviderModel, DynamicLoadProviderResourceDefinition.Attribute.class); if (loadProviderModel.hasDefined(LoadMetricResourceDefinition.WILDCARD_PATH.getKey())) { for (Property prop : loadProviderModel.get(LoadMetricResourceDefinition.WILDCARD_PATH.getKey()).asPropertyList()) { ModelNode metricModel = prop.getValue(); writer.writeStartElement(XMLElement.LOAD_METRIC.getLocalName()); if (loadProviderModel.hasDefined(CustomLoadMetricResourceDefinition.WILDCARD_PATH.getKey())) { for (Property prop : loadProviderModel.get(CustomLoadMetricResourceDefinition.WILDCARD_PATH.getKey()).asPropertyList()) { ModelNode customMetricModel = prop.getValue(); writer.writeStartElement(XMLElement.CUSTOM_LOAD_METRIC.getLocalName());
@Override public Resource navigate(final PathAddress address) { if (address.size() > 0 && BatchJobExecutionResourceDefinition.EXECUTION.equals(address.getElement(0).getKey())) { if (address.size() > 1) { throw new NoSuchResourceException(address.getElement(1)); } return PlaceholderResource.INSTANCE; } return delegate.navigate(address); }