static PathAddress cacheAddress(PathAddress transactionAddress) { return transactionAddress.subAddress(0, transactionAddress.size() - 1); }
@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 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); }
@Override public void execute(OperationContext context, ModelNode operation) throws OperationFailedException { final PathAddress address = PathAddress.pathAddress(operation.get(ModelDescriptionConstants.OP_ADDR)); final Resource web = context.readResourceFromRoot(address.subAddress(0, address.size() - 1), false); final ModelNode subModel = web.getModel(); final String host = DeploymentDefinition.VIRTUAL_HOST.resolveModelAttribute(context, subModel).asString(); final String path = DeploymentDefinition.CONTEXT_ROOT.resolveModelAttribute(context, subModel).asString(); final String server = DeploymentDefinition.SERVER.resolveModelAttribute(context, subModel).asString(); context.addStep(new OperationStepHandler() { @Override public void execute(final OperationContext context, final ModelNode operation) { final ServiceController<?> deploymentServiceController = context.getServiceRegistry(false).getService(UndertowService.deploymentServiceName(server, host, path)); if (deploymentServiceController == null) { return; } final UndertowDeploymentService deploymentService = (UndertowDeploymentService) deploymentServiceController.getService(); final DeploymentInfo deploymentInfo = deploymentService.getDeploymentInfoInjectedValue().getValue(); final ServletInfo servlet = deploymentInfo.getServlets().get(context.getCurrentAddressValue()); ModelNode response = new ModelNode(); response.setEmptyList(); for (String mapping : servlet.getMappings()) { response.add(mapping); } } }, OperationContext.Stage.RUNTIME); } });
@Override protected void addChildOperation(PathAddress parent, List<ModelNode> operations, ModelNode results) { assert parent.size() == 1; assert parent.getLastElement().getKey().equals(PROFILE); for (final ModelNode operation : operations) { final PathAddress child = PathAddress.pathAddress(operation.require(OP_ADDR)); assert child.getElement(0).getKey().equals(SUBSYSTEM); operation.get(OP_ADDR).set(parent.append(child).toModelNode()); results.add(operation); } }
final String name = context.getCurrentAddressValue(); final String locationType = address.getElement(address.size() - 2).getKey(); final PathAddress hostAddress = address.getParent(); final PathAddress serverAddress = hostAddress.getParent(); final String serverName = serverAddress.getLastElement().getValue(); final String hostName = hostAddress.getLastElement().getValue(); locationService = context.getCapabilityServiceName(Capabilities.CAPABILITY_HOST, FilterLocation.class, serverName, hostName); } else { final PathAddress hostAddress = locationAddress.getParent(); final PathAddress serverAddress = hostAddress.getParent(); final String locationName = locationAddress.getLastElement().getValue(); final String serverName = serverAddress.getLastElement().getValue(); final String hostName = hostAddress.getLastElement().getValue(); String predicateString = model.get(PREDICATE.getName()).asString(); predicate = PredicateParser.parse(predicateString, getClass().getClassLoader());
private T getDataSourceConfig(final PathAddress operationAddress) throws OperationFailedException { final List<PathElement> relativeAddress = new ArrayList<PathElement>(); for (int i = operationAddress.size() - 1; i >= 0; i--) { PathElement pe = operationAddress.getElement(i); relativeAddress.add(0, pe); if (ModelDescriptionConstants.DEPLOYMENT.equals(pe.getKey())) { break; } } final PathAddress pa = PathAddress.pathAddress(relativeAddress); final T config; if(operationAddress.getLastElement().getKey().equals(CONNECTION_PROPERTIES) || operationAddress.getLastElement().getKey().equals(XA_DATASOURCE_PROPERTIES)) { config = dataSourceConfigs.get(pa.subAddress(0, pa.size() - 1)); } else { config = dataSourceConfigs.get(pa); } if (config == null) { String exceptionMessage = ConnectorLogger.ROOT_LOGGER.noDataSourceRegisteredForAddress(operationAddress); throw new OperationFailedException(exceptionMessage); } return config; }
@Override public void convert(PathAddress address, String name, ModelNode value, ModelNode model, TransformationContext context) { if (value.isDefined()) { PathAddress rootAddress = address.subAddress(0, address.size() - 4); PathAddress subsystemAddress = rootAddress.append(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, "datasources")); Resource subsystem = context.readResourceFromRoot(subsystemAddress); String poolName = value.asString(); for (String type : Arrays.asList("data-source", "xa-data-source")) { if (subsystem.hasChildren(type)) { for (Resource.ResourceEntry entry : subsystem.getChildren(type)) { if (entry.getName().equals(poolName)) { value.set(entry.getModel().get("jndi-name")); return; } } } } } } };
@Override public void convert(PathAddress address, String name, ModelNode value, ModelNode model, TransformationContext context) { if (!value.isDefined()) { PathAddress rootAddress = address.subAddress(0, address.size() - 3); PathAddress subsystemAddress = rootAddress.append(JGroupsSubsystemResourceDefinition.PATH); ModelNode subsystemModel = context.readResourceFromRoot(subsystemAddress).getModel(); String channelName = null; if (model.hasDefined(Attribute.CHANNEL.getName())) { ModelNode channel = model.get(Attribute.CHANNEL.getName()); if (channel.getType() == ModelType.STRING) { channelName = channel.asString(); ModelNode defaultChannel = subsystemModel.get(JGroupsSubsystemResourceDefinition.Attribute.DEFAULT_CHANNEL.getName()); if (defaultChannel.getType() == ModelType.STRING) { channelName = defaultChannel.asString(); ModelNode channel = context.readResourceFromRoot(channelAddress).getModel(); if (channel.hasDefined(ChannelResourceDefinition.Attribute.STACK.getName())) { ModelNode stack = channel.get(ChannelResourceDefinition.Attribute.STACK.getName()); if (stack.getType() == ModelType.STRING) { value.set(stack.asString());
@Override public final void execute(OperationContext context, ModelNode operation) throws OperationFailedException { PathAddress address = context.getCurrentAddress(); int current = address.size() - 1; String balancerName = address.getElement(current--).getValue(); String modClusterName = address.getElement(current--).getValue(); ModClusterService service = ModClusterResource.service(modClusterName); if (service == null) { context.getResult().set(new ModelNode()); context.completeStep(OperationContext.ResultHandler.NOOP_RESULT_HANDLER); return; } ModClusterStatus.LoadBalancer balancer = service.getModCluster().getController().getStatus().getLoadBalancer(balancerName); if (balancer == null) { context.getResult().set(new ModelNode()); context.completeStep(OperationContext.ResultHandler.NOOP_RESULT_HANDLER); return; } handleNode(context, balancer, operation); }
@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 void execute(final OperationContext context, final ModelNode operation) throws OperationFailedException { final PathAddress address = PathAddress.pathAddress(operation.get(ModelDescriptionConstants.OP_ADDR)); final Resource web = context.readResourceFromRoot(address.subAddress(0, address.size() - 1), false); final ModelNode subModel = web.getModel(); final String host = DeploymentDefinition.VIRTUAL_HOST.resolveModelAttribute(context, subModel).asString(); final String path = DeploymentDefinition.CONTEXT_ROOT.resolveModelAttribute(context, subModel).asString(); final String server = DeploymentDefinition.SERVER.resolveModelAttribute(context, subModel).asString(); context.addStep(new OperationStepHandler() { @Override public void execute(final OperationContext context, final ModelNode operation) { final ServiceController<?> deploymentServiceController = context.getServiceRegistry(false).getService(UndertowService.deploymentServiceName(server, host, path)); if (deploymentServiceController == null) { return; } final UndertowDeploymentService deploymentService = (UndertowDeploymentService) deploymentServiceController.getService(); final DeploymentInfo deploymentInfo = deploymentService.getDeploymentInfoInjectedValue().getValue(); final UndertowMetricsCollector collector = (UndertowMetricsCollector)deploymentInfo.getMetricsCollector(); MetricsHandler.MetricResult result = collector != null ? collector.getMetrics(context.getCurrentAddressValue()) : null; if (result != null) { final ModelNode response = new ModelNode(); handle(response, result); context.getResult().set(response); } } }, OperationContext.Stage.RUNTIME); } }
@Override protected void addChildOperation(PathAddress parent, List<ModelNode> operations, ModelNode results) { assert parent.size() == 1; assert parent.getLastElement().getKey().equals(PROFILE); for (final ModelNode operation : operations) { final PathAddress child = PathAddress.pathAddress(operation.require(OP_ADDR)); assert child.getElement(0).getKey().equals(SUBSYSTEM); operation.get(OP_ADDR).set(parent.append(child).toModelNode()); results.add(operation); } }
@Override public void convertResourceAttribute(PathAddress address, String name, ModelNode value, TransformationContext context) { ModelNode remoteSite = context.readResourceFromRoot(address).getModel(); String channelName = remoteSite.get(Attribute.CHANNEL.getName()).asString(); if (DeprecatedAttribute.STACK.getName().equals(name)) { PathAddress subsystemAddress = address.subAddress(0, address.size() - 3); PathAddress channelAddress = subsystemAddress.append(ChannelResourceDefinition.pathElement(channelName)); ModelNode channel = context.readResourceFromRoot(channelAddress).getModel(); if (channel.hasDefined(ChannelResourceDefinition.Attribute.STACK.getName())) { value.set(channel.get(ChannelResourceDefinition.Attribute.STACK.getName()).asString()); } else { ModelNode subsystem = context.readResourceFromRoot(subsystemAddress).getModel(); value.set(subsystem.get(JGroupsSubsystemResourceDefinition.Attribute.DEFAULT_STACK.getName()).asString()); } } else if (DeprecatedAttribute.CLUSTER.getName().equals(name)) { value.set(channelName); } else { throw new IllegalStateException(); } } };
@Override public boolean reject(PathAddress address, String name, ModelNode value, ModelNode model, TransformationContext context) { if (value.isDefined()) return false; PathAddress rootAddress = address.subAddress(0, address.size() - 3); PathAddress subsystemAddress = rootAddress.append(JGroupsSubsystemResourceDefinition.PATH); ModelNode subsystemModel = context.readResourceFromRoot(subsystemAddress).getModel(); String channelName = null; if (model.hasDefined(Attribute.CHANNEL.getName())) { ModelNode channel = model.get(Attribute.CHANNEL.getName()); if (channel.getType() == ModelType.STRING) { channelName = channel.asString(); ModelNode defaultChannel = subsystemModel.get(JGroupsSubsystemResourceDefinition.Attribute.DEFAULT_CHANNEL.getName()); if (defaultChannel.getType() == ModelType.STRING) { channelName = defaultChannel.asString(); ModelNode channel = context.readResourceFromRoot(channelAddress).getModel(); if (channel.hasDefined(ChannelResourceDefinition.Attribute.STACK.getName())) { ModelNode stack = channel.get(ChannelResourceDefinition.Attribute.STACK.getName()); if (stack.getType() == ModelType.STRING) { stackName = stack.asString();
@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)); }
@Override public final void execute(OperationContext context, ModelNode operation) throws OperationFailedException { PathAddress address = context.getCurrentAddress(); int current = address.size() - 1; String contextName = address.getElement(current--).getValue(); String nodeName = address.getElement(current--).getValue(); String balancerName = address.getElement(current--).getValue(); String modClusterName = address.getElement(current--).getValue(); ModClusterService service = ModClusterResource.service(modClusterName);
@Override public PathAddress transform(PathAddress address) { return address.subAddress(0, address.size() - 1).append(LEGACY_PATH); } };
@Override public Resource navigate(final PathAddress address) { if (address.size() > 0 && BALANCER.equals(address.getElement(0).getKey())) { final Resource modClusterBalancerResource = requireChild(address.getElement(0)); if(address.size() == 1) { return modClusterBalancerResource; } else { return modClusterBalancerResource.navigate(address.subAddress(1)); } } return delegate.navigate(address); }
private static SessionManager getSessionManager(OperationContext context, ModelNode operation) throws OperationFailedException { final PathAddress address = PathAddress.pathAddress(operation.get(ModelDescriptionConstants.OP_ADDR)); final Resource web = context.readResourceFromRoot(address.subAddress(0, address.size()), false); final ModelNode subModel = web.getModel(); final String host = VIRTUAL_HOST.resolveModelAttribute(context, subModel).asString(); final String path = CONTEXT_ROOT.resolveModelAttribute(context, subModel).asString(); final String server = SERVER.resolveModelAttribute(context, subModel).asString(); final UndertowDeploymentService deploymentService; final ServiceController<?> controller = context.getServiceRegistry(false).getService(UndertowService.deploymentServiceName(server, host, path)); if (controller != null && controller.getState() != ServiceController.State.UP) {//check if deployment is active at all throw UndertowLogger.ROOT_LOGGER.sessionManagerNotAvailable(); } else { deploymentService = (UndertowDeploymentService) controller.getService(); if (deploymentService == null || deploymentService.getDeployment() == null) { //we might be in shutdown and it is possible throw UndertowLogger.ROOT_LOGGER.sessionManagerNotAvailable(); } } Deployment deployment = deploymentService.getDeployment(); return deployment.getSessionManager(); }