You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2015/01/19 14:58:25 UTC
wicket git commit: WICKET-5808 Minor whitespace cleanup.
Repository: wicket
Updated Branches:
refs/heads/master afc96936f -> 7e9f57dbe
WICKET-5808 Minor whitespace cleanup.
No functional changes
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/7e9f57db
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/7e9f57db
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/7e9f57db
Branch: refs/heads/master
Commit: 7e9f57dbe24b9d2089023d2ad3bb7fca5b3c7b40
Parents: afc9693
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Jan 19 15:50:23 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Jan 19 15:50:23 2015 +0200
----------------------------------------------------------------------
.../apache/wicket/spring/SpringBeanLocator.java | 100 +++++++++----------
.../annot/AnnotProxyFieldValueFactory.java | 22 ++--
.../annot/SpringBeanWithGenericsTest.java | 26 ++---
3 files changed, 67 insertions(+), 81 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/7e9f57db/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java
----------------------------------------------------------------------
diff --git a/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java b/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java
index 08404f8..593aed6 100644
--- a/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java
+++ b/wicket-spring/src/main/java/org/apache/wicket/spring/SpringBeanLocator.java
@@ -29,7 +29,7 @@ import org.apache.wicket.util.lang.Objects;
import org.springframework.beans.factory.BeanFactoryUtils;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.support.AbstractBeanFactory;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
@@ -60,12 +60,14 @@ public class SpringBeanLocator implements IProxyTargetLocator
private Boolean singletonCache = null;
- /** Resolvable type for field to inject */
+ /**
+ * Resolvable type for field to inject
+ */
private ResolvableType fieldResolvableType;
- /** If the field to inject is a list this is the resolvable
- * type of its elements
- * */
+ /**
+ * If the field to inject is a list this is the resolvable type of its elements
+ */
private ResolvableType fieldCollectionResolvableType;
private String fieldName;
@@ -128,8 +130,8 @@ public class SpringBeanLocator implements IProxyTargetLocator
{
fieldName = beanField.getName();
fieldResolvableType = ResolvableType.forField(beanField);
+
Class<?> collectionFieldType = GenericCollectionTypeResolver.getCollectionFieldType(beanField);
-
fieldCollectionResolvableType = collectionFieldType != null ?
ResolvableType.forClass(collectionFieldType) : null;
}
@@ -235,27 +237,28 @@ public class SpringBeanLocator implements IProxyTargetLocator
{
return ctx.getBean(clazz);
}
-
+
// If the given class is a list try to get the generic of the list
Class<?> lookupClass = clazz == List.class ?
fieldResolvableType.getGeneric(0).resolve() : clazz;
-
+
// Else the lookup is done via Generic
List<String> names = loadBeanNames(ctx, lookupClass);
-
- ArrayList<Object> beansAsList = getBeansByName(ctx, names);
-
+
+ List<Object> beansAsList = getBeansByName(ctx, names);
+
if(beansAsList.size() == 1)
{
- return beansAsList.get(0);
+ return beansAsList.get(0);
}
-
- if(!beansAsList.isEmpty())
+
+ if (!beansAsList.isEmpty())
{
return beansAsList;
}
+
throw new IllegalStateException(
- "Concrete bean could not be received from the application context " +
+ "Concrete bean could not be received from the application context for class: " +
clazz.getName() + ".");
}
catch (NoSuchBeanDefinitionException e)
@@ -279,15 +282,15 @@ public class SpringBeanLocator implements IProxyTargetLocator
List<String> beanNames = new ArrayList<>();
String[] beanNamesArr = BeanFactoryUtils
.beanNamesForTypeIncludingAncestors(ctx, lookupClass);
-
+
//add field name if defined
if (ctx.containsBean(fieldName))
{
beanNames.add(fieldName);
}
-
+
beanNames.addAll(Arrays.asList(beanNamesArr));
-
+
return beanNames;
}
@@ -301,61 +304,57 @@ public class SpringBeanLocator implements IProxyTargetLocator
* the list of candidate names
* @return a list of matching beans.
*/
- private ArrayList<Object> getBeansByName(ApplicationContext ctx, List<String> names)
+ private List<Object> getBeansByName(ApplicationContext ctx, List<String> names)
{
- ArrayList<Object> beansAsList = new ArrayList<>();
-
+ List<Object> beansAsList = new ArrayList<>();
+
for (String beanName : names)
{
RootBeanDefinition beanDef = getBeanDefinition(ctx, beanName);
-
+
if (beanDef == null)
{
continue;
}
-
- ResolvableType candidateRt = null;
-
+
+ ResolvableType candidateResolvableType = null;
+
//check if we have the class of the bean or the factory method.
//Usually if use XML as config file we have the class while we
//have the factory method if we use Java-based configuration.
- if(beanDef.hasBeanClass())
+ if (beanDef.hasBeanClass())
{
- candidateRt = ResolvableType.forClass(
- beanDef.getBeanClass());
+ candidateResolvableType = ResolvableType.forClass(beanDef.getBeanClass());
}
else if (beanDef.getResolvedFactoryMethod() != null)
{
- candidateRt = ResolvableType.forMethodReturnType(
+ candidateResolvableType = ResolvableType.forMethodReturnType(
beanDef.getResolvedFactoryMethod());
}
-
- if (candidateRt == null)
- {
+
+ if (candidateResolvableType == null)
+ {
continue;
}
-
- boolean exactMatch = fieldResolvableType.isAssignableFrom(candidateRt);
+
+ boolean exactMatch = fieldResolvableType.isAssignableFrom(candidateResolvableType);
boolean elementMatch = fieldCollectionResolvableType != null ?
- fieldCollectionResolvableType.isAssignableFrom(candidateRt) : false;
-
+ fieldCollectionResolvableType.isAssignableFrom(candidateResolvableType) : false;
+
if (exactMatch || elementMatch)
- {
+ {
beansAsList.add(ctx.getBean(beanName));
}
-
- if(exactMatch)
+
+ if (exactMatch)
{
this.beanName = beanName;
return beansAsList;
- }
+ }
}
return beansAsList;
}
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(final Object obj)
{
@@ -368,9 +367,6 @@ public class SpringBeanLocator implements IProxyTargetLocator
return false;
}
- /**
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode()
{
@@ -391,18 +387,16 @@ public class SpringBeanLocator implements IProxyTargetLocator
* bean name
* @return bean definition for the current name, null if such a definition is not found.
*/
- public RootBeanDefinition getBeanDefinition(final ApplicationContext ctx,
- final String name)
+ public RootBeanDefinition getBeanDefinition(final ApplicationContext ctx, final String name)
{
- AbstractBeanFactory beanFactory = (AbstractBeanFactory)(
- (AbstractApplicationContext)ctx).getBeanFactory();
-
+ ConfigurableListableBeanFactory beanFactory = ((AbstractApplicationContext)ctx).getBeanFactory();
+
BeanDefinition beanDef = beanFactory.getMergedBeanDefinition(name);
-
+
if (beanDef instanceof RootBeanDefinition) {
return (RootBeanDefinition)beanDef;
}
-
+
return null;
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/7e9f57db/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
----------------------------------------------------------------------
diff --git a/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java b/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
index 5bda825..023fa36 100644
--- a/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
+++ b/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
@@ -17,8 +17,6 @@
package org.apache.wicket.spring.injection.annot;
import java.lang.reflect.Field;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
@@ -132,10 +130,9 @@ public class AnnotProxyFieldValueFactory implements IFieldValueFactory
}
Class<?> generic = ResolvableType.forField(field).resolveGeneric(0);
- String beanName = getBeanName(field, name, required,generic);
+ String beanName = getBeanName(field, name, required, generic);
- SpringBeanLocator locator = new SpringBeanLocator(beanName, field.getType(),field,
- contextLocator);
+ SpringBeanLocator locator = new SpringBeanLocator(beanName, field.getType(), field, contextLocator);
// only check the cache if the bean is a singleton
Object cachedValue = cache.get(locator);
@@ -186,13 +183,12 @@ public class AnnotProxyFieldValueFactory implements IFieldValueFactory
* @param field
* @return bean name
*/
- private String getBeanName(final Field field, String name, boolean required,Class<?> generic)
+ private String getBeanName(final Field field, String name, boolean required, Class<?> generic)
{
-
if (Strings.isEmpty(name))
{
Class<?> fieldType = field.getType();
-
+
name = beanNameCache.get(fieldType);
if (name == null)
{
@@ -230,11 +226,11 @@ public class AnnotProxyFieldValueFactory implements IFieldValueFactory
final Class<?> generic, final boolean required)
{
// If the clazz is instance of List return null
- if(clazz == List.class){
+ if (clazz == List.class){
return null;
}
// get the list of all possible matching beans
- List<String> names = new ArrayList<String>(
+ List<String> names = new ArrayList<>(
Arrays.asList(BeanFactoryUtils.beanNamesForTypeIncludingAncestors(ctx, clazz)));
// filter out beans that are not candidates for autowiring
@@ -325,13 +321,9 @@ public class AnnotProxyFieldValueFactory implements IFieldValueFactory
}
}
- /**
- * @see org.apache.wicket.injection.IFieldValueFactory#supportsField(java.lang.reflect.Field)
- */
@Override
public boolean supportsField(final Field field)
{
- return field.isAnnotationPresent(SpringBean.class) ||
- field.isAnnotationPresent(Inject.class);
+ return field.isAnnotationPresent(SpringBean.class) || field.isAnnotationPresent(Inject.class);
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/7e9f57db/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java
----------------------------------------------------------------------
diff --git a/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java b/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java
index 524a8ed..3523885 100644
--- a/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java
+++ b/wicket-spring/src/test/java/org/apache/wicket/spring/injection/annot/SpringBeanWithGenericsTest.java
@@ -41,32 +41,32 @@ public class SpringBeanWithGenericsTest extends Assert
public void before() throws Exception
{
tester = new WicketTester();
-
+
ctx = new AnnotationConfigApplicationContext();
ctx.register(ConfigContextWithGenerics.class);
ctx.refresh();
-
+
SpringComponentInjector springInjector = new SpringComponentInjector(
tester.getApplication(), ctx);
tester.getApplication().getComponentInstantiationListeners().add(springInjector);
}
-
+
@Test
public void genericAsQualifier() throws Exception
{
AnnotatedBeanGenericQualifier page =
tester.startPage(new AnnotatedBeanGenericQualifier());
-
+
assertNotNull(page.getBean());
}
-
+
@Test
public void listOfGenerics() throws Exception
{
AnnotatedListOfBeanGenericQualifier page =
tester.startPage(new AnnotatedListOfBeanGenericQualifier());
-
+
assertNotNull(page.getBeans());
assertEquals(2, page.getBeans().size());
}
@@ -76,7 +76,7 @@ public class SpringBeanWithGenericsTest extends Assert
{
AnnotatedListField page =
tester.startPage(new AnnotatedListField());
-
+
assertNotNull(page.getStrings());
assertEquals(3, page.getStrings().size());
}
@@ -91,7 +91,7 @@ public class SpringBeanWithGenericsTest extends Assert
return bean;
}
}
-
+
class AnnotatedListOfBeanGenericQualifier extends DummyHomePage
{
@SpringBean
@@ -102,7 +102,7 @@ public class SpringBeanWithGenericsTest extends Assert
return beans;
}
}
-
+
class AnnotatedListField extends DummyHomePage
{
@SpringBean
@@ -120,15 +120,15 @@ public class SpringBeanWithGenericsTest extends Assert
@Bean
public BeanWithGeneric<String> stringBean()
{
- return new BeanWithGeneric<String>();
+ return new BeanWithGeneric<>();
}
-
+
@Bean
public BeanWithGeneric<Integer> nestedBean()
{
- return new BeanWithGeneric<Integer>();
+ return new BeanWithGeneric<>();
}
-
+
@Bean
public List<String> strings()
{