@@ -74,6 +74,7 @@ public class FeatureSpecGenerator implements ForkCallback {
74
74
private Path standaloneSpecsFile ;
75
75
private Path domainSpecsFile ;
76
76
private String mimimumStability ;
77
+ private String description ;
77
78
78
79
String getBranchId (String spec , int dots ) {
79
80
int i = 0 ;
@@ -141,13 +142,14 @@ public FeatureSpecGenerator() {
141
142
}
142
143
143
144
public FeatureSpecGenerator (String installation , Path outputDir , Map <String , Path > inheritedSpecs ,
144
- String mimimumStability , boolean fork , boolean debug ) {
145
+ String mimimumStability , String description , boolean fork , boolean debug ) {
145
146
this .installation = installation ;
146
147
this .outputDir = outputDir ;
147
148
this .fork = fork ;
148
149
this .debug = debug ;
149
150
this .inheritedSpecs = inheritedSpecs ;
150
151
this .mimimumStability = mimimumStability ;
152
+ this .description = description == null ? "" : description ;
151
153
}
152
154
153
155
public int generateSpecs () throws ProvisioningException {
@@ -185,7 +187,7 @@ private void doGenerate() throws ProvisioningException {
185
187
ModelNode domainRoots = null ;
186
188
if (fork ) {
187
189
String minStab = mimimumStability == null ? "" : mimimumStability ;
188
- ForkedEmbeddedUtil .fork (this , getStoredSystemProps (), installation , getStandaloneSpecsFile ().toString (), getDomainSpecsFile ().toString (), minStab );
190
+ ForkedEmbeddedUtil .fork (this , getStoredSystemProps (), installation , getStandaloneSpecsFile ().toString (), getDomainSpecsFile ().toString (), description , minStab );
189
191
standaloneFeatures = readSpecsFile (getStandaloneSpecsFile ());
190
192
Path model = getStandaloneSpecsFile ().getParent ().resolve ("model.json" );
191
193
try {
@@ -201,7 +203,7 @@ private void doGenerate() throws ProvisioningException {
201
203
final Path home = Paths .get (installation );
202
204
if (Files .exists (home .resolve (WfConstants .STANDALONE ).resolve (WfConstants .CONFIGURATION ))) {
203
205
standaloneFeatures = readFeatureSpecs (createStandaloneServer (installation , mimimumStability , null ));
204
- ModelNode result = generateModel (createStandaloneServer (installation , mimimumStability , "standalone-local.xml" ));
206
+ ModelNode result = generateModel (createStandaloneServer (installation , mimimumStability , "standalone-local.xml" ), description );
205
207
try {
206
208
if (!Files .exists (outputDir )) {
207
209
Files .createDirectories (outputDir );
@@ -247,16 +249,17 @@ private void doGenerate() throws ProvisioningException {
247
249
248
250
@ Override
249
251
public void forkedForEmbedded (String ... args ) throws ConfigGeneratorException {
250
- if (args .length != 3 && args .length != 4 ) {
252
+ if (args .length != 4 && args .length != 5 ) {
251
253
final StringBuilder buf = new StringBuilder ();
252
254
StringUtils .append (buf , Arrays .asList (args ));
253
- throw new IllegalArgumentException ("Expected 3-4 arguments but got " + Arrays .asList (args ));
255
+ throw new IllegalArgumentException ("Expected 4-5 arguments but got " + Arrays .asList (args ));
254
256
}
255
257
try {
256
- String mimimumStability = args .length == 4 ? args [3 ] : null ;
258
+ String description = args .length > 3 ? args [3 ] : null ;
259
+ String mimimumStability = args .length == 5 ? args [4 ] : null ;
257
260
ModelNode result = readFeatureSpecs (createStandaloneServer (args [0 ], mimimumStability , null ));
258
261
writeSpecsFile (Paths .get (args [1 ]), result );
259
- ModelNode resultModel = generateModel (createStandaloneServer (args [0 ], mimimumStability , "standalone-local.xml" ));
262
+ ModelNode resultModel = generateModel (createStandaloneServer (args [0 ], mimimumStability , "standalone-local.xml" ), description );
260
263
writeModelFile (Paths .get (args [1 ]).toAbsolutePath ().getParent ().resolve ("model.json" ), resultModel );
261
264
System .out .println ("FORKED TO " + Paths .get (args [1 ]).toAbsolutePath ().getParent ().resolve ("model.json" ));
262
265
if (Files .exists (Paths .get (args [0 ]).resolve (WfConstants .DOMAIN ).resolve (WfConstants .CONFIGURATION ))) {
@@ -344,38 +347,42 @@ private static String[] getCmdArgs(String mimimumStability, String serverConfig)
344
347
return args .toArray (String []::new );
345
348
}
346
349
347
- private static ModelNode generateModel (final EmbeddedManagedProcess server ) throws ProvisioningException {
350
+ private static ModelNode generateModel (final EmbeddedManagedProcess server , String description ) throws ProvisioningException {
348
351
try {
349
352
server .start ();
350
353
Boolean all = Boolean .getBoolean ("org.wildfly.galleon.complete.model" );
351
354
if (!all ) {
352
- return readModel (server );
355
+ return readModel (server , description );
353
356
}
354
- return readAll (server );
357
+ return readAll (server , description );
355
358
} catch (EmbeddedProcessStartException ex ) {
356
359
throw new ProvisioningException ("Failed to read feature spec descriptions" , ex );
357
360
} finally {
358
361
server .stop ();
359
362
}
360
363
}
361
364
362
- private static ModelNode readModel (final EmbeddedManagedProcess server ) throws ProvisioningException {
365
+ private static ModelNode readModel (final EmbeddedManagedProcess server , String description ) throws ProvisioningException {
363
366
List <String > subsystems = listSubsystems (server );
364
- ModelNode result = new ModelNode ();
367
+ ModelNode result = new ModelNode (). setEmptyObject () ;
365
368
ModelNode subsystemNodes = result .get ("children" ).get (ClientConstants .SUBSYSTEM ).get ("model-description" );
366
- for (String subsystem : subsystems ) {
369
+ for (String subsystem : subsystems ) {
367
370
ModelNode address = Operations .createAddress (ClientConstants .SUBSYSTEM , subsystem );
368
- ModelNode subsystemDescription = readResourceDescription (server , address );
371
+ ModelNode subsystemDescription = readResourceDescription (server , address , true );
369
372
subsystemDescription .get (ClientConstants .ADDRESS ).add (address );
370
373
subsystemNodes .get (subsystem ).set (subsystemDescription );
371
374
}
372
375
ModelNode address = Operations .createAddress (ClientConstants .DEPLOYMENT );
373
- result .get ("children" ).get (ClientConstants .DEPLOYMENT ).get ("model-description" ).get ("*" ).set (readResourceDescription (server , address ));
376
+ result .get ("children" ).get (ClientConstants .DEPLOYMENT ).get ("model-description" ).get ("*" ).set (readResourceDescription (server , address , true ));
374
377
result .remove (ClientConstants .RESULT );
378
+ ModelNode subsystemsDescription = readResourceDescription (server , Operations .createAddress ().setEmptyList (), false );
379
+ result .get ("children" ).get (ClientConstants .SUBSYSTEM ).get ("description" ).set (subsystemsDescription .get ("children" ).get (ClientConstants .SUBSYSTEM ).get ("description" ));
380
+ result .get ("children" ).get (ClientConstants .DEPLOYMENT ).get ("description" ).set (subsystemsDescription .get ("children" ).get (ClientConstants .DEPLOYMENT ).get ("description" ));
381
+ result .get ("description" ).set (description );
375
382
return result ;
376
383
}
377
384
378
- private static ModelNode readAll (final EmbeddedManagedProcess server ) throws ProvisioningException {
385
+ private static ModelNode readAll (final EmbeddedManagedProcess server , String description ) throws ProvisioningException {
379
386
ModelNode rootAddress = Operations .createAddress ().setEmptyList ();
380
387
final ModelNode op = Operations .createOperation ("read-resource-description" , rootAddress );
381
388
op .get (ClientConstants .RECURSIVE ).set (true );
@@ -388,7 +395,9 @@ private static ModelNode readAll(final EmbeddedManagedProcess server) throws Pro
388
395
if (!Operations .isSuccessfulOutcome (result )) {
389
396
throw new ProvisioningException (Operations .getFailureDescription (result ).asString ());
390
397
}
391
- return result .get (ClientConstants .RESULT );
398
+ final ModelNode effectiveResult = result .get (ClientConstants .RESULT );
399
+ effectiveResult .get ("description" ).set (description );
400
+ return effectiveResult ;
392
401
}
393
402
394
403
private static List <String > listSubsystems (final EmbeddedManagedProcess server ) throws ProvisioningException {
@@ -412,9 +421,9 @@ private static List<String> listSubsystems(final EmbeddedManagedProcess server)
412
421
return names ;
413
422
}
414
423
415
- private static ModelNode readResourceDescription (final EmbeddedManagedProcess server , ModelNode address ) throws ProvisioningException {
424
+ private static ModelNode readResourceDescription (final EmbeddedManagedProcess server , ModelNode address , boolean recursive ) throws ProvisioningException {
416
425
final ModelNode op = Operations .createOperation ("read-resource-description" , address );
417
- op .get (ClientConstants .RECURSIVE ).set (true );
426
+ op .get (ClientConstants .RECURSIVE ).set (recursive );
418
427
final ModelNode opResult ;
419
428
try {
420
429
opResult = server .getModelControllerClient ().execute (op );
0 commit comments