Skip to content

Commit 33981dc

Browse files
jamezpkabir
authored andcommitted
[WFLY-2238] Add model version 2.0.0 transformers to logging.
1 parent 736506c commit 33981dc

16 files changed

+7563
-89
lines changed

logging/src/main/java/org/jboss/as/logging/AbstractHandlerDefinition.java

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import org.jboss.as.controller.SimpleAttributeDefinitionBuilder;
4747
import org.jboss.as.controller.SimpleOperationDefinition;
4848
import org.jboss.as.controller.SimpleOperationDefinitionBuilder;
49-
import org.jboss.as.controller.SimpleResourceDefinition;
5049
import org.jboss.as.controller.descriptions.ResourceDescriptionResolver;
5150
import org.jboss.as.controller.registry.ManagementResourceRegistration;
5251
import org.jboss.as.controller.transform.description.DiscardAttributeChecker;
@@ -60,7 +59,7 @@
6059
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a>
6160
* @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
6261
*/
63-
abstract class AbstractHandlerDefinition extends SimpleResourceDefinition {
62+
abstract class AbstractHandlerDefinition extends TransformerResourceDefinition {
6463

6564
public static final String UPDATE_OPERATION_NAME = "update-properties";
6665
public static final String CHANGE_LEVEL_OPERATION_NAME = "change-log-level";
@@ -215,6 +214,44 @@ public void registerOperations(final ManagementResourceRegistration registration
215214
registration.registerOperationHandler(updateProperties, new HandlerOperations.HandlerUpdateOperationStepHandler(propertySorter, writableAttributes));
216215
}
217216

217+
@Override
218+
public void registerTransformers(final KnownModelVersion modelVersion,
219+
final ResourceTransformationDescriptionBuilder rootResourceBuilder,
220+
final ResourceTransformationDescriptionBuilder loggingProfileBuilder) {
221+
if (modelVersion.hasTransformers()) {
222+
final PathElement pathElement = getPathElement();
223+
final ResourceTransformationDescriptionBuilder resourceBuilder = rootResourceBuilder.addChildResource(pathElement);
224+
final ResourceTransformationDescriptionBuilder loggingProfileResourceBuilder = loggingProfileBuilder.addChildResource(pathElement);
225+
switch (modelVersion) {
226+
case VERSION_1_2_0:
227+
case VERSION_1_3_0: {
228+
resourceBuilder
229+
.getAttributeBuilder()
230+
.setDiscard(DiscardAttributeChecker.UNDEFINED, NAMED_FORMATTER)
231+
.addRejectCheck(RejectAttributeChecker.DEFINED, NAMED_FORMATTER)
232+
.end();
233+
loggingProfileResourceBuilder
234+
.getAttributeBuilder()
235+
.setDiscard(DiscardAttributeChecker.UNDEFINED, NAMED_FORMATTER)
236+
.addRejectCheck(RejectAttributeChecker.DEFINED, NAMED_FORMATTER)
237+
.end();
238+
}
239+
}
240+
registerResourceTransformers(modelVersion, resourceBuilder, loggingProfileResourceBuilder);
241+
}
242+
}
243+
244+
/**
245+
* Register the transformers for the resource.
246+
*
247+
* @param modelVersion the model version we're registering
248+
* @param resourceBuilder the builder for the resource
249+
* @param loggingProfileBuilder the builder for the logging profile
250+
*/
251+
protected abstract void registerResourceTransformers(KnownModelVersion modelVersion,
252+
ResourceTransformationDescriptionBuilder resourceBuilder,
253+
ResourceTransformationDescriptionBuilder loggingProfileBuilder);
254+
218255
/**
219256
* Register the transformers for the handler.
220257
* <p/>

logging/src/main/java/org/jboss/as/logging/AsyncHandlerResourceDefinition.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,11 @@ public void registerOperations(final ManagementResourceRegistration registration
125125
registration.registerOperationHandler(REMOVE_HANDLER, HandlerOperations.REMOVE_SUBHANDLER);
126126
}
127127

128+
@Override
129+
protected void registerResourceTransformers(final KnownModelVersion modelVersion, final ResourceTransformationDescriptionBuilder resourceBuilder, final ResourceTransformationDescriptionBuilder loggingProfileBuilder) {
130+
131+
}
132+
128133
/**
129134
* Add the transformers for the async handler.
130135
*

logging/src/main/java/org/jboss/as/logging/ConsoleHandlerResourceDefinition.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,9 @@ static ResourceTransformationDescriptionBuilder addTransformers(final ResourceTr
7979

8080
return registerTransformers(child);
8181
}
82+
83+
@Override
84+
protected void registerResourceTransformers(final KnownModelVersion modelVersion, final ResourceTransformationDescriptionBuilder resourceBuilder, final ResourceTransformationDescriptionBuilder loggingProfileBuilder) {
85+
86+
}
8287
}

logging/src/main/java/org/jboss/as/logging/CustomHandlerResourceDefinition.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,9 @@ static ResourceTransformationDescriptionBuilder addTransformers(final ResourceTr
104104

105105
return registerTransformers(child);
106106
}
107+
108+
@Override
109+
protected void registerResourceTransformers(final KnownModelVersion modelVersion, final ResourceTransformationDescriptionBuilder resourceBuilder, final ResourceTransformationDescriptionBuilder loggingProfileBuilder) {
110+
111+
}
107112
}

logging/src/main/java/org/jboss/as/logging/FileHandlerResourceDefinition.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,9 @@ static ResourceTransformationDescriptionBuilder addTransformers(final ResourceTr
7070

7171
return registerTransformers(child);
7272
}
73+
74+
@Override
75+
protected void registerResourceTransformers(final KnownModelVersion modelVersion, final ResourceTransformationDescriptionBuilder resourceBuilder, final ResourceTransformationDescriptionBuilder loggingProfileBuilder) {
76+
77+
}
7378
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.jboss.as.logging;
2+
3+
import org.jboss.as.controller.ModelVersion;
4+
5+
/**
6+
* Known model versions for the logging extension.
7+
*
8+
* @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
9+
*/
10+
enum KnownModelVersion {
11+
VERSION_1_1_0(ModelVersion.create(1, 1, 0), true),
12+
VERSION_1_2_0(ModelVersion.create(1, 2, 0), true),
13+
VERSION_1_3_0(ModelVersion.create(1, 3, 0), true),
14+
VERSION_2_0_0(ModelVersion.create(2, 0, 0), false),
15+
;
16+
private final ModelVersion modelVersion;
17+
private final boolean hasTransformers;
18+
19+
private KnownModelVersion(final ModelVersion modelVersion, final boolean hasTransformers) {
20+
this.modelVersion = modelVersion;
21+
this.hasTransformers = hasTransformers;
22+
}
23+
24+
/**
25+
* Returns {@code true} if transformers should be registered against the model version.
26+
*
27+
* @return {@code true} if transformers should be registered, otherwise {@code false}
28+
*/
29+
public boolean hasTransformers() {
30+
return hasTransformers;
31+
}
32+
33+
/**
34+
* The model version.
35+
*
36+
* @return the model version
37+
*/
38+
public ModelVersion getModelVersion() {
39+
return modelVersion;
40+
}
41+
}

logging/src/main/java/org/jboss/as/logging/LoggerResourceDefinition.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import org.jboss.as.controller.SimpleAttributeDefinition;
4343
import org.jboss.as.controller.SimpleAttributeDefinitionBuilder;
4444
import org.jboss.as.controller.SimpleOperationDefinitionBuilder;
45-
import org.jboss.as.controller.SimpleResourceDefinition;
4645
import org.jboss.as.controller.access.constraint.ApplicationTypeConfig;
4746
import org.jboss.as.controller.access.management.AccessConstraintDefinition;
4847
import org.jboss.as.controller.access.management.ApplicationTypeAccessConstraintDefinition;
@@ -59,7 +58,7 @@
5958
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a>
6059
* @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
6160
*/
62-
public class LoggerResourceDefinition extends SimpleResourceDefinition {
61+
public class LoggerResourceDefinition extends TransformerResourceDefinition {
6362

6463
public static final String CHANGE_LEVEL_OPERATION_NAME = "change-log-level";
6564
public static final String LEGACY_ADD_HANDLER_OPERATION_NAME = "assign-handler";
@@ -208,4 +207,23 @@ static ResourceTransformationDescriptionBuilder addTransformers(final ResourceTr
208207
.end()
209208
.setCustomResourceTransformer(new LoggingResourceTransformer(CATEGORY));
210209
}
210+
211+
@Override
212+
public void registerTransformers(final KnownModelVersion modelVersion,
213+
final ResourceTransformationDescriptionBuilder rootResourceBuilder,
214+
final ResourceTransformationDescriptionBuilder loggingProfileBuilder) {
215+
if (modelVersion.hasTransformers()) {
216+
final PathElement pathElement = getPathElement();
217+
final ResourceTransformationDescriptionBuilder resourceBuilder = rootResourceBuilder.addChildResource(pathElement);
218+
final ResourceTransformationDescriptionBuilder loggingProfileResourceBuilder = loggingProfileBuilder.addChildResource(pathElement);
219+
switch (modelVersion) {
220+
case VERSION_1_2_0:
221+
case VERSION_1_3_0: {
222+
resourceBuilder.setCustomResourceTransformer(new LoggingResourceTransformer(CATEGORY));
223+
loggingProfileResourceBuilder.setCustomResourceTransformer(new LoggingResourceTransformer(CATEGORY));
224+
break;
225+
}
226+
}
227+
}
228+
}
211229
}

logging/src/main/java/org/jboss/as/logging/LoggingExtension.java

Lines changed: 58 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ public void initialize(final ExtensionContext context) {
142142
}
143143
registration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, DESCRIBE_HANDLER);
144144
// Register root sub-models
145-
registerSubModels(registration, resolvePathHandler, true);
145+
registerSubModels(registration, resolvePathHandler, true, subsystem, context.isRegisterTransformers());
146146
// Register logging profile sub-models
147147
ApplicationTypeConfig atc = new ApplicationTypeConfig(SUBSYSTEM_NAME, CommonAttributes.LOGGING_PROFILE);
148148
final List<AccessConstraintDefinition> accessConstraints = new ApplicationTypeAccessConstraintDefinition(atc).wrapAsList();
@@ -157,12 +157,10 @@ public List<AccessConstraintDefinition> getAccessConstraints() {
157157
}
158158
};
159159

160-
registerSubModels(registration.registerSubModel(profile), resolvePathHandler, false);
160+
registerLoggingProfileSubModels(registration.registerSubModel(profile), resolvePathHandler);
161161

162162
if (context.isRegisterTransformers()) {
163163
registerTransformers1_1_0(subsystem);
164-
registerTransformers1_2_0(subsystem);
165-
registerTransformers1_3_0(subsystem);
166164
}
167165

168166
subsystem.registerXMLElementWriter(LoggingSubsystemWriter.INSTANCE);
@@ -188,51 +186,77 @@ private void registerTransformers1_1_0(SubsystemRegistration subsystem) {
188186
CustomHandlerResourceDefinition.addTransformers(subsystemBuilder, loggingProfileBuilder);
189187
SyslogHandlerResourceDefinition.addTransformers(subsystemBuilder, loggingProfileBuilder);
190188

191-
PatternFormatterResourceDefinition.addTransformers(subsystemBuilder, loggingProfileBuilder);
192-
193-
// TODO WFLY-1807 add transformation of new stuff in 2.0.0
189+
PatternFormatterResourceDefinition.INSTANCE.registerTransformers(KnownModelVersion.VERSION_1_1_0, subsystemBuilder, loggingProfileBuilder);
194190

195191
// Register the transformers
196192
TransformationDescription.Tools.register(subsystemBuilder.build(), subsystem, ModelVersion.create(1, 1, 0));
197193
}
198194

199195

200-
private void registerTransformers1_2_0(SubsystemRegistration subsystem) {
201-
final ResourceTransformationDescriptionBuilder subsystemBuilder = TransformationDescriptionBuilder.Factory.createSubsystemInstance();
202-
SizeRotatingHandlerResourceDefinition.addTransformers_1_2(subsystemBuilder);
203-
TransformationDescription.Tools.register(subsystemBuilder.build(), subsystem, ModelVersion.create(1, 2, 0));
204-
}
205-
206-
207-
private void registerTransformers1_3_0(SubsystemRegistration subsystem) {
208-
TransformationDescription.Tools.register(get1_2_0_1_3_0Description(), subsystem, ModelVersion.create(1, 3, 0));
209-
}
210-
211-
private static TransformationDescription get1_2_0_1_3_0Description() {
212-
final ResourceTransformationDescriptionBuilder subsystemBuilder = TransformationDescriptionBuilder.Factory.createSubsystemInstance();
213-
// TODO WFLY-1807 add 2.0.0 stuff
214-
return subsystemBuilder.build();
215-
}
216-
217-
218196
@Override
219197
public void initializeParsers(final ExtensionParsingContext context) {
220198
for (Namespace namespace : Namespace.readable()) {
221199
context.setSubsystemXmlMapping(SUBSYSTEM_NAME, namespace.getUriString(), LoggingSubsystemParser.INSTANCE);
222200
}
223201
}
224202

225-
private void registerSubModels(final ManagementResourceRegistration registration, final ResolvePathHandler resolvePathHandler, final boolean includeLegacyAttributes) {
226-
registration.registerSubModel(new RootLoggerResourceDefinition(includeLegacyAttributes));
227-
registration.registerSubModel(new LoggerResourceDefinition(includeLegacyAttributes));
228-
registration.registerSubModel(new AsyncHandlerResourceDefinition(includeLegacyAttributes));
229-
registration.registerSubModel(new ConsoleHandlerResourceDefinition(includeLegacyAttributes));
230-
registration.registerSubModel(new FileHandlerResourceDefinition(resolvePathHandler, includeLegacyAttributes));
231-
registration.registerSubModel(new PeriodicHandlerResourceDefinition(resolvePathHandler, includeLegacyAttributes));
232-
registration.registerSubModel(new SizeRotatingHandlerResourceDefinition(resolvePathHandler, includeLegacyAttributes));
233-
registration.registerSubModel(new CustomHandlerResourceDefinition(includeLegacyAttributes));
203+
private void registerLoggingProfileSubModels(final ManagementResourceRegistration registration, final ResolvePathHandler resolvePathHandler) {
204+
registerSubModels(registration, resolvePathHandler, false, null, false);
205+
}
206+
207+
private void registerSubModels(final ManagementResourceRegistration registration, final ResolvePathHandler resolvePathHandler,
208+
final boolean includeLegacyAttributes, final SubsystemRegistration subsystem,
209+
final boolean registerTransformers) {
210+
final RootLoggerResourceDefinition rootLoggerResourceDefinition = new RootLoggerResourceDefinition(includeLegacyAttributes);
211+
registration.registerSubModel(rootLoggerResourceDefinition);
212+
213+
final LoggerResourceDefinition loggerResourceDefinition = new LoggerResourceDefinition(includeLegacyAttributes);
214+
registration.registerSubModel(loggerResourceDefinition);
215+
216+
final AsyncHandlerResourceDefinition asyncHandlerResourceDefinition = new AsyncHandlerResourceDefinition(includeLegacyAttributes);
217+
registration.registerSubModel(asyncHandlerResourceDefinition);
218+
219+
final ConsoleHandlerResourceDefinition consoleHandlerResourceDefinition = new ConsoleHandlerResourceDefinition(includeLegacyAttributes);
220+
registration.registerSubModel(consoleHandlerResourceDefinition);
221+
222+
final FileHandlerResourceDefinition fileHandlerResourceDefinition = new FileHandlerResourceDefinition(resolvePathHandler, includeLegacyAttributes);
223+
registration.registerSubModel(fileHandlerResourceDefinition);
224+
225+
final PeriodicHandlerResourceDefinition periodicHandlerResourceDefinition = new PeriodicHandlerResourceDefinition(resolvePathHandler, includeLegacyAttributes);
226+
registration.registerSubModel(periodicHandlerResourceDefinition);
227+
228+
final SizeRotatingHandlerResourceDefinition sizeRotatingHandlerResourceDefinition = new SizeRotatingHandlerResourceDefinition(resolvePathHandler, includeLegacyAttributes);
229+
registration.registerSubModel(sizeRotatingHandlerResourceDefinition);
230+
231+
final CustomHandlerResourceDefinition customHandlerResourceDefinition = new CustomHandlerResourceDefinition(includeLegacyAttributes);
232+
registration.registerSubModel(customHandlerResourceDefinition);
233+
234234
registration.registerSubModel(SyslogHandlerResourceDefinition.INSTANCE);
235235
registration.registerSubModel(PatternFormatterResourceDefinition.INSTANCE);
236+
237+
if (registerTransformers) {
238+
for (KnownModelVersion modelVersion : KnownModelVersion.values()) {
239+
// TODO (jrp) Skip 1.1.0 for now
240+
if (modelVersion == KnownModelVersion.VERSION_1_1_0) continue;
241+
if (modelVersion.hasTransformers()) {
242+
final ResourceTransformationDescriptionBuilder subsystemBuilder = TransformationDescriptionBuilder.Factory.createSubsystemInstance();
243+
final ResourceTransformationDescriptionBuilder loggingProfileBuilder = subsystemBuilder.addChildResource(LOGGING_PROFILE_PATH);
244+
245+
// Register the transformers
246+
loggerResourceDefinition.registerTransformers(modelVersion, subsystemBuilder, loggingProfileBuilder);
247+
asyncHandlerResourceDefinition.registerTransformers(modelVersion, subsystemBuilder, loggingProfileBuilder);
248+
consoleHandlerResourceDefinition.registerTransformers(modelVersion, subsystemBuilder, loggingProfileBuilder);
249+
fileHandlerResourceDefinition.registerTransformers(modelVersion, subsystemBuilder, loggingProfileBuilder);
250+
periodicHandlerResourceDefinition.registerTransformers(modelVersion, subsystemBuilder, loggingProfileBuilder);
251+
sizeRotatingHandlerResourceDefinition.registerTransformers(modelVersion, subsystemBuilder, loggingProfileBuilder);
252+
customHandlerResourceDefinition.registerTransformers(modelVersion, subsystemBuilder, loggingProfileBuilder);
253+
PatternFormatterResourceDefinition.INSTANCE.registerTransformers(modelVersion, subsystemBuilder, loggingProfileBuilder);
254+
255+
// Register the transformer description
256+
TransformationDescription.Tools.register(subsystemBuilder.build(), subsystem, modelVersion.getModelVersion());
257+
}
258+
}
259+
}
236260
}
237261

238262
private static class LoggingResourceDescriptionResolver extends StandardResourceDescriptionResolver {

logging/src/main/java/org/jboss/as/logging/PatternFormatterResourceDefinition.java

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.jboss.as.controller.OperationStepHandler;
3636
import org.jboss.as.controller.PathAddress;
3737
import org.jboss.as.controller.PathElement;
38-
import org.jboss.as.controller.SimpleResourceDefinition;
3938
import org.jboss.as.controller.registry.ManagementResourceRegistration;
4039
import org.jboss.as.controller.transform.description.ResourceTransformationDescriptionBuilder;
4140
import org.jboss.as.logging.LoggingOperations.LoggingWriteAttributeHandler;
@@ -49,7 +48,7 @@
4948
/**
5049
* @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
5150
*/
52-
public class PatternFormatterResourceDefinition extends SimpleResourceDefinition {
51+
public class PatternFormatterResourceDefinition extends TransformerResourceDefinition {
5352

5453
static final String COLOR_MAP_VALIDATION_PATTERN = "^((severe|fatal|error|warn|warning|info|debug|trace|config|fine|finer|finest|):(black|green|red|yellow|blue|magenta|cyan|white|brightblack|brightred|brightgreen|brightblue|brightyellow|brightmagenta|brightcyan|brightwhite|)(,(?!$)|$))*$";
5554

@@ -176,18 +175,14 @@ public void registerAttributes(ManagementResourceRegistration resourceRegistrati
176175
}
177176
}
178177

179-
/**
180-
* Add the transformers for the logger.
181-
*
182-
* @param subsystemBuilder the default subsystem builder
183-
* @param loggingProfileBuilder the logging profile builder
184-
*
185-
* @return the builder created for the resource
186-
*/
187-
static ResourceTransformationDescriptionBuilder addTransformers(final ResourceTransformationDescriptionBuilder subsystemBuilder,
188-
final ResourceTransformationDescriptionBuilder loggingProfileBuilder) {
189-
subsystemBuilder.rejectChildResource(PATTERN_FORMATTER_PATH);
190-
loggingProfileBuilder.rejectChildResource(PATTERN_FORMATTER_PATH);
191-
return subsystemBuilder;
178+
@Override
179+
public void registerTransformers(final KnownModelVersion modelVersion, final ResourceTransformationDescriptionBuilder resourceBuilder, final ResourceTransformationDescriptionBuilder loggingProfileBuilder) {
180+
switch (modelVersion) {
181+
case VERSION_1_1_0:
182+
case VERSION_1_2_0:
183+
case VERSION_1_3_0:
184+
resourceBuilder.rejectChildResource(PATTERN_FORMATTER_PATH);
185+
loggingProfileBuilder.rejectChildResource(PATTERN_FORMATTER_PATH);
186+
}
192187
}
193188
}

0 commit comments

Comments
 (0)