Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.foo.test;
- import java.lang.reflect.Field;
- import javax.annotation.PostConstruct;
- import javax.persistence.Entity;
- import javax.persistence.metamodel.CollectionAttribute;
- import javax.persistence.metamodel.ListAttribute;
- import javax.persistence.metamodel.MapAttribute;
- import javax.persistence.metamodel.SetAttribute;
- import javax.persistence.metamodel.SingularAttribute;
- import javax.persistence.metamodel.Type;
- import org.hibernate.jpa.internal.metamodel.AbstractAttribute;
- import org.springframework.beans.factory.config.BeanDefinition;
- import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
- import org.springframework.core.type.filter.AnnotationTypeFilter;
- import org.springframework.stereotype.Component;
- import com.google.common.base.Throwables;
- @Component
- @SuppressWarnings({ "rawtypes", "unchecked", "serial" })
- public class MockMetaModelGenerator {
- private static final String BASE_PACKAGE = "com.example.foo";
- @PostConstruct
- public void init() {
- ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
- scanner.addIncludeFilter(new AnnotationTypeFilter(Entity.class));
- for (BeanDefinition bd : scanner.findCandidateComponents(BASE_PACKAGE)) {
- Class<?> metamodel;
- try {
- metamodel = Thread.currentThread().getContextClassLoader().loadClass(bd.getBeanClassName() + "_");
- for (Field field : metamodel.getFields()) {
- field.set(null, new GenericAttrImpl(field.getName()));
- }
- } catch (Exception e) {
- Throwables.propagate(e);
- }
- }
- }
- static class GenericAttrImpl extends AbstractAttribute implements CollectionAttribute, SetAttribute, ListAttribute, MapAttribute, SingularAttribute {
- GenericAttrImpl(String name) {
- super(name, null, null, null, null);
- }
- @Override
- public CollectionType getCollectionType() {
- return null;
- }
- @Override
- public Class getKeyJavaType() {
- return null;
- }
- @Override
- public Type getKeyType() {
- return null;
- }
- @Override
- public Type getElementType() {
- return null;
- }
- @Override
- public boolean isAssociation() {
- return false;
- }
- @Override
- public boolean isCollection() {
- return false;
- }
- @Override
- public BindableType getBindableType() {
- return null;
- }
- @Override
- public Class getBindableJavaType() {
- return null;
- }
- @Override
- public boolean isId() {
- return false;
- }
- @Override
- public boolean isVersion() {
- return false;
- }
- @Override
- public boolean isOptional() {
- return false;
- }
- @Override
- public Type getType() {
- return null;
- }
- }
- }
Add Comment
Please, Sign In to add comment