Guest User

http://stackoverflow.com/questions/36863382/

a guest
Apr 26th, 2016
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.16 KB | None | 0 0
  1. package com.example.foo.test;
  2.  
  3. import java.lang.reflect.Field;
  4.  
  5. import javax.annotation.PostConstruct;
  6. import javax.persistence.Entity;
  7. import javax.persistence.metamodel.CollectionAttribute;
  8. import javax.persistence.metamodel.ListAttribute;
  9. import javax.persistence.metamodel.MapAttribute;
  10. import javax.persistence.metamodel.SetAttribute;
  11. import javax.persistence.metamodel.SingularAttribute;
  12. import javax.persistence.metamodel.Type;
  13.  
  14. import org.hibernate.jpa.internal.metamodel.AbstractAttribute;
  15. import org.springframework.beans.factory.config.BeanDefinition;
  16. import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
  17. import org.springframework.core.type.filter.AnnotationTypeFilter;
  18. import org.springframework.stereotype.Component;
  19.  
  20. import com.google.common.base.Throwables;
  21.  
  22. @Component
  23. @SuppressWarnings({ "rawtypes", "unchecked", "serial" })
  24. public class MockMetaModelGenerator {
  25.     private static final String BASE_PACKAGE = "com.example.foo";
  26.  
  27.     @PostConstruct
  28.     public void init() {
  29.         ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
  30.         scanner.addIncludeFilter(new AnnotationTypeFilter(Entity.class));
  31.         for (BeanDefinition bd : scanner.findCandidateComponents(BASE_PACKAGE)) {
  32.             Class<?> metamodel;
  33.             try {
  34.                 metamodel = Thread.currentThread().getContextClassLoader().loadClass(bd.getBeanClassName() + "_");
  35.                 for (Field field : metamodel.getFields()) {
  36.                     field.set(null, new GenericAttrImpl(field.getName()));
  37.                 }
  38.             } catch (Exception e) {
  39.                 Throwables.propagate(e);
  40.             }
  41.         }
  42.     }
  43.  
  44.     static class GenericAttrImpl extends AbstractAttribute implements CollectionAttribute, SetAttribute, ListAttribute, MapAttribute, SingularAttribute {
  45.  
  46.         GenericAttrImpl(String name) {
  47.             super(name, null, null, null, null);
  48.         }
  49.  
  50.         @Override
  51.         public CollectionType getCollectionType() {
  52.             return null;
  53.         }
  54.  
  55.         @Override
  56.         public Class getKeyJavaType() {
  57.             return null;
  58.         }
  59.  
  60.         @Override
  61.         public Type getKeyType() {
  62.             return null;
  63.         }
  64.  
  65.         @Override
  66.         public Type getElementType() {
  67.             return null;
  68.         }
  69.  
  70.         @Override
  71.         public boolean isAssociation() {
  72.             return false;
  73.         }
  74.  
  75.         @Override
  76.         public boolean isCollection() {
  77.             return false;
  78.         }
  79.  
  80.         @Override
  81.         public BindableType getBindableType() {
  82.             return null;
  83.         }
  84.  
  85.         @Override
  86.         public Class getBindableJavaType() {
  87.             return null;
  88.         }
  89.  
  90.         @Override
  91.         public boolean isId() {
  92.             return false;
  93.         }
  94.  
  95.         @Override
  96.         public boolean isVersion() {
  97.             return false;
  98.         }
  99.  
  100.         @Override
  101.         public boolean isOptional() {
  102.             return false;
  103.         }
  104.  
  105.         @Override
  106.         public Type getType() {
  107.             return null;
  108.         }
  109.     }
  110.  
  111. }
Add Comment
Please, Sign In to add comment