1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.persistence.jpa.spring;
20
21 import java.util.Objects;
22 import javax.persistence.Entity;
23 import org.apache.syncope.core.persistence.jpa.entity.AbstractEntity;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26 import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
27 import org.springframework.core.type.filter.AnnotationTypeFilter;
28 import org.springframework.orm.jpa.persistenceunit.MutablePersistenceUnitInfo;
29 import org.springframework.orm.jpa.persistenceunit.PersistenceUnitPostProcessor;
30
31
32
33
34 public class MultiJarAwarePersistenceUnitPostProcessor implements PersistenceUnitPostProcessor {
35
36 private static final Logger LOG = LoggerFactory.getLogger(MultiJarAwarePersistenceUnitPostProcessor.class);
37
38 @Override
39 public void postProcessPersistenceUnitInfo(final MutablePersistenceUnitInfo pui) {
40 ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
41 scanner.addIncludeFilter(new AnnotationTypeFilter(Entity.class));
42
43 scanner.findCandidateComponents(AbstractEntity.class.getPackage().getName()).forEach(bd -> {
44 LOG.debug("Adding JPA entity {}", bd.getBeanClassName());
45 pui.addManagedClassName(Objects.requireNonNull(bd.getBeanClassName()));
46 });
47 }
48 }