1
1
/*
2
- * Copyright 2016-2023 Red Hat, Inc. and/or its affiliates
2
+ * Copyright 2016-2025 Red Hat, Inc. and/or its affiliates
3
3
* and other contributors as indicated by the @author tags.
4
4
*
5
5
* Licensed under the Apache License, Version 2.0 (the "License");
17
17
package org .jboss .galleon .api ;
18
18
19
19
import java .net .URLClassLoader ;
20
+ import java .util .concurrent .atomic .AtomicReference ;
21
+
20
22
import org .jboss .galleon .CoreVersion ;
23
+ import org .jboss .galleon .DefaultMessageWriter ;
24
+ import org .jboss .galleon .MessageWriter ;
21
25
import org .jboss .galleon .ProvisioningException ;
22
26
import org .jboss .galleon .api .test .FeaturePackRepoTestBase ;
23
27
import org .jboss .galleon .creator .FeaturePackCreator ;
35
39
public class GalleonBuilderTestCase extends FeaturePackRepoTestBase {
36
40
37
41
private static final FeaturePackLocation .FPID FP1_100_GAV = LegacyGalleon1Universe .newFPID ("org.jboss.pm.test:fp1" , "1" , "1.0.0.Final" );
42
+ private final MessageWriter log = new DefaultMessageWriter ();
38
43
39
44
@ Override
40
45
protected void doBefore () throws Exception {
@@ -50,12 +55,18 @@ public void test() throws Exception {
50
55
GalleonBuilder builder = new GalleonBuilder ();
51
56
builder .addArtifactResolver (repo );
52
57
assertEquals (GalleonBuilder .getClassLoaders ().size (), 0 );
53
- try {
54
- GalleonBuilder .releaseUsage (CoreVersion .getVersion ());
55
- throw new Exception ("Should have failed" );
56
- } catch (ProvisioningException ex ) {
57
- // Ok should have failed.
58
- }
58
+
59
+ // verify that releasing unused CL is logged
60
+ AtomicReference <String > msg = new AtomicReference <>(null );
61
+ GalleonBuilder .releaseUsage (CoreVersion .getVersion (), new DefaultMessageWriter () {
62
+ @ Override
63
+ public void verbose (CharSequence message ) {
64
+ msg .set (message .toString ());
65
+ }
66
+ });
67
+ assertEquals ("Releasing usage of core " + CoreVersion .getVersion () + " although no usage" ,
68
+ msg .get ());
69
+
59
70
URLClassLoader l1 = GalleonBuilder .getCallerClassLoader (APIVersion .getVersion (), null );
60
71
assertEquals (GalleonBuilder .getClassLoaders ().size (), 1 );
61
72
URLClassLoader l2 = GalleonBuilder .getCallerClassLoader (APIVersion .getVersion (), null );
@@ -65,9 +76,9 @@ public void test() throws Exception {
65
76
assertEquals (l1 , l3 );
66
77
assertEquals (GalleonBuilder .getClassLoaders ().size (), 1 );
67
78
// Release all usages.
68
- GalleonBuilder .releaseUsage (CoreVersion .getVersion ());
69
- GalleonBuilder .releaseUsage (CoreVersion .getVersion ());
70
- GalleonBuilder .releaseUsage (CoreVersion .getVersion ());
79
+ GalleonBuilder .releaseUsage (CoreVersion .getVersion (), this . log );
80
+ GalleonBuilder .releaseUsage (CoreVersion .getVersion (), this . log );
81
+ GalleonBuilder .releaseUsage (CoreVersion .getVersion (), this . log );
71
82
assertEquals (GalleonBuilder .getClassLoaders ().size (), 0 );
72
83
URLClassLoader l4 = GalleonBuilder .getCallerClassLoader (CoreVersion .getVersion (), null );
73
84
assertNotEquals (l1 , l4 );
@@ -79,9 +90,9 @@ public void test() throws Exception {
79
90
assertEquals (loader , loader2 );
80
91
assertEquals (GalleonBuilder .getClassLoaders ().size (), 1 );
81
92
// Release all usages
82
- GalleonBuilder .releaseUsage (CoreVersion .getVersion ());
83
- GalleonBuilder .releaseUsage (CoreVersion .getVersion ());
84
- GalleonBuilder .releaseUsage (CoreVersion .getVersion ());
93
+ GalleonBuilder .releaseUsage (CoreVersion .getVersion (), this . log );
94
+ GalleonBuilder .releaseUsage (CoreVersion .getVersion (), this . log );
95
+ GalleonBuilder .releaseUsage (CoreVersion .getVersion (), this . log );
85
96
try {
86
97
builder .getCoreClassLoader ("foo" );
87
98
throw new Exception ();
0 commit comments