@@ -187,6 +187,8 @@ public static class Options {
187187
188188 /** Provider list that contains only used providers. */
189189 private ProviderList filteredProviderList ;
190+ /** List of providers deemed not to be used by this feature. */
191+ private List <Provider > removedProviders ;
190192
191193 private boolean shouldFilterProviders = true ;
192194
@@ -342,11 +344,29 @@ public ProviderList cleanUnregisteredProviders(ProviderList providerList) {
342344 filteredProviders .removeIf (this ::shouldRemoveProvider );
343345 if (filteredProviderList == null || !filteredProviderList .providers ().equals (filteredProviders )) {
344346 filteredProviderList = ProviderList .newList (filteredProviders .toArray (new Provider [0 ]));
347+ if (Options .TraceSecurityServices .getValue ()) {
348+ removedProviders = new ArrayList <>(providerList .providers ());
349+ removedProviders .removeIf (provider -> !shouldRemoveProvider (provider ));
350+ }
345351 }
346352 }
347353 return filteredProviderList ;
348354 }
349355
356+ private void traceRemovedProviders () {
357+ if (removedProviders == null || removedProviders .isEmpty ()) {
358+ trace ("No security providers have been removed." );
359+ } else {
360+ trace ("The following security providers were deemed to be unused and removed:" );
361+ SecurityServicesPrinter .indent ();
362+ trace ("ProviderName - ProviderClass" );
363+ for (Provider p : removedProviders ) {
364+ trace ("%s - %s" , p .getName (), p .getClass ().getName ());
365+ }
366+ SecurityServicesPrinter .dedent ();
367+ }
368+ }
369+
350370 private static void linkSunEC (DuringAnalysisAccess a ) {
351371 NativeLibraries nativeLibraries = ((DuringAnalysisAccessImpl ) a ).getNativeLibraries ();
352372 /* We statically link sunec thus we classify it as builtIn library */
@@ -638,6 +658,7 @@ private static void registerX509Extensions() {
638658
639659 @ Override
640660 public void afterAnalysis (AfterAnalysisAccess access ) {
661+ traceRemovedProviders ();
641662 SecurityServicesPrinter .endTracing ();
642663 shouldFilterProviders = false ;
643664 }
0 commit comments