Skip to content

Commit f63a18f

Browse files
authored
SAK-43968 Spring 5.2.8 / Hibernate 5.3.18 (sakaiproject#8459)
1 parent ec312db commit f63a18f

File tree

178 files changed

+862
-941
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

178 files changed

+862
-941
lines changed

assignment/api/src/java/org/sakaiproject/assignment/api/model/Assignment.java

+9-9
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
* - LocalTime implicitly @Temporal(TemporalType.Time)
8787
* - LocalDateTime implicitly @Temporal(TemporalType.Timestamp)
8888
* - java 8 time Instant is not a supported Type in Hibernate < 5
89-
* - So we use a custom type called org.sakaiproject.springframework.orm.hibernate.type.InstantType,
89+
* - So we use a custom type called org.hibernate.type.InstantType,
9090
* which stores the time consistent with the use of Instant in UTC in a DATETIME field.
9191
* This can be removed after upgrading to Hibernate 5.
9292
* </pre>
@@ -123,31 +123,31 @@ public class Assignment {
123123
@Column(name = "SECTION")
124124
private String section;
125125

126-
@Type(type = "org.sakaiproject.springframework.orm.hibernate.type.InstantType")
126+
@Type(type = "org.hibernate.type.InstantType")
127127
@Column(name = "CREATED_DATE", nullable = false)
128128
private Instant dateCreated;
129129

130-
@Type(type = "org.sakaiproject.springframework.orm.hibernate.type.InstantType")
130+
@Type(type = "org.hibernate.type.InstantType")
131131
@Column(name = "MODIFIED_DATE")
132132
private Instant dateModified;
133133

134-
@Type(type = "org.sakaiproject.springframework.orm.hibernate.type.InstantType")
134+
@Type(type = "org.hibernate.type.InstantType")
135135
@Column(name = "VISIBLE_DATE")
136136
private Instant visibleDate;
137137

138-
@Type(type = "org.sakaiproject.springframework.orm.hibernate.type.InstantType")
138+
@Type(type = "org.hibernate.type.InstantType")
139139
@Column(name = "OPEN_DATE")
140140
private Instant openDate;
141141

142-
@Type(type = "org.sakaiproject.springframework.orm.hibernate.type.InstantType")
142+
@Type(type = "org.hibernate.type.InstantType")
143143
@Column(name = "DUE_DATE")
144144
private Instant dueDate;
145145

146-
@Type(type = "org.sakaiproject.springframework.orm.hibernate.type.InstantType")
146+
@Type(type = "org.hibernate.type.InstantType")
147147
@Column(name = "CLOSE_DATE")
148148
private Instant closeDate;
149149

150-
@Type(type = "org.sakaiproject.springframework.orm.hibernate.type.InstantType")
150+
@Type(type = "org.hibernate.type.InstantType")
151151
@Column(name = "DROP_DEAD_DATE")
152152
private Instant dropDeadDate;
153153

@@ -232,7 +232,7 @@ public class Assignment {
232232
@Column(name = "ALLOW_PEER_ASSESSMENT")
233233
private Boolean allowPeerAssessment = Boolean.FALSE;
234234

235-
@Type(type = "org.sakaiproject.springframework.orm.hibernate.type.InstantType")
235+
@Type(type = "org.hibernate.type.InstantType")
236236
@Column(name = "PEER_ASSESSMENT_PERIOD_DATE")
237237
private Instant peerAssessmentPeriodDate;
238238

assignment/api/src/java/org/sakaiproject/assignment/api/model/AssignmentSubmission.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -94,19 +94,19 @@ public class AssignmentSubmission {
9494

9595
//private List submissionLog;
9696

97-
@Type(type = "org.sakaiproject.springframework.orm.hibernate.type.InstantType")
97+
@Type(type = "org.hibernate.type.InstantType")
9898
@Column(name = "SUBMITTED_DATE")
9999
private Instant dateSubmitted;
100100

101-
@Type(type = "org.sakaiproject.springframework.orm.hibernate.type.InstantType")
101+
@Type(type = "org.hibernate.type.InstantType")
102102
@Column(name = "RETURNED_DATE")
103103
private Instant dateReturned;
104104

105-
@Type(type = "org.sakaiproject.springframework.orm.hibernate.type.InstantType")
105+
@Type(type = "org.hibernate.type.InstantType")
106106
@Column(name = "CREATED_DATE")
107107
private Instant dateCreated;
108108

109-
@Type(type = "org.sakaiproject.springframework.orm.hibernate.type.InstantType")
109+
@Type(type = "org.hibernate.type.InstantType")
110110
@Column(name = "MODIFIED_DATE")
111111
private Instant dateModified;
112112

assignment/api/src/java/org/sakaiproject/assignment/api/persistence/AssignmentRepository.java

-2
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ AssignmentSubmission newSubmission(String assignmentId,
6868

6969
AssignmentSubmission findSubmissionForGroup(String assignmentId, String groupId);
7070

71-
void initializeAssignment(Assignment assignment);
72-
7371
/**
7472
* Count submissions for a given assignment.
7573
* If any of the parameters are null they are not included in the query.

assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentPeerAssessmentServiceImpl.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@
4848
import org.sakaiproject.exception.PermissionException;
4949
import org.sakaiproject.tool.api.SessionManager;
5050
import org.sakaiproject.user.api.User;
51-
import org.springframework.orm.hibernate4.HibernateCallback;
52-
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
51+
import org.springframework.orm.hibernate5.HibernateCallback;
52+
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
5353

5454
import lombok.extern.slf4j.Slf4j;
5555

assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentServiceImpl.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -1252,7 +1252,7 @@ public void updateAssignment(Assignment assignment) throws PermissionException {
12521252

12531253
assignment.setDateModified(Instant.now());
12541254
assignment.setModifier(sessionManager.getCurrentSessionUserId());
1255-
assignmentRepository.update(assignment);
1255+
assignmentRepository.merge(assignment);
12561256

12571257
eventTrackingService.post(eventTrackingService.newEvent(AssignmentConstants.EVENT_UPDATE_ASSIGNMENT, reference, true));
12581258
}
@@ -1529,7 +1529,6 @@ public AssignmentSubmission getSubmission(List<AssignmentSubmission> submissions
15291529

15301530
@Override
15311531
public Set<AssignmentSubmission> getSubmissions(Assignment assignment) {
1532-
assignmentRepository.initializeAssignment(assignment);
15331532
return assignment.getSubmissions();
15341533
}
15351534

assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentSupplementItemServiceImpl.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@
4848
import org.sakaiproject.user.api.User;
4949
import org.sakaiproject.user.api.UserDirectoryService;
5050
import org.springframework.dao.DataAccessException;
51-
import org.springframework.orm.hibernate4.HibernateCallback;
52-
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
51+
import org.springframework.orm.hibernate5.HibernateCallback;
52+
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
5353

5454
@Slf4j
5555
public class AssignmentSupplementItemServiceImpl extends HibernateDaoSupport implements AssignmentSupplementItemService {

assignment/impl/src/java/org/sakaiproject/assignment/impl/persistence/AssignmentRepositoryImpl.java

+2-10
Original file line numberDiff line numberDiff line change
@@ -112,15 +112,12 @@ public void deleteAssignment(String assignmentId) {
112112
@Transactional
113113
public void deleteSubmission(String submissionId) {
114114
Session session = sessionFactory.getCurrentSession();
115-
AssignmentSubmission submission = (AssignmentSubmission) session.get(AssignmentSubmission.class, submissionId);
115+
AssignmentSubmission submission = session.get(AssignmentSubmission.class, submissionId);
116116
if (submission != null) {
117117
log.info("Deleting submission {}", submission);
118118
Assignment assignment = submission.getAssignment();
119-
// must call refresh here to ensure the collections are initialized before changing, this is due to lazy loaded entities
120-
session.refresh(assignment);
121119
assignment.getSubmissions().remove(submission);
122-
session.update(assignment);
123-
session.flush();
120+
session.delete(submission);
124121
}
125122
}
126123

@@ -247,11 +244,6 @@ public AssignmentSubmission findSubmissionForGroup(String assignmentId, String g
247244
.uniqueResult();
248245
}
249246

250-
@Override
251-
public void initializeAssignment(Assignment assignment) {
252-
sessionFactory.getCurrentSession().refresh(assignment);
253-
}
254-
255247
@Override
256248
public long countAssignmentSubmissions(String assignmentId, Boolean graded, Boolean hasSubmissionDate, Boolean userSubmission, List<String> userIds) {
257249
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(AssignmentSubmission.class)

assignment/impl/src/test/org/sakaiproject/assignment/impl/AssignmentServiceTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@
9494
import org.springframework.test.context.ContextConfiguration;
9595
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
9696
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
97+
import org.springframework.test.util.AopTestUtils;
9798
import org.w3c.dom.Document;
9899
import org.w3c.dom.Element;
99100
import org.w3c.dom.Node;
@@ -141,7 +142,7 @@ public void setUp() {
141142
when(resourceLoader.getString("fail")).thenReturn("Fail");
142143
when(resourceLoader.getString("gen.checked")).thenReturn("Checked");
143144
when(resourceLoader.getString("assignment.copy")).thenReturn("Copy");
144-
((AssignmentServiceImpl) assignmentService).setResourceLoader(resourceLoader);
145+
((AssignmentServiceImpl) AopTestUtils.getTargetObject(assignmentService)).setResourceLoader(resourceLoader);
145146
when(userTimeService.getLocalTimeZone()).thenReturn(TimeZone.getDefault());
146147
}
147148

assignment/impl/src/test/org/sakaiproject/assignment/impl/AssignmentTestConfiguration.java

+15-6
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@
2323
import javax.sql.DataSource;
2424

2525
import org.hibernate.SessionFactory;
26+
import org.hibernate.boot.registry.StandardServiceRegistry;
27+
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
2628
import org.hibernate.dialect.HSQLDialect;
29+
import org.hibernate.id.factory.internal.MutableIdentifierGeneratorFactoryInitiator;
2730
import org.hsqldb.jdbcDriver;
2831
import org.mockito.Mockito;
2932
import org.sakaiproject.announcement.api.AnnouncementService;
@@ -71,8 +74,8 @@
7174
import org.springframework.context.annotation.PropertySource;
7275
import org.springframework.core.env.Environment;
7376
import org.springframework.jdbc.datasource.DriverManagerDataSource;
74-
import org.springframework.orm.hibernate4.HibernateTransactionManager;
75-
import org.springframework.orm.hibernate4.LocalSessionFactoryBuilder;
77+
import org.springframework.orm.hibernate5.HibernateTransactionManager;
78+
import org.springframework.orm.hibernate5.LocalSessionFactoryBuilder;
7679
import org.springframework.transaction.annotation.EnableTransactionManagement;
7780
import org.springframework.transaction.support.TransactionTemplate;
7881

@@ -93,11 +96,16 @@ public class AssignmentTestConfiguration {
9396

9497
@Bean(name = "org.sakaiproject.springframework.orm.hibernate.GlobalSessionFactory")
9598
public SessionFactory sessionFactory() throws IOException {
96-
LocalSessionFactoryBuilder sfb = new LocalSessionFactoryBuilder(dataSource());
99+
DataSource dataSource = dataSource();
100+
LocalSessionFactoryBuilder sfb = new LocalSessionFactoryBuilder(dataSource);
101+
StandardServiceRegistryBuilder srb = sfb.getStandardServiceRegistryBuilder();
102+
srb.applySetting(org.hibernate.cfg.Environment.DATASOURCE, dataSource);
103+
srb.applySettings(hibernateProperties());
104+
StandardServiceRegistry sr = srb.build();
105+
sr.getService(MutableIdentifierGeneratorFactoryInitiator.INSTANCE.getServiceInitiated())
106+
.register("uuid2", AssignableUUIDGenerator.class);
97107
hibernateMappings.processAdditionalMappings(sfb);
98-
sfb.addProperties(hibernateProperties());
99-
sfb.getIdentifierGeneratorFactory().register("uuid2", AssignableUUIDGenerator.class);
100-
return sfb.buildSessionFactory();
108+
return sfb.buildSessionFactory(sr);
101109
}
102110

103111
@Bean(name = "javax.sql.DataSource")
@@ -118,6 +126,7 @@ public Properties hibernateProperties() {
118126
setProperty(org.hibernate.cfg.Environment.HBM2DDL_AUTO, environment.getProperty(org.hibernate.cfg.Environment.HBM2DDL_AUTO));
119127
setProperty(org.hibernate.cfg.Environment.ENABLE_LAZY_LOAD_NO_TRANS, environment.getProperty(org.hibernate.cfg.Environment.ENABLE_LAZY_LOAD_NO_TRANS, "true"));
120128
setProperty(org.hibernate.cfg.Environment.USE_SECOND_LEVEL_CACHE, environment.getProperty(org.hibernate.cfg.Environment.USE_SECOND_LEVEL_CACHE));
129+
setProperty(org.hibernate.cfg.Environment.CURRENT_SESSION_CONTEXT_CLASS, environment.getProperty(org.hibernate.cfg.Environment.CURRENT_SESSION_CONTEXT_CLASS));
121130
}
122131
};
123132
}

assignment/impl/src/test/resources/hibernate.properties

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ hibernate.show_sql=false
33
hibernate.hbm2ddl.auto=create
44
hibernate.enable_lazy_load_no_trans=true
55
hibernate.cache.use_second_level_cache=false
6+
hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
67

78
# Connection definition to the HSQLDB database
89
hibernate.connection.driver_class=org.hsqldb.jdbcDriver

assignment/tool/pom.xml

+4
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,10 @@
137137
<artifactId>json</artifactId>
138138
<version>${sakai.org.json.version}</version>
139139
</dependency>
140+
<dependency>
141+
<groupId>org.springframework</groupId>
142+
<artifactId>spring-context</artifactId>
143+
</dependency>
140144
<dependency>
141145
<groupId>org.springframework</groupId>
142146
<artifactId>spring-beans</artifactId>

calendar/calendar-impl/impl/src/java/org/sakaiproject/calendar/impl/OpaqueUrlDaoHbm.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
import lombok.extern.slf4j.Slf4j;
2323

24-
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
24+
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
2525

2626
import org.sakaiproject.calendar.api.OpaqueUrl;
2727
import org.sakaiproject.calendar.api.OpaqueUrlDao;

chat/chat-impl/impl/src/java/org/sakaiproject/chat2/model/impl/ChatManagerImpl.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@
9797
import org.sakaiproject.user.api.UserNotDefinedException;
9898
import org.sakaiproject.util.ResourceLoader;
9999
import org.sakaiproject.util.api.FormattedText;
100-
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
100+
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
101101
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
102102
import org.springframework.transaction.support.TransactionSynchronizationManager;
103103

cloud-storage/googledrive/tool/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<dependencies>
2424
<dependency>
2525
<groupId>org.springframework</groupId>
26-
<artifactId>${sakai.spring.artifactId}</artifactId>
26+
<artifactId>spring-core</artifactId>
2727
</dependency>
2828
<dependency>
2929
<groupId>org.springframework</groupId>
@@ -51,7 +51,7 @@
5151
</dependency>
5252
<dependency>
5353
<groupId>org.thymeleaf</groupId>
54-
<artifactId>thymeleaf-spring4</artifactId>
54+
<artifactId>thymeleaf-spring5</artifactId>
5555
<version>${thymeleaf.version}</version>
5656
</dependency>
5757
<!-- we are running a webapp in a servlet container so we need the servlet API -->

cloud-storage/googledrive/tool/src/main/java/org/sakaiproject/googledrive/ThymeleafConfig.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
import org.springframework.web.servlet.ViewResolver;
2626
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
2727
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
28-
import org.thymeleaf.TemplateEngine;
29-
import org.thymeleaf.spring4.SpringTemplateEngine;
30-
import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver;
31-
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
28+
import org.thymeleaf.spring5.ISpringTemplateEngine;
29+
import org.thymeleaf.spring5.SpringTemplateEngine;
30+
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
31+
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
3232
import org.thymeleaf.templatemode.TemplateMode;
3333
import org.thymeleaf.templateresolver.ITemplateResolver;
3434

@@ -60,7 +60,7 @@ public ViewResolver viewResolver() {
6060
return viewResolver;
6161
}
6262

63-
private TemplateEngine templateEngine() {
63+
private ISpringTemplateEngine templateEngine() {
6464
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
6565
templateEngine.setEnableSpringELCompiler(true);
6666
templateEngine.setMessageSource(messageSource());

cloud-storage/onedrive/tool/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<dependencies>
2424
<dependency>
2525
<groupId>org.springframework</groupId>
26-
<artifactId>${sakai.spring.artifactId}</artifactId>
26+
<artifactId>spring-core</artifactId>
2727
</dependency>
2828
<dependency>
2929
<groupId>org.springframework</groupId>
@@ -46,7 +46,7 @@
4646
</dependency>
4747
<dependency>
4848
<groupId>org.thymeleaf</groupId>
49-
<artifactId>thymeleaf-spring4</artifactId>
49+
<artifactId>thymeleaf-spring5</artifactId>
5050
<version>${thymeleaf.version}</version>
5151
</dependency>
5252
<!-- we are running a webapp in a servlet container so we need the servlet API -->

cloud-storage/onedrive/tool/src/main/java/org/sakaiproject/onedrive/ThymeleafConfig.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@
2626
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
2727
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
2828
import org.thymeleaf.TemplateEngine;
29-
import org.thymeleaf.spring4.SpringTemplateEngine;
30-
import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver;
31-
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
29+
import org.thymeleaf.spring5.ISpringTemplateEngine;
30+
import org.thymeleaf.spring5.SpringTemplateEngine;
31+
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
32+
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
3233
import org.thymeleaf.templatemode.TemplateMode;
3334
import org.thymeleaf.templateresolver.ITemplateResolver;
3435

@@ -60,7 +61,7 @@ public ViewResolver viewResolver() {
6061
return viewResolver;
6162
}
6263

63-
private TemplateEngine templateEngine() {
64+
private ISpringTemplateEngine templateEngine() {
6465
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
6566
templateEngine.setEnableSpringELCompiler(true);
6667
templateEngine.setMessageSource(messageSource());

cmprovider/src/java/org/sakaiproject/cmprovider/CmProviderHibernateService.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
import org.hibernate.Query;
2020
import org.sakaiproject.coursemanagement.api.exception.IdNotFoundException;
2121
import org.sakaiproject.coursemanagement.impl.EnrollmentSetCmImpl;
22-
import org.springframework.orm.hibernate4.HibernateCallback;
23-
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
22+
import org.springframework.orm.hibernate5.HibernateCallback;
23+
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
2424

2525
/**
2626
* Service for any custom hibernate calls that are needed for the course management providers.

common/common-composite-component/src/java/org/sakaiproject/component/common/edu/person/SakaiPersonManagerImpl.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@
5656
import org.sakaiproject.user.api.UserDirectoryService;
5757
import org.sakaiproject.user.api.UserEdit;
5858
import org.sakaiproject.user.api.UserNotDefinedException;
59-
import org.springframework.orm.hibernate4.HibernateCallback;
60-
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
59+
import org.springframework.orm.hibernate5.HibernateCallback;
60+
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
6161

6262

6363
/**

common/common-composite-component/src/java/org/sakaiproject/component/common/type/TypeManagerImpl.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
import org.sakaiproject.api.common.type.TypeManager;
3232
import org.sakaiproject.component.common.manager.PersistableHelper;
3333
import org.sakaiproject.id.cover.IdManager;
34-
import org.springframework.orm.hibernate4.HibernateCallback;
35-
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
34+
import org.springframework.orm.hibernate5.HibernateCallback;
35+
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
3636

3737
/**
3838
* @author <a href="mailto:[email protected]">Lance Speelmon </a>

common/privacy-comp-impl/src/java/org/sakaiproject/component/privacy/PrivacyManagerImpl.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434

3535
import org.hibernate.Query;
3636

37-
import org.springframework.orm.hibernate4.HibernateCallback;
38-
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
37+
import org.springframework.orm.hibernate5.HibernateCallback;
38+
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
3939
import org.springframework.transaction.PlatformTransactionManager;
4040
import org.springframework.transaction.TransactionStatus;
4141
import org.springframework.transaction.annotation.Transactional;

0 commit comments

Comments
 (0)