@@ -71,12 +71,11 @@ class OnAvailableEndpointCondition extends SpringBootCondition {
7171
7272 @ Override
7373 public ConditionOutcome getMatchOutcome (ConditionContext context , AnnotatedTypeMetadata metadata ) {
74- Environment environment = context .getEnvironment ();
7574 MergedAnnotation <ConditionalOnAvailableEndpoint > conditionAnnotation = metadata .getAnnotations ()
7675 .get (ConditionalOnAvailableEndpoint .class );
7776 Class <?> target = getTarget (context , metadata , conditionAnnotation );
7877 MergedAnnotation <Endpoint > endpointAnnotation = getEndpointAnnotation (target );
79- return getMatchOutcome (environment , conditionAnnotation , endpointAnnotation );
78+ return getMatchOutcome (context , conditionAnnotation , endpointAnnotation );
8079 }
8180
8281 private Class <?> getTarget (ConditionContext context , AnnotatedTypeMetadata metadata ,
@@ -109,16 +108,17 @@ protected MergedAnnotation<Endpoint> getEndpointAnnotation(Class<?> target) {
109108 return getEndpointAnnotation (extension .getClass ("endpoint" ));
110109 }
111110
112- private ConditionOutcome getMatchOutcome (Environment environment ,
111+ private ConditionOutcome getMatchOutcome (ConditionContext context ,
113112 MergedAnnotation <ConditionalOnAvailableEndpoint > conditionAnnotation ,
114113 MergedAnnotation <Endpoint > endpointAnnotation ) {
115114 ConditionMessage .Builder message = ConditionMessage .forCondition (ConditionalOnAvailableEndpoint .class );
115+ Environment environment = context .getEnvironment ();
116116 EndpointId endpointId = EndpointId .of (environment , endpointAnnotation .getString ("id" ));
117117 ConditionOutcome accessOutcome = getAccessOutcome (environment , endpointAnnotation , endpointId , message );
118118 if (!accessOutcome .isMatch ()) {
119119 return accessOutcome ;
120120 }
121- ConditionOutcome exposureOutcome = getExposureOutcome (environment , conditionAnnotation , endpointAnnotation ,
121+ ConditionOutcome exposureOutcome = getExposureOutcome (context , conditionAnnotation , endpointAnnotation ,
122122 endpointId , message );
123123 return (exposureOutcome != null ) ? exposureOutcome : ConditionOutcome .noMatch (message .because ("not exposed" ));
124124 }
@@ -137,11 +137,11 @@ private Access getAccess(Environment environment, EndpointId endpointId, Access
137137 .accessFor (endpointId , defaultAccess );
138138 }
139139
140- private ConditionOutcome getExposureOutcome (Environment environment ,
140+ private ConditionOutcome getExposureOutcome (ConditionContext context ,
141141 MergedAnnotation <ConditionalOnAvailableEndpoint > conditionAnnotation ,
142142 MergedAnnotation <Endpoint > endpointAnnotation , EndpointId endpointId , Builder message ) {
143143 Set <EndpointExposure > exposures = getExposures (conditionAnnotation );
144- Set <EndpointExposureOutcomeContributor > outcomeContributors = getExposureOutcomeContributors (environment );
144+ Set <EndpointExposureOutcomeContributor > outcomeContributors = getExposureOutcomeContributors (context );
145145 for (EndpointExposureOutcomeContributor outcomeContributor : outcomeContributors ) {
146146 ConditionOutcome outcome = outcomeContributor .getExposureOutcome (endpointId , exposures , message );
147147 if (outcome != null && outcome .isMatch ()) {
@@ -166,23 +166,25 @@ private Set<EndpointExposure> replaceCloudFoundryExposure(Collection<EndpointExp
166166 return result ;
167167 }
168168
169- private Set <EndpointExposureOutcomeContributor > getExposureOutcomeContributors (Environment environment ) {
169+ private Set <EndpointExposureOutcomeContributor > getExposureOutcomeContributors (ConditionContext context ) {
170+ Environment environment = context .getEnvironment ();
170171 Set <EndpointExposureOutcomeContributor > contributors = exposureOutcomeContributorsCache .get (environment );
171172 if (contributors == null ) {
172173 contributors = new LinkedHashSet <>();
173174 contributors .add (new StandardExposureOutcomeContributor (environment , EndpointExposure .WEB ));
174175 if (environment .getProperty (JMX_ENABLED_KEY , Boolean .class , false )) {
175176 contributors .add (new StandardExposureOutcomeContributor (environment , EndpointExposure .JMX ));
176177 }
177- contributors .addAll (loadExposureOutcomeContributors (environment ));
178+ contributors .addAll (loadExposureOutcomeContributors (context . getClassLoader (), environment ));
178179 exposureOutcomeContributorsCache .put (environment , contributors );
179180 }
180181 return contributors ;
181182 }
182183
183- private List <EndpointExposureOutcomeContributor > loadExposureOutcomeContributors (Environment environment ) {
184+ private List <EndpointExposureOutcomeContributor > loadExposureOutcomeContributors (ClassLoader classLoader ,
185+ Environment environment ) {
184186 ArgumentResolver argumentResolver = ArgumentResolver .of (Environment .class , environment );
185- return SpringFactoriesLoader .forDefaultResourceLocation ()
187+ return SpringFactoriesLoader .forDefaultResourceLocation (classLoader )
186188 .load (EndpointExposureOutcomeContributor .class , argumentResolver );
187189 }
188190
0 commit comments