Java源码示例:org.jboss.as.controller.PathElement
示例1
@Override
public TransformerEntry resolveTransformerEntry(Iterator<PathElement> iterator) {
if(!iterator.hasNext()) {
return getTransformerEntry();
} else {
final PathElement element = iterator.next();
SubRegistry sub = subRegistries.get(element.getKey());
if(sub == null) {
return null;
}
final ChainedPlaceholderResolver registry = sub.get(element.getValue());
if(registry == null) {
return null;
}
return registry.resolveTransformerEntry(iterator);
}
}
示例2
static void checkNoOtherHandlerWithTheSameName(OperationContext context) throws OperationFailedException {
final PathAddress address = context.getCurrentAddress();
final PathAddress parentAddress = address.subAddress(0, address.size() - 1);
final Resource resource = context.readResourceFromRoot(parentAddress);
final PathElement element = address.getLastElement();
final String handlerType = element.getKey();
final String handlerName = element.getValue();
for (String otherHandler: HANDLER_TYPES) {
if (handlerType.equals(otherHandler)) {
// we need to check other handler types for the same name
continue;
}
final PathElement check = PathElement.pathElement(otherHandler, handlerName);
if (resource.hasChild(check)) {
throw DomainManagementLogger.ROOT_LOGGER.handlerAlreadyExists(check.getValue(), parentAddress.append(check));
}
}
}
示例3
@Test
public void testIncludesWithNoOverriddenSubsystems() throws Exception {
//Here we test changing the includes attribute value
//Testing what happens when adding subsystems at runtime becomes a bit too hard to mock up
//so we test that in ServerManagementTestCase
PathAddress addr = getSocketBindingGroupAddress("binding-four");
ModelNode list = new ModelNode().add("binding-three");
ModelNode op = Util.getWriteAttributeOperation(addr, INCLUDES, list);
MockOperationContext operationContext = getOperationContextForSocketBindingIncludes(addr, new RootResourceInitializer() {
@Override
public void addAdditionalResources(Resource root) {
Resource subsystemA = Resource.Factory.create();
root.getChild(PathElement.pathElement(SOCKET_BINDING_GROUP, "binding-three"))
.registerChild(PathElement.pathElement(SUBSYSTEM, "a"), subsystemA);
Resource subsystemB = Resource.Factory.create();
Resource SocketBindingGroup4 = root.getChild(PathElement.pathElement(SOCKET_BINDING_GROUP, "binding-four"));
SocketBindingGroup4.registerChild(PathElement.pathElement(SUBSYSTEM, "b"), subsystemB);
}
});
SocketBindingGroupResourceDefinition.createIncludesValidationHandler().execute(operationContext, op);
operationContext.executeNextStep();
}
示例4
private void harmonizeModel(ModelVersion modelVersion, ModelNode legacyModel, ModelNode transformed,
PathAddress address, ModelHarmonizer harmonizer) {
if (address.size() > 0) {
PathElement pathElement = address.getElement(0);
if (legacyModel.hasDefined(pathElement.getKey()) && transformed.hasDefined(pathElement.getKey())) {
ModelNode legacyType = legacyModel.get(pathElement.getKey());
ModelNode transformedType = transformed.get(pathElement.getKey());
PathAddress childAddress = address.size() > 1 ? address.subAddress(1) : PathAddress.EMPTY_ADDRESS;
if (pathElement.isWildcard()) {
for (String key : legacyType.keys()) {
if (transformedType.has(key)) {
harmonizeModel(modelVersion, legacyType.get(key),
transformedType.get(key), childAddress, harmonizer);
}
}
} else {
harmonizeModel(modelVersion, legacyType.get(pathElement.getValue()),
transformedType.get(pathElement.getValue()), address, harmonizer);
}
}
} else {
harmonizer.harmonizeModel(modelVersion, legacyModel, transformed);
}
}
示例5
private void doIterate(final Resource current, final PathAddress address) {
boolean handleChildren = false;
ObjectName resourceObjectName = action.onAddress(address);
if (resourceObjectName != null &&
(accessControlUtil == null || accessControlUtil.getResourceAccess(address, false).isAccessibleResource())) {
handleChildren = action.onResource(resourceObjectName);
}
if (handleChildren) {
for (String type : current.getChildTypes()) {
if (current.hasChildren(type)) {
for (ResourceEntry entry : current.getChildren(type)) {
final PathElement pathElement = entry.getPathElement();
final PathAddress childAddress = address.append(pathElement);
doIterate(entry, childAddress);
}
}
}
}
}
示例6
@Override
public ModelNode getProfileOperations(String profileName) {
ModelNode operation = new ModelNode();
operation.get(OP).set(DESCRIBE);
operation.get(OP_ADDR).set(PathAddress.pathAddress(PathElement.pathElement(PROFILE, profileName)).toModelNode());
operation.get(SERVER_LAUNCH).set(true);
ModelNode rsp = getValue().execute(operation, null, null, null);
if (!rsp.hasDefined(OUTCOME) || !SUCCESS.equals(rsp.get(OUTCOME).asString())) {
ModelNode msgNode = rsp.get(FAILURE_DESCRIPTION);
String msg = msgNode.isDefined() ? msgNode.toString() : HostControllerLogger.ROOT_LOGGER.failedProfileOperationsRetrieval();
throw new RuntimeException(msg);
}
return rsp.require(RESULT);
}
示例7
@Test
public void testFetchFromMasterWithDiscovery() throws URISyntaxException, IOException {
String hostName = createSecondSlave(AdminOnlyDomainConfigPolicy.FETCH_FROM_MASTER, true, false);
validateProfiles("default");
// Now we validate that we can pull down further data if needed
PathAddress pa = PathAddress.pathAddress(PathElement.pathElement(HOST, hostName), PathElement.pathElement(SERVER_CONFIG, "other1"));
ModelNode op = Util.createAddOperation(pa);
op.get(GROUP).set("other-server-group");
executeForResult(domainSlaveLifecycleUtil.getDomainClient(), op);
// This should have pulled down the 'other' profile
validateProfiles("default", "other");
// ModelNode remove = Util.createRemoveOperation(pa);
// executeForResult(domainSlaveLifecycleUtil.getDomainClient(), remove);
//
// // This should have pulled down the 'other' profile
// validateProfiles("default");
}
示例8
/**
* Creates an alias address by replacing all wildcard values by $ + key so that the address can be used to obtain a capability pattern.
* @param pa the registration address to be aliased.
* @return the aliased address.
*/
private PathAddress createAliasPathAddress(PathAddress pa) {
ImmutableManagementResourceRegistration registry = registration.getParent();
List<PathElement> elements = new ArrayList<>();
for(int i = pa.size() - 1; i >=0; i--) {
PathElement elt = pa.getElement(i);
ImmutableManagementResourceRegistration childRegistration = registry.getSubModel(PathAddress.pathAddress(PathElement.pathElement(elt.getKey())));
if(childRegistration == null) {
elements.add(elt);
} else {
elements.add(PathElement.pathElement(elt.getKey(), "$" + elt.getKey()));
}
registry = registry.getParent();
}
Collections.reverse(elements);
return PathAddress.pathAddress(elements.toArray(new PathElement[elements.size()]));
}
示例9
private void resolvePathTransformers(Iterator<PathElement> iterator, List<PathAddressTransformer> list, PlaceholderResolver placeholderResolver) {
if(iterator.hasNext()) {
final PathElement element = iterator.next();
SubRegistry sub = subRegistriesUpdater.get(this, element.getKey());
if(sub != null) {
final OperationTransformerRegistry reg = sub.get(element.getValue());
if(reg != null) {
list.add(reg.getPathAddressTransformer());
if (reg.isPlaceholder() && placeholderResolver != null) {
placeholderResolver.resolvePathTransformers(iterator, list);
} else {
reg.resolvePathTransformers(iterator, list, placeholderResolver);
}
return;
}
}
list.add(PathAddressTransformer.DEFAULT);
return;
}
}
示例10
private boolean ignoreSocketBindingGroups(final Resource domainResource, final Collection<ServerConfigInfo> serverConfigs, final String name) {
Set<String> seenGroups = new HashSet<>();
Set<String> socketBindingGroups = new HashSet<>();
for (ServerConfigInfo serverConfig : serverConfigs) {
final String socketBindingGroup;
if (serverConfig.getSocketBindingGroup() != null) {
if (serverConfig.getSocketBindingGroup().equals(name)) {
return false;
}
socketBindingGroup = serverConfig.getSocketBindingGroup();
} else {
if (seenGroups.contains(serverConfig.getServerGroup())) {
continue;
}
seenGroups.add(serverConfig.getServerGroup());
Resource serverGroupResource = domainResource.getChild(PathElement.pathElement(SERVER_GROUP, serverConfig.getServerGroup()));
socketBindingGroup = serverGroupResource.getModel().get(SOCKET_BINDING_GROUP).asString();
if (socketBindingGroup.equals(name)) {
return false;
}
}
processSocketBindingGroups(domainResource, socketBindingGroup, socketBindingGroups);
}
return !socketBindingGroups.contains(name);
}
示例11
@Override
protected void initializeExtraSubystemsAndModel(ExtensionRegistry extensionRegistry, Resource rootResource,
ManagementResourceRegistration rootRegistration, RuntimeCapabilityRegistry capabilityRegistry) {
super.initializeExtraSubystemsAndModel(extensionRegistry, rootResource, rootRegistration, capabilityRegistry);
Resource coreManagement = Resource.Factory.create();
rootResource.registerChild(CoreManagementResourceDefinition.PATH_ELEMENT, coreManagement);
Resource auditLog = Resource.Factory.create();
coreManagement.registerChild(AccessAuditResourceDefinition.PATH_ELEMENT, auditLog);
Resource testFileHandler = Resource.Factory.create();
testFileHandler.getModel().setEmptyObject();
auditLog.registerChild(PathElement.pathElement(FILE_HANDLER, "test"), testFileHandler);
}
示例12
private static String findSubsystemName(PathAddress pathAddress) {
for (PathElement element : pathAddress) {
if (element.getKey().equals(SUBSYSTEM)) {
return element.getValue();
}
}
return null;
}
示例13
Set<String> pullDownContent(final Resource domainRootResource) {
// Make sure we have all needed deployment and management client content
for (final String id : relevantDeployments) {
final Set<ContentReference> hashes = deploymentHashes.remove(id);
if (hashes != null) {
requiredContent.addAll(hashes);
}
}
for (final ContentReference reference : requiredContent) {
parameters.getFileRepository().getDeploymentFiles(reference);
parameters.getContentRepository().addContentReference(reference);
}
if (updateRolloutPlans) {
final PathElement rolloutPlansElement = PathElement.pathElement(MANAGEMENT_CLIENT_CONTENT, ROLLOUT_PLANS);
final Resource existing = domainRootResource.removeChild(rolloutPlansElement);
if (existing != null) {
final ModelNode hashNode = existing.getModel().get(HASH);
if (hashNode.isDefined()) {
removedContent.add(
new ContentReference(PathAddress.pathAddress(rolloutPlansElement).toCLIStyleString(), hashNode.asBytes()));
}
}
ManagedDMRContentTypeResource rolloutPlansResource =
new ManagedDMRContentTypeResource(PathAddress.pathAddress(rolloutPlansElement), ROLLOUT_PLAN,
rolloutPlansHash, parameters.getContentRepository());
domainRootResource.registerChild(rolloutPlansElement, rolloutPlansResource);
}
final Set<String> servers = new HashSet<>();
for (String group : affectedGroups) {
if (serversByGroup.containsKey(group)) {
servers.addAll(serversByGroup.get(group));
}
}
return servers;
}
示例14
public static Model readModel(final ImmutableManagementResourceRegistration def, final PathAddress address) {
Model res = new Model(address);
Set<String> attributesList = def.getAttributeNames(PathAddress.EMPTY_ADDRESS);
for (String name : attributesList) {
res.addAttribute(name);
}
for (PathElement element : def.getChildAddresses(PathAddress.EMPTY_ADDRESS)) {
final ImmutableManagementResourceRegistration child = def.getSubModel(PathAddress.pathAddress(element));
if (child != null) {
res.addChild(readModel(child, address.append(element)));
}
}
return res;
}
示例15
private BoundedQueueThreadPoolResourceDefinition(boolean blocking, boolean registerRuntimeOnly, PathElement path,
RuntimeCapability<Void> capability, ServiceName serviceNameBase,
String resolverPrefix, OperationStepHandler addHandler,
OperationStepHandler removeHandler) {
super(new SimpleResourceDefinition.Parameters(path, new ThreadPoolResourceDescriptionResolver(resolverPrefix,
ThreadsExtension.RESOURCE_NAME, ThreadsExtension.class.getClassLoader()))
.setAddHandler(addHandler)
.setRemoveHandler(removeHandler)
.setCapabilities(capability));
this.registerRuntimeOnly = registerRuntimeOnly;
this.blocking = blocking;
metricsHandler = new BoundedQueueThreadPoolMetricsHandler(capability, serviceNameBase);
writeHandler = new BoundedQueueThreadPoolWriteAttributeHandler(blocking, capability, serviceNameBase);
}
示例16
private ChainedPlaceholderResolver resolveChild(final Iterator<PathElement> iterator) {
if(! iterator.hasNext()) {
return this;
} else {
final PathElement element = iterator.next();
SubRegistry sub = subRegistries.get(element.getKey());
if(sub == null) {
return null;
}
return sub.get(element.getValue(), iterator);
}
}
示例17
@Override
public void processChild(final PathElement element, Resource child) throws OperationFailedException {
final PathAddress childAddress = read.append(element); // read
final TransformerEntry entry = resolveTransformerEntry(childAddress);
final PathAddressTransformer path = entry.getPathTransformation();
final PathAddress currentAddress = path.transform(element, new PathAddressTransformer.Builder() { // write
@Override
public PathAddress getOriginal() {
return childAddress;
}
@Override
public PathAddress getCurrent() {
return current;
}
@Override
public PathAddress getRemaining() {
return PathAddress.EMPTY_ADDRESS.append(element);
}
@Override
public PathAddress next(PathElement... elements) {
return current.append(elements);
}
});
final ResourceTransformer transformer = resolveTransformer(entry, childAddress);
final ResourceTransformationContext childContext =
new ResourceTransformationContextImpl(root, currentAddress, childAddress, originalModel,
transformerOperationAttachment, ignoredTransformationRegistry);
transformer.transformResource(childContext, currentAddress, child);
}
示例18
Map<PathElement, Node> getRemoteChildrenOfType(String type) {
Map<PathElement, Node> map = remote.childrenByType.get(type);
if (map != null) {
return map;
}
return Collections.emptyMap();
}
示例19
protected AbstractHandlerDefinition(final PathElement path,
final Class<? extends Handler> type,
final AttributeDefinition[] attributes,
final ConfigurationProperty<?>... constructionProperties) {
this(createParameters(path, type, PropertySorter.NO_OP, attributes, constructionProperties),
true, PropertySorter.NO_OP, null, attributes);
}
示例20
@Override
public Resource removeChild(PathElement address) {
final Resource toRemove = getChild(address);
if (toRemove != null) {
synchronized (content) {
content.remove(address.getValue());
}
try{
storeContent();
} catch (IOException e) {
throw new ContentStorageException(e);
}
}
return toRemove;
}
示例21
@Override
public Resource requireChild(PathElement address) {
final Resource resource = getChild(address);
if (resource == null) {
throw new NoSuchResourceException(address);
}
return resource;
}
示例22
private boolean isWFCORE621Needed(ImmutableManagementResourceRegistration registration, PathAddress remaining) {
if (remaining.size() > 0) {
PathElement pe = remaining.getElement(0);
if (pe.isMultiTarget() && RUNNING_SERVER.equals(pe.getKey())) {
// We only need this for WildFly 8 and earlier (including EAP 6),
// so that's proxied controllers running kernel version 1.x or 2.x
ModelVersion modelVersion = registration.getProxyController(PathAddress.EMPTY_ADDRESS).getKernelModelVersion();
return modelVersion.getMajor() < 3;
}
}
return false;
}
示例23
/**
* Test of getNameFromAddress method, of class Util.
*/
@Test
public void testGetNameFromAddress_PathAddress() {
System.out.println("getNameFromAddress");
PathAddress address = PathAddress.EMPTY_ADDRESS;
assertThat(Util.getNameFromAddress(address), is(nullValue()));
address = PathAddress.pathAddress(PathElement.pathElement("subsystem"));
assertThat(Util.getNameFromAddress(address), is(PathElement.WILDCARD_VALUE));
address = PathAddress.pathAddress("subsystem", "test");
assertThat(Util.getNameFromAddress(address), is("test"));
}
示例24
@Test
public void testIncludesWithOverriddenSocketBindings() throws Exception {
try {
//Here we test changing the includes attribute value
//Testing what happens when adding subsystems at runtime becomes a bit too hard to mock up
//so we test that in ServerManagementTestCase
PathAddress addr = getSocketBindingGroupAddress("binding-four");
ModelNode list = new ModelNode().add("binding-three");
ModelNode op = Util.getWriteAttributeOperation(addr, INCLUDES, list);
MockOperationContext operationContext = getOperationContextForSocketBindingIncludes(addr, new RootResourceInitializer() {
@Override
public void addAdditionalResources(Resource root) {
Resource subsystemA = Resource.Factory.create();
root.getChild(PathElement.pathElement(SOCKET_BINDING_GROUP, "binding-three"))
.registerChild(PathElement.pathElement(SOCKET_BINDING, "a"), subsystemA);
Resource subsystemB = Resource.Factory.create();
Resource SocketBindingGroup4 = root.getChild(PathElement.pathElement(SOCKET_BINDING_GROUP, "binding-four"));
SocketBindingGroup4.registerChild(PathElement.pathElement(SOCKET_BINDING, "a"), subsystemB);
}
});
SocketBindingGroupResourceDefinition.createIncludesValidationHandler().execute(operationContext, op);
operationContext.executeNextStep();
Assert.fail("Expected error");
} catch (OperationFailedException expected) {
Assert.assertTrue(expected.getMessage().contains("166"));
Assert.assertTrue(expected.getMessage().contains("'binding-four'"));
Assert.assertTrue(expected.getMessage().contains("'binding-three'"));
Assert.assertTrue(expected.getMessage().contains("'a'"));
}
}
示例25
@Override
public ManagementResourceRegistration registerSubModel(final ResourceDefinition resourceDefinition) {
Assert.checkNotNullParam("resourceDefinition", resourceDefinition);
final PathElement address = resourceDefinition.getPathElement();
if (address == null) {
throw ControllerLogger.ROOT_LOGGER.cannotRegisterSubmodelWithNullPath();
}
final ManagementResourceRegistration existing = getSubRegistration(PathAddress.pathAddress(address));
if (existing != null && existing.getPathAddress().getLastElement().getValue().equals(address.getValue())) {
throw ControllerLogger.ROOT_LOGGER.nodeAlreadyRegistered(existing.getPathAddress().toCLIStyleString());
}
final NodeSubregistry child = getOrCreateSubregistry(address.getKey());
return child.registerChild(address.getValue(), resourceDefinition);
}
示例26
private ManagedDMRContentResourceDefinition(final String childType,
final AttributeDefinition contentDefinition,
final ResourceDescriptionResolver descriptionResolver) {
super(PathElement.pathElement(childType),
descriptionResolver,
null,
ManagedDMRContentRemoveHandler.INSTANCE,
OperationEntry.Flag.RESTART_NONE, OperationEntry.Flag.RESTART_NONE);
this.contentDefinition = contentDefinition;
}
示例27
private SimpleRegexRealmMapperDefinition() {
super(new Parameters(PathElement.pathElement(ElytronDescriptionConstants.SIMPLE_REGEX_REALM_MAPPER), ElytronExtension.getResourceDescriptionResolver(ElytronDescriptionConstants.SIMPLE_REGEX_REALM_MAPPER))
.setAddHandler(ADD)
.setRemoveHandler(REMOVE)
.setAddRestartLevel(OperationEntry.Flag.RESTART_RESOURCE_SERVICES)
.setRemoveRestartLevel(OperationEntry.Flag.RESTART_RESOURCE_SERVICES)
.setCapabilities(REALM_MAPPER_RUNTIME_CAPABILITY));
}
示例28
private PathAddress getIdpPath() {
return PathAddress.EMPTY_ADDRESS
.append(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakSamlExtension.SUBSYSTEM_NAME))
.append(PathElement.pathElement(Constants.Model.SECURE_DEPLOYMENT, "my-app.war"))
.append(PathElement.pathElement(Constants.Model.SERVICE_PROVIDER, "http://localhost:8080/sales-post-enc/"))
.append(PathElement.pathElement(Constants.Model.IDENTITY_PROVIDER, "idp"));
}
示例29
/**
* Determine the relevant pieces of configuration which need to be included when processing the domain model.
*
* @param root the resource root
* @param requiredConfigurationHolder the resolution context
* @param serverConfig the server config
* @param extensionRegistry the extension registry
*/
static void processServerConfig(final Resource root, final RequiredConfigurationHolder requiredConfigurationHolder, final IgnoredNonAffectedServerGroupsUtil.ServerConfigInfo serverConfig, final ExtensionRegistry extensionRegistry) {
final Set<String> serverGroups = requiredConfigurationHolder.serverGroups;
final Set<String> socketBindings = requiredConfigurationHolder.socketBindings;
String sbg = serverConfig.getSocketBindingGroup();
if (sbg != null && !socketBindings.contains(sbg)) {
processSocketBindingGroup(root, sbg, requiredConfigurationHolder);
}
final String groupName = serverConfig.getServerGroup();
final PathElement groupElement = PathElement.pathElement(SERVER_GROUP, groupName);
// Also check the root, since this also gets executed on the slave which may not have the server-group configured yet
if (!serverGroups.contains(groupName) && root.hasChild(groupElement)) {
final Resource serverGroup = root.getChild(groupElement);
final ModelNode groupModel = serverGroup.getModel();
serverGroups.add(groupName);
// Include the socket binding groups
if (groupModel.hasDefined(SOCKET_BINDING_GROUP)) {
final String socketBindingGroup = groupModel.get(SOCKET_BINDING_GROUP).asString();
processSocketBindingGroup(root, socketBindingGroup, requiredConfigurationHolder);
}
final String profileName = groupModel.get(PROFILE).asString();
processProfile(root, profileName, requiredConfigurationHolder, extensionRegistry);
}
}
示例30
SSLSessionDefinition(boolean server) {
super(new Parameters(PathElement.pathElement(ElytronDescriptionConstants.SSL_SESSION), RESOURCE_DESCRIPTION_RESOLVER)
.setAddRestartLevel(OperationEntry.Flag.RESTART_NONE)
.setRemoveRestartLevel(OperationEntry.Flag.RESTART_RESOURCE_SERVICES)
.setRuntime());
this.server = server;
}