@@ -1052,7 +1052,7 @@ else if (ObjectFactory.class == descriptor.getDependencyType() ||
10521052 return new DependencyObjectProvider (descriptor , requestingBeanName );
10531053 }
10541054 else if (javaxInjectProviderClass == descriptor .getDependencyType ()) {
1055- return new Jsr330ProviderFactory ().createDependencyProvider (descriptor , requestingBeanName );
1055+ return new Jsr330Factory ().createDependencyProvider (descriptor , requestingBeanName );
10561056 }
10571057 else {
10581058 Object result = getAutowireCandidateResolver ().getLazyResolutionProxyIfNecessary (
@@ -1247,7 +1247,7 @@ private Comparator<Object> adaptDependencyComparator(Map<String, Object> matchin
12471247 }
12481248 }
12491249
1250- private FactoryAwareOrderSourceProvider createFactoryAwareOrderSourceProvider (Map <String , Object > beans ) {
1250+ private OrderComparator . OrderSourceProvider createFactoryAwareOrderSourceProvider (Map <String , Object > beans ) {
12511251 IdentityHashMap <Object , String > instancesToBeanNames = new IdentityHashMap <>();
12521252 beans .forEach ((beanName , instance ) -> instancesToBeanNames .put (instance , beanName ));
12531253 return new FactoryAwareOrderSourceProvider (instancesToBeanNames );
@@ -1614,6 +1614,29 @@ private Object readResolve() {
16141614 }
16151615
16161616
1617+ /**
1618+ * A dependency descriptor marker for nested elements.
1619+ */
1620+ private static class NestedDependencyDescriptor extends DependencyDescriptor {
1621+
1622+ public NestedDependencyDescriptor (DependencyDescriptor original ) {
1623+ super (original );
1624+ increaseNestingLevel ();
1625+ }
1626+ }
1627+
1628+
1629+ /**
1630+ * A dependency descriptor marker for multiple elements.
1631+ */
1632+ private static class MultiElementDescriptor extends NestedDependencyDescriptor {
1633+
1634+ public MultiElementDescriptor (DependencyDescriptor original ) {
1635+ super (original );
1636+ }
1637+ }
1638+
1639+
16171640 /**
16181641 * Serializable ObjectFactory/ObjectProvider for lazy resolution of a dependency.
16191642 */
@@ -1718,29 +1741,27 @@ protected Object getValue() throws BeansException {
17181741
17191742
17201743 /**
1721- * Serializable ObjectFactory for lazy resolution of a dependency.
1744+ * Separate inner class for avoiding a hard dependency on the {@code javax.inject} API.
1745+ * Actual {@code javax.inject.Provider} implementation is nested here in order to make it
1746+ * invisible for Graal's introspection of DefaultListableBeanFactory's nested classes.
17221747 */
1723- private class Jsr330DependencyProvider extends DependencyObjectProvider implements Provider <Object > {
1724-
1725- public Jsr330DependencyProvider (DependencyDescriptor descriptor , @ Nullable String beanName ) {
1726- super (descriptor , beanName );
1727- }
1748+ private class Jsr330Factory implements Serializable {
17281749
1729- @ Override
1730- @ Nullable
1731- public Object get () throws BeansException {
1732- return getValue ();
1750+ public Object createDependencyProvider (DependencyDescriptor descriptor , @ Nullable String beanName ) {
1751+ return new Jsr330Provider (descriptor , beanName );
17331752 }
1734- }
17351753
1754+ private class Jsr330Provider extends DependencyObjectProvider implements Provider <Object > {
17361755
1737- /**
1738- * Separate inner class for avoiding a hard dependency on the {@code javax.inject} API.
1739- */
1740- private class Jsr330ProviderFactory {
1756+ public Jsr330Provider (DependencyDescriptor descriptor , @ Nullable String beanName ) {
1757+ super (descriptor , beanName );
1758+ }
17411759
1742- public Object createDependencyProvider (DependencyDescriptor descriptor , @ Nullable String beanName ) {
1743- return new Jsr330DependencyProvider (descriptor , beanName );
1760+ @ Override
1761+ @ Nullable
1762+ public Object get () throws BeansException {
1763+ return getValue ();
1764+ }
17441765 }
17451766 }
17461767
@@ -1791,21 +1812,4 @@ private RootBeanDefinition getRootBeanDefinition(@Nullable String beanName) {
17911812 }
17921813 }
17931814
1794-
1795- private static class NestedDependencyDescriptor extends DependencyDescriptor {
1796-
1797- public NestedDependencyDescriptor (DependencyDescriptor original ) {
1798- super (original );
1799- increaseNestingLevel ();
1800- }
1801- }
1802-
1803-
1804- private static class MultiElementDescriptor extends NestedDependencyDescriptor {
1805-
1806- public MultiElementDescriptor (DependencyDescriptor original ) {
1807- super (original );
1808- }
1809- }
1810-
18111815}
0 commit comments