general formatting work
This commit is contained in:
		
							parent
							
								
									fc59834adb
								
							
						
					
					
						commit
						95e2d063f4
					
				| @ -67,8 +67,4 @@ public class CollectionJavaPartitionUnitTest { | |||||||
|         assertThat(lastPartition, equalTo(expectedLastPartition)); |         assertThat(lastPartition, equalTo(expectedLastPartition)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -10,5 +10,5 @@ import java.lang.annotation.Target; | |||||||
| @Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD }) | @Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD }) | ||||||
| @Documented | @Documented | ||||||
| public @interface DataAccess { | public @interface DataAccess { | ||||||
|     Class<?>entity(); |     Class<?> entity(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -19,15 +19,13 @@ public class DataAccessAnnotationProcessor implements BeanPostProcessor { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public Object postProcessBeforeInitialization(Object bean, String beanName)  |     public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { | ||||||
|     throws BeansException { |  | ||||||
|         scanDataAccessAnnotation(bean, beanName); |         scanDataAccessAnnotation(bean, beanName); | ||||||
|         return bean; |         return bean; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public Object postProcessAfterInitialization(Object bean, String beanName)  |     public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { | ||||||
|     throws BeansException { |  | ||||||
|         return bean; |         return bean; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -12,18 +12,14 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; | |||||||
| import org.springframework.util.ReflectionUtils; | import org.springframework.util.ReflectionUtils; | ||||||
| import org.springframework.util.ReflectionUtils.FieldCallback; | import org.springframework.util.ReflectionUtils.FieldCallback; | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| public final class DataAccessFieldCallback implements FieldCallback { | public final class DataAccessFieldCallback implements FieldCallback { | ||||||
| 
 | 
 | ||||||
|     private static Logger logger = LoggerFactory.getLogger(DataAccessFieldCallback.class); |     private static Logger logger = LoggerFactory.getLogger(DataAccessFieldCallback.class); | ||||||
|     private static int AUTOWIRE_MODE = AutowireCapableBeanFactory.AUTOWIRE_BY_NAME; |     private static int AUTOWIRE_MODE = AutowireCapableBeanFactory.AUTOWIRE_BY_NAME; | ||||||
| 
 | 
 | ||||||
|     private static String ERROR_ENTITY_VALUE_NOT_SAME = "@DataAccess(entity) " |     private static String ERROR_ENTITY_VALUE_NOT_SAME = "@DataAccess(entity) " + "value should have same type with injected generic type."; | ||||||
|             + "value should have same type with injected generic type."; |     private static String WARN_NON_GENERIC_VALUE = "@DataAccess annotation assigned " + "to raw (non-generic) declaration. This will make your code less type-safe."; | ||||||
|     private static String WARN_NON_GENERIC_VALUE = "@DataAccess annotation assigned " |     private static String ERROR_CREATE_INSTANCE = "Cannot create instance of " + "type '{}' or instance creation is failed because: {}"; | ||||||
|             + "to raw (non-generic) declaration. This will make your code less type-safe."; |  | ||||||
|     private static String ERROR_CREATE_INSTANCE = "Cannot create instance of " |  | ||||||
|             + "type '{}' or instance creation is failed because: {}"; |  | ||||||
| 
 | 
 | ||||||
|     private ConfigurableListableBeanFactory configurableListableBeanFactory; |     private ConfigurableListableBeanFactory configurableListableBeanFactory; | ||||||
|     private Object bean; |     private Object bean; | ||||||
| @ -34,15 +30,14 @@ public final class DataAccessFieldCallback implements FieldCallback { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public void doWith(final Field field)  |     public void doWith(final Field field) throws IllegalArgumentException, IllegalAccessException { | ||||||
|     throws IllegalArgumentException, IllegalAccessException { |  | ||||||
|         if (!field.isAnnotationPresent(DataAccess.class)) { |         if (!field.isAnnotationPresent(DataAccess.class)) { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         ReflectionUtils.makeAccessible(field); |         ReflectionUtils.makeAccessible(field); | ||||||
|         final Type fieldGenericType = field.getGenericType(); |         final Type fieldGenericType = field.getGenericType(); | ||||||
|        // In this example, get actual "GenericDAO' type. |         // In this example, get actual "GenericDAO' type. | ||||||
|         final Class<?> generic = field.getType();  |         final Class<?> generic = field.getType(); | ||||||
|         final Class<?> classValue = field.getDeclaredAnnotation(DataAccess.class).entity(); |         final Class<?> classValue = field.getDeclaredAnnotation(DataAccess.class).entity(); | ||||||
| 
 | 
 | ||||||
|         if (genericTypeIsValid(classValue, fieldGenericType)) { |         if (genericTypeIsValid(classValue, fieldGenericType)) { | ||||||
| @ -54,7 +49,6 @@ public final class DataAccessFieldCallback implements FieldCallback { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|     /** |     /** | ||||||
|      * For example, if user write: |      * For example, if user write: | ||||||
|      * <pre> |      * <pre> | ||||||
| @ -75,8 +69,6 @@ public final class DataAccessFieldCallback implements FieldCallback { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     public final Object getBeanInstance(final String beanName, final Class<?> genericClass, final Class<?> paramClass) { |     public final Object getBeanInstance(final String beanName, final Class<?> genericClass, final Class<?> paramClass) { | ||||||
|         Object daoInstance = null; |         Object daoInstance = null; | ||||||
|         if (!configurableListableBeanFactory.containsBean(beanName)) { |         if (!configurableListableBeanFactory.containsBean(beanName)) { | ||||||
| @ -90,7 +82,7 @@ public final class DataAccessFieldCallback implements FieldCallback { | |||||||
|                 logger.error(ERROR_CREATE_INSTANCE, genericClass.getTypeName(), e); |                 logger.error(ERROR_CREATE_INSTANCE, genericClass.getTypeName(), e); | ||||||
|                 throw new RuntimeException(e); |                 throw new RuntimeException(e); | ||||||
|             } |             } | ||||||
|              | 
 | ||||||
|             daoInstance = configurableListableBeanFactory.initializeBean(toRegister, beanName); |             daoInstance = configurableListableBeanFactory.initializeBean(toRegister, beanName); | ||||||
|             configurableListableBeanFactory.autowireBeanProperties(daoInstance, AUTOWIRE_MODE, true); |             configurableListableBeanFactory.autowireBeanProperties(daoInstance, AUTOWIRE_MODE, true); | ||||||
|             configurableListableBeanFactory.registerSingleton(beanName, daoInstance); |             configurableListableBeanFactory.registerSingleton(beanName, daoInstance); | ||||||
|  | |||||||
| @ -5,10 +5,11 @@ import org.springframework.stereotype.Repository; | |||||||
| @Repository | @Repository | ||||||
| public class BeanWithGenericDAO { | public class BeanWithGenericDAO { | ||||||
| 
 | 
 | ||||||
|     @DataAccess(entity=Person.class) |     @DataAccess(entity = Person.class) | ||||||
|     private GenericDAO<Person> personGenericDAO; |     private GenericDAO<Person> personGenericDAO; | ||||||
| 
 | 
 | ||||||
|     public BeanWithGenericDAO() {} |     public BeanWithGenericDAO() { | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     public GenericDAO<Person> getPersonGenericDAO() { |     public GenericDAO<Person> getPersonGenericDAO() { | ||||||
|         return personGenericDAO; |         return personGenericDAO; | ||||||
|  | |||||||
| @ -15,7 +15,6 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; | |||||||
| import org.springframework.test.context.ContextConfiguration; | import org.springframework.test.context.ContextConfiguration; | ||||||
| import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| @RunWith(SpringJUnit4ClassRunner.class) | @RunWith(SpringJUnit4ClassRunner.class) | ||||||
| @ContextConfiguration(classes = { CustomAnnotationConfiguration.class }) | @ContextConfiguration(classes = { CustomAnnotationConfiguration.class }) | ||||||
| public class DataAccessFieldCallbackTest { | public class DataAccessFieldCallbackTest { | ||||||
| @ -36,8 +35,7 @@ public class DataAccessFieldCallbackTest { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     public void whenMethodGenericTypeIsValidCalled_thenReturnCorrectValue() |     public void whenMethodGenericTypeIsValidCalled_thenReturnCorrectValue() throws NoSuchFieldException, SecurityException { | ||||||
|             throws NoSuchFieldException, SecurityException { |  | ||||||
|         final DataAccessFieldCallback callback = new DataAccessFieldCallback(configurableListableBeanFactory, beanWithGenericDAO); |         final DataAccessFieldCallback callback = new DataAccessFieldCallback(configurableListableBeanFactory, beanWithGenericDAO); | ||||||
|         final Type fieldType = BeanWithGenericDAO.class.getDeclaredField("personGenericDAO").getGenericType(); |         final Type fieldType = BeanWithGenericDAO.class.getDeclaredField("personGenericDAO").getGenericType(); | ||||||
|         final boolean result = callback.genericTypeIsValid(Person.class, fieldType); |         final boolean result = callback.genericTypeIsValid(Person.class, fieldType); | ||||||
|  | |||||||
| @ -40,8 +40,7 @@ public class SpringBatchConfig { | |||||||
|     private Resource outputXml; |     private Resource outputXml; | ||||||
| 
 | 
 | ||||||
|     @Bean |     @Bean | ||||||
|     public ItemReader<Transaction> itemReader() |     public ItemReader<Transaction> itemReader() throws UnexpectedInputException, ParseException { | ||||||
|         throws UnexpectedInputException, ParseException { |  | ||||||
|         FlatFileItemReader<Transaction> reader = new FlatFileItemReader<Transaction>(); |         FlatFileItemReader<Transaction> reader = new FlatFileItemReader<Transaction>(); | ||||||
|         DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer(); |         DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer(); | ||||||
|         String[] tokens = { "username", "userid", "transactiondate", "amount" }; |         String[] tokens = { "username", "userid", "transactiondate", "amount" }; | ||||||
| @ -61,8 +60,7 @@ public class SpringBatchConfig { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Bean |     @Bean | ||||||
|     public ItemWriter<Transaction> itemWriter(Marshaller marshaller) |     public ItemWriter<Transaction> itemWriter(Marshaller marshaller) throws MalformedURLException { | ||||||
|         throws MalformedURLException { |  | ||||||
|         StaxEventItemWriter<Transaction> itemWriter = new StaxEventItemWriter<Transaction>(); |         StaxEventItemWriter<Transaction> itemWriter = new StaxEventItemWriter<Transaction>(); | ||||||
|         itemWriter.setMarshaller(marshaller); |         itemWriter.setMarshaller(marshaller); | ||||||
|         itemWriter.setRootTagName("transactionRecord"); |         itemWriter.setRootTagName("transactionRecord"); | ||||||
| @ -78,11 +76,8 @@ public class SpringBatchConfig { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Bean |     @Bean | ||||||
|     protected Step step1(ItemReader<Transaction> reader, |     protected Step step1(ItemReader<Transaction> reader, ItemProcessor<Transaction, Transaction> processor, ItemWriter<Transaction> writer) { | ||||||
|         ItemProcessor<Transaction, Transaction> processor, |         return steps.get("step1").<Transaction, Transaction> chunk(10).reader(reader).processor(processor).writer(writer).build(); | ||||||
|         ItemWriter<Transaction> writer) { |  | ||||||
|         return steps.get("step1").<Transaction, Transaction> chunk(10) |  | ||||||
|             .reader(reader).processor(processor).writer(writer).build(); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Bean(name = "firstBatchJob") |     @Bean(name = "firstBatchJob") | ||||||
|  | |||||||
| @ -38,8 +38,7 @@ public class SpringConfig { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Bean |     @Bean | ||||||
|     public DataSourceInitializer dataSourceInitializer(DataSource dataSource) |     public DataSourceInitializer dataSourceInitializer(DataSource dataSource) throws MalformedURLException { | ||||||
|         throws MalformedURLException { |  | ||||||
|         ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(); |         ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(); | ||||||
| 
 | 
 | ||||||
|         databasePopulator.addScript(dropReopsitoryTables); |         databasePopulator.addScript(dropReopsitoryTables); | ||||||
|  | |||||||
| @ -48,9 +48,7 @@ public class Transaction { | |||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public String toString() { |     public String toString() { | ||||||
|         return "Transaction [username=" + username + ", userId=" + userId |         return "Transaction [username=" + username + ", userId=" + userId + ", transactionDate=" + transactionDate + ", amount=" + amount + "]"; | ||||||
|             + ", transactionDate=" + transactionDate + ", amount=" + amount |  | ||||||
|             + "]"; |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,8 +3,7 @@ package org.baeldung.spring_batch_intro.service; | |||||||
| import org.baeldung.spring_batch_intro.model.Transaction; | import org.baeldung.spring_batch_intro.model.Transaction; | ||||||
| import org.springframework.batch.item.ItemProcessor; | import org.springframework.batch.item.ItemProcessor; | ||||||
| 
 | 
 | ||||||
| public class CustomItemProcessor implements | public class CustomItemProcessor implements ItemProcessor<Transaction, Transaction> { | ||||||
|     ItemProcessor<Transaction, Transaction> { |  | ||||||
| 
 | 
 | ||||||
|     public Transaction process(Transaction item) { |     public Transaction process(Transaction item) { | ||||||
|         System.out.println("Processing..." + item); |         System.out.println("Processing..." + item); | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired; | |||||||
| import org.springframework.stereotype.Repository; | import org.springframework.stereotype.Repository; | ||||||
| 
 | 
 | ||||||
| @Repository | @Repository | ||||||
| public class ChildDao extends AbstractHibernateDao<Child>implements IChildDao { | public class ChildDao extends AbstractHibernateDao<Child> implements IChildDao { | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     private SessionFactory sessionFactory; |     private SessionFactory sessionFactory; | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired; | |||||||
| import org.springframework.stereotype.Repository; | import org.springframework.stereotype.Repository; | ||||||
| 
 | 
 | ||||||
| @Repository | @Repository | ||||||
| public class FooDao extends AbstractHibernateDao<Foo>implements IFooDao { | public class FooDao extends AbstractHibernateDao<Foo> implements IFooDao { | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     private SessionFactory sessionFactory; |     private SessionFactory sessionFactory; | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired; | |||||||
| import org.springframework.stereotype.Repository; | import org.springframework.stereotype.Repository; | ||||||
| 
 | 
 | ||||||
| @Repository | @Repository | ||||||
| public class ParentDao extends AbstractHibernateDao<Parent>implements IParentDao { | public class ParentDao extends AbstractHibernateDao<Parent> implements IParentDao { | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     private SessionFactory sessionFactory; |     private SessionFactory sessionFactory; | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; | |||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| 
 | 
 | ||||||
| @Service | @Service | ||||||
| public class ChildService extends AbstractService<Child>implements IChildService { | public class ChildService extends AbstractService<Child> implements IChildService { | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     private IChildDao dao; |     private IChildDao dao; | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; | |||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| 
 | 
 | ||||||
| @Service | @Service | ||||||
| public class FooService extends AbstractService<Foo>implements IFooService { | public class FooService extends AbstractService<Foo> implements IFooService { | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     private IFooDao dao; |     private IFooDao dao; | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; | |||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| 
 | 
 | ||||||
| @Service | @Service | ||||||
| public class ParentService extends AbstractService<Parent>implements IParentService { | public class ParentService extends AbstractService<Parent> implements IParentService { | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     private IParentDao dao; |     private IParentDao dao; | ||||||
|  | |||||||
| @ -4,7 +4,7 @@ import org.baeldung.persistence.model.Foo; | |||||||
| import org.springframework.stereotype.Repository; | import org.springframework.stereotype.Repository; | ||||||
| 
 | 
 | ||||||
| @Repository | @Repository | ||||||
| public class FooDao extends AbstractHibernateDao<Foo>implements IFooDao { | public class FooDao extends AbstractHibernateDao<Foo> implements IFooDao { | ||||||
| 
 | 
 | ||||||
|     public FooDao() { |     public FooDao() { | ||||||
|         super(); |         super(); | ||||||
|  | |||||||
| @ -8,6 +8,6 @@ import org.springframework.stereotype.Repository; | |||||||
| 
 | 
 | ||||||
| @Repository | @Repository | ||||||
| @Scope(BeanDefinition.SCOPE_PROTOTYPE) | @Scope(BeanDefinition.SCOPE_PROTOTYPE) | ||||||
| public class GenericHibernateDao<T extends Serializable> extends AbstractHibernateDao<T>implements IGenericDao<T> { | public class GenericHibernateDao<T extends Serializable> extends AbstractHibernateDao<T> implements IGenericDao<T> { | ||||||
|     // |     // | ||||||
| } | } | ||||||
| @ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; | |||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| 
 | 
 | ||||||
| @Service | @Service | ||||||
| public class ChildService extends AbstractHibernateService<Child>implements IChildService { | public class ChildService extends AbstractHibernateService<Child> implements IChildService { | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     private IChildDao dao; |     private IChildDao dao; | ||||||
|  | |||||||
| @ -10,7 +10,7 @@ import org.springframework.beans.factory.annotation.Qualifier; | |||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| 
 | 
 | ||||||
| @Service | @Service | ||||||
| public class FooService extends AbstractHibernateService<Foo>implements IFooService { | public class FooService extends AbstractHibernateService<Foo> implements IFooService { | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     @Qualifier("fooHibernateDao") |     @Qualifier("fooHibernateDao") | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; | |||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| 
 | 
 | ||||||
| @Service | @Service | ||||||
| public class ParentService extends AbstractHibernateService<Parent>implements IParentService { | public class ParentService extends AbstractHibernateService<Parent> implements IParentService { | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     private IParentDao dao; |     private IParentDao dao; | ||||||
|  | |||||||
| @ -41,7 +41,6 @@ public class JPABarAuditTest { | |||||||
|         logger.info("tearDownAfterClass()"); |         logger.info("tearDownAfterClass()"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|     @Autowired |     @Autowired | ||||||
|     @Qualifier("barJpaService") |     @Qualifier("barJpaService") | ||||||
|     private IBarService barService; |     private IBarService barService; | ||||||
| @ -51,7 +50,6 @@ public class JPABarAuditTest { | |||||||
| 
 | 
 | ||||||
|     private EntityManager em; |     private EntityManager em; | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|     @Before |     @Before | ||||||
|     public void setUp() throws Exception { |     public void setUp() throws Exception { | ||||||
|         logger.info("setUp()"); |         logger.info("setUp()"); | ||||||
| @ -64,7 +62,6 @@ public class JPABarAuditTest { | |||||||
|         em.close(); |         em.close(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|     @Test |     @Test | ||||||
|     public final void whenBarsModified_thenBarsAudited() { |     public final void whenBarsModified_thenBarsAudited() { | ||||||
| 
 | 
 | ||||||
| @ -84,7 +81,6 @@ public class JPABarAuditTest { | |||||||
|         bar1.setName("BAR1b"); |         bar1.setName("BAR1b"); | ||||||
|         barService.update(bar1); |         barService.update(bar1); | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|         // get BAR1 and BAR2 from the DB and check the audit values |         // get BAR1 and BAR2 from the DB and check the audit values | ||||||
|         // detach instances from persistence context to make sure we fire db |         // detach instances from persistence context to make sure we fire db | ||||||
|         em.detach(bar1); |         em.detach(bar1); | ||||||
|  | |||||||
| @ -4,7 +4,7 @@ import org.baeldung.persistence.model.Foo; | |||||||
| import org.springframework.stereotype.Repository; | import org.springframework.stereotype.Repository; | ||||||
| 
 | 
 | ||||||
| @Repository | @Repository | ||||||
| public class FooDao extends AbstractJpaDAO<Foo>implements IFooDao { | public class FooDao extends AbstractJpaDAO<Foo> implements IFooDao { | ||||||
| 
 | 
 | ||||||
|     public FooDao() { |     public FooDao() { | ||||||
|         super(); |         super(); | ||||||
|  | |||||||
| @ -30,7 +30,7 @@ public class User { | |||||||
|     private String email; |     private String email; | ||||||
| 
 | 
 | ||||||
|     @ManyToMany(fetch = FetchType.EAGER) |     @ManyToMany(fetch = FetchType.EAGER) | ||||||
|     @JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id")) |     @JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id") , inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id") ) | ||||||
|     @JsonApiToMany |     @JsonApiToMany | ||||||
|     @JsonApiIncludeByDefault |     @JsonApiIncludeByDefault | ||||||
|     private Set<Role> roles; |     private Set<Role> roles; | ||||||
|  | |||||||
| @ -24,13 +24,16 @@ public class LoggingAspect { | |||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     @Pointcut("@target(org.springframework.stereotype.Repository)") |     @Pointcut("@target(org.springframework.stereotype.Repository)") | ||||||
|     public void repositoryMethods() {} |     public void repositoryMethods() { | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     @Pointcut("@annotation(org.baeldung.aop.annotations.Loggable)") |     @Pointcut("@annotation(org.baeldung.aop.annotations.Loggable)") | ||||||
|     public void loggableMethods() {} |     public void loggableMethods() { | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     @Pointcut("@args(org.baeldung.aop.annotations.Entity)") |     @Pointcut("@args(org.baeldung.aop.annotations.Entity)") | ||||||
|     public void methodsAcceptingEntities() {} |     public void methodsAcceptingEntities() { | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     @Before("repositoryMethods()") |     @Before("repositoryMethods()") | ||||||
|     public void logMethodCall(JoinPoint jp) { |     public void logMethodCall(JoinPoint jp) { | ||||||
|  | |||||||
| @ -16,7 +16,8 @@ public class PerformanceAspect { | |||||||
|     private static Logger logger = Logger.getLogger(PerformanceAspect.class.getName()); |     private static Logger logger = Logger.getLogger(PerformanceAspect.class.getName()); | ||||||
| 
 | 
 | ||||||
|     @Pointcut("within(@org.springframework.stereotype.Repository *)") |     @Pointcut("within(@org.springframework.stereotype.Repository *)") | ||||||
|     public void repositoryClassMethods() {} |     public void repositoryClassMethods() { | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     @Around("repositoryClassMethods()") |     @Around("repositoryClassMethods()") | ||||||
|     public Object measureMethodExecutionTime(ProceedingJoinPoint pjp) throws Throwable { |     public Object measureMethodExecutionTime(ProceedingJoinPoint pjp) throws Throwable { | ||||||
|  | |||||||
| @ -21,13 +21,16 @@ public class PublishingAspect { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Pointcut("@target(org.springframework.stereotype.Repository)") |     @Pointcut("@target(org.springframework.stereotype.Repository)") | ||||||
|     public void repositoryMethods() {} |     public void repositoryMethods() { | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     @Pointcut("execution(* *..create*(Long,..))") |     @Pointcut("execution(* *..create*(Long,..))") | ||||||
|     public void firstLongParamMethods() {} |     public void firstLongParamMethods() { | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     @Pointcut("repositoryMethods() && firstLongParamMethods()") |     @Pointcut("repositoryMethods() && firstLongParamMethods()") | ||||||
|     public void entityCreationMethods() {} |     public void entityCreationMethods() { | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     @AfterReturning(value = "entityCreationMethods()", returning = "entity") |     @AfterReturning(value = "entityCreationMethods()", returning = "entity") | ||||||
|     public void logMethodCall(JoinPoint jp, Object entity) throws Throwable { |     public void logMethodCall(JoinPoint jp, Object entity) throws Throwable { | ||||||
|  | |||||||
| @ -14,9 +14,6 @@ public class Foo { | |||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public String toString() { |     public String toString() { | ||||||
|         return "Foo{" + |         return "Foo{" + "id=" + id + ", name='" + name + '\'' + '}'; | ||||||
|                 "id=" + id + |  | ||||||
|                 ", name='" + name + '\'' + |  | ||||||
|                 '}'; |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -13,20 +13,19 @@ public class UserController { | |||||||
| 
 | 
 | ||||||
|     @RequestMapping(value = "/", method = RequestMethod.GET) |     @RequestMapping(value = "/", method = RequestMethod.GET) | ||||||
|     public String showForm(final Model model) { |     public String showForm(final Model model) { | ||||||
| 	final User user = new User(); |         final User user = new User(); | ||||||
| 	user.setFirstname("John"); |         user.setFirstname("John"); | ||||||
| 	user.setLastname("Roy"); |         user.setLastname("Roy"); | ||||||
| 	user.setEmailId("John.Roy@gmail.com"); |         user.setEmailId("John.Roy@gmail.com"); | ||||||
| 	model.addAttribute("user", user); |         model.addAttribute("user", user); | ||||||
| 	return "index"; |         return "index"; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @RequestMapping(value = "/processForm", method = RequestMethod.POST) |     @RequestMapping(value = "/processForm", method = RequestMethod.POST) | ||||||
|     public String processForm(@ModelAttribute(value = "user") final User user, |     public String processForm(@ModelAttribute(value = "user") final User user, final Model model) { | ||||||
| 	    final Model model) { |         // Insert User into DB | ||||||
| 	// Insert User into DB |         model.addAttribute("name", user.getFirstname() + " " + user.getLastname()); | ||||||
| 	model.addAttribute("name", user.getFirstname() + " " + user.getLastname()); |         return "hello"; | ||||||
| 	return "hello"; |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
| @ -24,12 +24,12 @@ import static org.junit.Assert.assertThat; | |||||||
| import static org.junit.Assert.assertTrue; | import static org.junit.Assert.assertTrue; | ||||||
| 
 | 
 | ||||||
| @RunWith(SpringJUnit4ClassRunner.class) | @RunWith(SpringJUnit4ClassRunner.class) | ||||||
| @ContextConfiguration(classes = {TestConfig.class}, loader = AnnotationConfigContextLoader.class) | @ContextConfiguration(classes = { TestConfig.class }, loader = AnnotationConfigContextLoader.class) | ||||||
| public class AopLoggingTest { | public class AopLoggingTest { | ||||||
| 
 | 
 | ||||||
|     @Before |     @Before | ||||||
|     public void setUp() { |     public void setUp() { | ||||||
|         messages =  new ArrayList<>(); |         messages = new ArrayList<>(); | ||||||
| 
 | 
 | ||||||
|         logEventHandler = new Handler() { |         logEventHandler = new Handler() { | ||||||
|             @Override |             @Override | ||||||
|  | |||||||
| @ -23,7 +23,7 @@ import static org.junit.Assert.assertThat; | |||||||
| import static org.junit.Assert.assertTrue; | import static org.junit.Assert.assertTrue; | ||||||
| 
 | 
 | ||||||
| @RunWith(SpringJUnit4ClassRunner.class) | @RunWith(SpringJUnit4ClassRunner.class) | ||||||
| @ContextConfiguration(classes = {TestConfig.class}, loader = AnnotationConfigContextLoader.class) | @ContextConfiguration(classes = { TestConfig.class }, loader = AnnotationConfigContextLoader.class) | ||||||
| public class AopPerformanceTest { | public class AopPerformanceTest { | ||||||
| 
 | 
 | ||||||
|     @Before |     @Before | ||||||
|  | |||||||
| @ -22,7 +22,7 @@ import java.util.regex.Pattern; | |||||||
| import static org.junit.Assert.assertTrue; | import static org.junit.Assert.assertTrue; | ||||||
| 
 | 
 | ||||||
| @RunWith(SpringJUnit4ClassRunner.class) | @RunWith(SpringJUnit4ClassRunner.class) | ||||||
| @ContextConfiguration(classes = {TestConfig.class}, loader = AnnotationConfigContextLoader.class) | @ContextConfiguration(classes = { TestConfig.class }, loader = AnnotationConfigContextLoader.class) | ||||||
| public class AopPublishingTest { | public class AopPublishingTest { | ||||||
| 
 | 
 | ||||||
|     @Before |     @Before | ||||||
| @ -60,8 +60,7 @@ public class AopPublishingTest { | |||||||
|         dao.create(1L, "Bar"); |         dao.create(1L, "Bar"); | ||||||
| 
 | 
 | ||||||
|         String logMessage = messages.get(0); |         String logMessage = messages.get(0); | ||||||
|         Pattern pattern = Pattern.compile("Created foo instance: " + |         Pattern pattern = Pattern.compile("Created foo instance: " + Pattern.quote(new Foo(1L, "Bar").toString())); | ||||||
|                 Pattern.quote(new Foo(1L, "Bar").toString())); |  | ||||||
|         assertTrue(pattern.matcher(logMessage).matches()); |         assertTrue(pattern.matcher(logMessage).matches()); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -5,7 +5,7 @@ import org.springframework.context.annotation.Configuration; | |||||||
| import org.springframework.context.annotation.EnableAspectJAutoProxy; | import org.springframework.context.annotation.EnableAspectJAutoProxy; | ||||||
| 
 | 
 | ||||||
| @Configuration | @Configuration | ||||||
| @ComponentScan(basePackages = {"org.baeldung.dao", "org.baeldung.aop", "org.baeldung.events"}) | @ComponentScan(basePackages = { "org.baeldung.dao", "org.baeldung.aop", "org.baeldung.events" }) | ||||||
| @EnableAspectJAutoProxy | @EnableAspectJAutoProxy | ||||||
| public class TestConfig { | public class TestConfig { | ||||||
| } | } | ||||||
|  | |||||||
| @ -19,8 +19,8 @@ public @interface PasswordMatches { | |||||||
| 
 | 
 | ||||||
|     String message() default "Passwords don't match"; |     String message() default "Passwords don't match"; | ||||||
| 
 | 
 | ||||||
|     Class<?>[]groups() default {}; |     Class<?>[] groups() default {}; | ||||||
| 
 | 
 | ||||||
|     Class<? extends Payload>[]payload() default {}; |     Class<? extends Payload>[] payload() default {}; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
| @ -20,7 +20,7 @@ public @interface ValidEmail { | |||||||
| 
 | 
 | ||||||
|     String message() default "Invalid Email"; |     String message() default "Invalid Email"; | ||||||
| 
 | 
 | ||||||
|     Class<?>[]groups() default {}; |     Class<?>[] groups() default {}; | ||||||
| 
 | 
 | ||||||
|     Class<? extends Payload>[]payload() default {}; |     Class<? extends Payload>[] payload() default {}; | ||||||
| } | } | ||||||
|  | |||||||
| @ -20,8 +20,8 @@ public @interface ValidPassword { | |||||||
| 
 | 
 | ||||||
|     String message() default "Invalid Password"; |     String message() default "Invalid Password"; | ||||||
| 
 | 
 | ||||||
|     Class<?>[]groups() default {}; |     Class<?>[] groups() default {}; | ||||||
| 
 | 
 | ||||||
|     Class<? extends Payload>[]payload() default {}; |     Class<? extends Payload>[] payload() default {}; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user