|
|
|
@ -16,26 +16,31 @@ |
|
|
|
|
|
|
|
|
|
|
|
package org.springframework.data.document.mongodb.config; |
|
|
|
package org.springframework.data.document.mongodb.config; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.Set; |
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.BeanDefinitionStoreException; |
|
|
|
import org.springframework.beans.factory.BeanDefinitionStoreException; |
|
|
|
import org.springframework.beans.factory.NoSuchBeanDefinitionException; |
|
|
|
import org.springframework.beans.factory.NoSuchBeanDefinitionException; |
|
|
|
|
|
|
|
import org.springframework.beans.factory.config.BeanDefinition; |
|
|
|
import org.springframework.beans.factory.config.RuntimeBeanReference; |
|
|
|
import org.springframework.beans.factory.config.RuntimeBeanReference; |
|
|
|
import org.springframework.beans.factory.support.AbstractBeanDefinition; |
|
|
|
import org.springframework.beans.factory.support.AbstractBeanDefinition; |
|
|
|
import org.springframework.beans.factory.support.BeanDefinitionBuilder; |
|
|
|
import org.springframework.beans.factory.support.BeanDefinitionBuilder; |
|
|
|
import org.springframework.beans.factory.support.BeanDefinitionRegistry; |
|
|
|
import org.springframework.beans.factory.support.BeanDefinitionRegistry; |
|
|
|
|
|
|
|
import org.springframework.beans.factory.support.ManagedSet; |
|
|
|
import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser; |
|
|
|
import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser; |
|
|
|
import org.springframework.beans.factory.xml.ParserContext; |
|
|
|
import org.springframework.beans.factory.xml.ParserContext; |
|
|
|
|
|
|
|
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; |
|
|
|
|
|
|
|
import org.springframework.core.type.filter.AnnotationTypeFilter; |
|
|
|
|
|
|
|
import org.springframework.data.annotation.Persistent; |
|
|
|
import org.springframework.data.document.mongodb.convert.MappingMongoConverter; |
|
|
|
import org.springframework.data.document.mongodb.convert.MappingMongoConverter; |
|
|
|
import org.springframework.data.document.mongodb.mapping.Document; |
|
|
|
import org.springframework.data.document.mongodb.mapping.Document; |
|
|
|
import org.springframework.data.document.mongodb.mapping.MongoPersistentEntityIndexCreator; |
|
|
|
import org.springframework.data.document.mongodb.mapping.MongoPersistentEntityIndexCreator; |
|
|
|
import org.springframework.data.document.mongodb.mapping.MongoMappingContext; |
|
|
|
import org.springframework.data.document.mongodb.mapping.MongoMappingContext; |
|
|
|
|
|
|
|
import org.springframework.util.StringUtils; |
|
|
|
import org.w3c.dom.Element; |
|
|
|
import org.w3c.dom.Element; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Created by IntelliJ IDEA. |
|
|
|
* @author Jon Brisbin <jbrisbin@vmware.com> |
|
|
|
* User: jbrisbin |
|
|
|
* @author Oliver Gierke |
|
|
|
* Date: 2/28/11 |
|
|
|
|
|
|
|
* Time: 9:26 AM |
|
|
|
|
|
|
|
* To change this template use File | Settings | File Templates. |
|
|
|
|
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public class MongoMappingConverterParser extends AbstractBeanDefinitionParser { |
|
|
|
public class MongoMappingConverterParser extends AbstractBeanDefinitionParser { |
|
|
|
|
|
|
|
|
|
|
|
@ -91,5 +96,25 @@ public class MongoMappingConverterParser extends AbstractBeanDefinitionParser { |
|
|
|
|
|
|
|
|
|
|
|
return converterBuilder.getBeanDefinition(); |
|
|
|
return converterBuilder.getBeanDefinition(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Set<String> getInititalEntityClasses(Element element, BeanDefinitionBuilder builder) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String basePackage = element.getAttribute(BASE_PACKAGE); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!StringUtils.hasText(basePackage)) { |
|
|
|
|
|
|
|
return null; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ClassPathScanningCandidateComponentProvider componentProvider = new ClassPathScanningCandidateComponentProvider(false); |
|
|
|
|
|
|
|
componentProvider.addIncludeFilter(new AnnotationTypeFilter(Document.class)); |
|
|
|
|
|
|
|
componentProvider.addIncludeFilter(new AnnotationTypeFilter(Persistent.class)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Set<String> classes = new ManagedSet<String>(); |
|
|
|
|
|
|
|
for (BeanDefinition candidate : componentProvider.findCandidateComponents(basePackage)) { |
|
|
|
|
|
|
|
classes.add(candidate.getBeanClassName()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return classes; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|