I work on an extension, this extensensio has a model like this (simplified) :
[domain@localhost:9999 /] /host=dcs1/server=dcs1/subsystem=config-mgnt:read-resource-description
{
"outcome" => "success",
"result" => {
"description" => "ConfigManagement Extension",
"head-comment-allowed" => true,
"tail-comment-allowed" => true,
"namespace" => "urn:de.xxxx:1.0",
"attributes" => {
"user" => {
"description" => "user name",
"type" => STRING,
"required" => true,
"nillable" => false,
"access-type" => "read-only",
"storage" => "configuration",
"restart-required" => "no-services"
},
"credential" => {
"description" => "user credential",
"type" => STRING,
"required" => true,
"nillable" => false,
"access-type" => "read-only",
"storage" => "configuration",
"restart-required" => "no-services"
}
}
}
}
In standalone mode, I can populate the parsed model in an an step handler (AbstractBoottimeAddStepHandler.populateModel)
Log:
19:04:01,651 DEBUG [config-management] (ServerService Thread Pool -- 48) performBoottime {
"address" => [("subsystem" => "config-mgnt")],
"user" => "dcs",
"credential" => "xxxx"
}
CLI:
[standalone@localhost:9999 /] /subsystem=config-mgnt:read-resource
{
"outcome" => "success",
"result" => {
"address" => [("subsystem" => "config-mgnt")],
"credential" => "xxxx",
"user" => "dcs"
}
}
in domain mode the handler received only an model node with operation and address.
Log :
[Server:dcs1] 19:01:24,258 DEBUG [config-management] (ServerService Thread Pool -- 26) performBoottime {"address" => [("subsystem" => "config-mgnt")]}
CLI:
[domain@localhost:9999 /] /host=dcs1/server=dcs1/subsystem=config-mgnt:read-resource
{
"outcome" => "success",
"result" => {"address" => [("subsystem" => "config-mgnt")]}
}
The Subsystem looks like this:
@Overridepublic void initialize(ExtensionContext context) { final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME); subsystem.registerXMLElementWriter(ConfigManagementSubsystemParser.INSTANCE); final ManagementResourceRegistration registration = subsystem.registerSubsystemModel(ConfigManagementDescriptionProvider.SubsytemDescription); registration.registerOperationHandler(ADD, ConfigManagementExtensionAdd.INSTANCE, ConfigManagementDescriptionProvider.SubsystemAddDescription, false); registration.registerOperationHandler(DESCRIBE, ConfigManagementDescriptionProvider.INSTANCE, ConfigManagementDescriptionProvider.INSTANCE, false, OperationEntry.EntryType.PRIVATE); registration.registerReadWriteAttribute(PROPAGATION, null, new ConfigParamWriteHandler(), Storage.CONFIGURATION); registration.registerReadWriteAttribute(CONTROLLER, null, new ConfigParamWriteHandler(), Storage.CONFIGURATION); registration.registerReadWriteAttribute(USER_CREDENTIAL, null, new ConfigParamWriteHandler(), Storage.CONFIGURATION); registration.registerReadWriteAttribute(USER_NAME, null, new ConfigParamWriteHandler(), Storage.CONFIGURATION); ....
If compare this e.g. with other extensions (e.g. Webservices, Transactions etc), I can't find any differences in the way, how the subsystem, description providers etc. are implemented.
I guess, I forget an little important step, but I can't find it ... X-(