@@ -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 {
@@ -202,7 +204,7 @@ private void doGenerate() throws ProvisioningException {
202
204
if (Files .exists (home .resolve (WfConstants .STANDALONE ).resolve (WfConstants .CONFIGURATION ))) {
203
205
standaloneFeatures = readFeatureSpecs (createStandaloneServer (installation , mimimumStability , null ));
204
206
Boolean all = Boolean .getBoolean ("org.wildfly.galleon.complete.model" );
205
- ModelNode result = generateModel (createStandaloneServer (installation , mimimumStability , all ? "standalone.xml" : "standalone-local.xml" ), all );
207
+ ModelNode result = generateModel (createStandaloneServer (installation , mimimumStability , all ? "standalone.xml" : "standalone-local.xml" ), all , description );
206
208
try {
207
209
if (!Files .exists (outputDir )) {
208
210
Files .createDirectories (outputDir );
@@ -248,17 +250,18 @@ private void doGenerate() throws ProvisioningException {
248
250
249
251
@ Override
250
252
public void forkedForEmbedded (String ... args ) throws ConfigGeneratorException {
251
- if (args .length != 3 && args .length != 4 ) {
253
+ if (args .length != 4 && args .length != 5 ) {
252
254
final StringBuilder buf = new StringBuilder ();
253
255
StringUtils .append (buf , Arrays .asList (args ));
254
- throw new IllegalArgumentException ("Expected 3-4 arguments but got " + Arrays .asList (args ));
256
+ throw new IllegalArgumentException ("Expected 4-5 arguments but got " + Arrays .asList (args ));
255
257
}
256
258
try {
257
- String mimimumStability = args .length == 4 ? args [3 ] : null ;
259
+ String description = args .length > 3 ? args [3 ] : null ;
260
+ String mimimumStability = args .length == 5 ? args [4 ] : null ;
258
261
ModelNode result = readFeatureSpecs (createStandaloneServer (args [0 ], mimimumStability , null ));
259
262
writeSpecsFile (Paths .get (args [1 ]), result );
260
263
Boolean all = Boolean .getBoolean ("org.wildfly.galleon.complete.model" );
261
- ModelNode resultModel = generateModel (createStandaloneServer (args [0 ], mimimumStability , all ? "standalone.xml" : "standalone-local.xml" ), all );
264
+ ModelNode resultModel = generateModel (createStandaloneServer (args [0 ], mimimumStability , all ? "standalone.xml" : "standalone-local.xml" ), all , description );
262
265
writeModelFile (Paths .get (args [1 ]).toAbsolutePath ().getParent ().resolve ("model.json" ), resultModel );
263
266
System .out .println ("FORKED TO " + Paths .get (args [1 ]).toAbsolutePath ().getParent ().resolve ("model.json" ));
264
267
if (Files .exists (Paths .get (args [0 ]).resolve (WfConstants .DOMAIN ).resolve (WfConstants .CONFIGURATION ))) {
@@ -346,37 +349,41 @@ private static String[] getCmdArgs(String mimimumStability, String serverConfig)
346
349
return args .toArray (String []::new );
347
350
}
348
351
349
- private static ModelNode generateModel (final EmbeddedManagedProcess server , Boolean all ) throws ProvisioningException {
352
+ private static ModelNode generateModel (final EmbeddedManagedProcess server , Boolean all , String description ) throws ProvisioningException {
350
353
try {
351
354
server .start ();
352
355
if (!all ) {
353
- return readModel (server );
356
+ return readModel (server , description );
354
357
}
355
- return readAll (server );
358
+ return readAll (server , description );
356
359
} catch (EmbeddedProcessStartException ex ) {
357
360
throw new ProvisioningException ("Failed to read feature spec descriptions" , ex );
358
361
} finally {
359
362
server .stop ();
360
363
}
361
364
}
362
365
363
- private static ModelNode readModel (final EmbeddedManagedProcess server ) throws ProvisioningException {
366
+ private static ModelNode readModel (final EmbeddedManagedProcess server , String description ) throws ProvisioningException {
364
367
List <String > subsystems = listSubsystems (server );
365
- ModelNode result = new ModelNode ();
368
+ ModelNode result = new ModelNode (). setEmptyObject () ;
366
369
ModelNode subsystemNodes = result .get ("children" ).get (ClientConstants .SUBSYSTEM ).get ("model-description" );
367
- for (String subsystem : subsystems ) {
370
+ for (String subsystem : subsystems ) {
368
371
ModelNode address = Operations .createAddress (ClientConstants .SUBSYSTEM , subsystem );
369
- ModelNode subsystemDescription = readResourceDescription (server , address );
372
+ ModelNode subsystemDescription = readResourceDescription (server , address , true );
370
373
subsystemDescription .get (ClientConstants .ADDRESS ).add (address );
371
374
subsystemNodes .get (subsystem ).set (subsystemDescription );
372
375
}
373
376
ModelNode address = Operations .createAddress (ClientConstants .DEPLOYMENT );
374
- result .get ("children" ).get (ClientConstants .DEPLOYMENT ).get ("model-description" ).get ("*" ).set (readResourceDescription (server , address ));
377
+ result .get ("children" ).get (ClientConstants .DEPLOYMENT ).get ("model-description" ).get ("*" ).set (readResourceDescription (server , address , true ));
375
378
result .remove (ClientConstants .RESULT );
379
+ ModelNode subsystemsDescription = readResourceDescription (server , Operations .createAddress ().setEmptyList (), false );
380
+ result .get ("children" ).get (ClientConstants .SUBSYSTEM ).get ("description" ).set (subsystemsDescription .get ("children" ).get (ClientConstants .SUBSYSTEM ).get ("description" ));
381
+ result .get ("children" ).get (ClientConstants .DEPLOYMENT ).get ("description" ).set (subsystemsDescription .get ("children" ).get (ClientConstants .DEPLOYMENT ).get ("description" ));
382
+ result .get ("description" ).set (description );
376
383
return result ;
377
384
}
378
385
379
- private static ModelNode readAll (final EmbeddedManagedProcess server ) throws ProvisioningException {
386
+ private static ModelNode readAll (final EmbeddedManagedProcess server , String description ) throws ProvisioningException {
380
387
ModelNode rootAddress = Operations .createAddress ().setEmptyList ();
381
388
final ModelNode op = Operations .createOperation ("read-resource-description" , rootAddress );
382
389
op .get (ClientConstants .RECURSIVE ).set (true );
@@ -389,7 +396,9 @@ private static ModelNode readAll(final EmbeddedManagedProcess server) throws Pro
389
396
if (!Operations .isSuccessfulOutcome (result )) {
390
397
throw new ProvisioningException (Operations .getFailureDescription (result ).asString ());
391
398
}
392
- return result .get (ClientConstants .RESULT );
399
+ final ModelNode effectiveResult = result .get (ClientConstants .RESULT );
400
+ effectiveResult .get ("description" ).set (description );
401
+ return effectiveResult ;
393
402
}
394
403
395
404
private static List <String > listSubsystems (final EmbeddedManagedProcess server ) throws ProvisioningException {
@@ -413,9 +422,9 @@ private static List<String> listSubsystems(final EmbeddedManagedProcess server)
413
422
return names ;
414
423
}
415
424
416
- private static ModelNode readResourceDescription (final EmbeddedManagedProcess server , ModelNode address ) throws ProvisioningException {
425
+ private static ModelNode readResourceDescription (final EmbeddedManagedProcess server , ModelNode address , boolean recursive ) throws ProvisioningException {
417
426
final ModelNode op = Operations .createOperation ("read-resource-description" , address );
418
- op .get (ClientConstants .RECURSIVE ).set (true );
427
+ op .get (ClientConstants .RECURSIVE ).set (recursive );
419
428
final ModelNode opResult ;
420
429
try {
421
430
opResult = server .getModelControllerClient ().execute (op );
0 commit comments