02/02: make security works in tests + downgrade tomcat version
This is an automated email from the git hooks/post-receive script. unknown user pushed a commit to branch devel in repository Pollen. commit 16099446a390baf6c65b42e8ef263c90d01d9827 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu May 22 10:44:11 2014 +0200 make security works in tests + downgrade tomcat version --- .../chorem/pollen/rest/api/PollenUserApiTest.java | 26 ++++++++ .../chorem/pollen/services/bean/CreateBeanRef.java | 71 ++++++++++++++-------- .../pollen/services/service/ChoiceService.java | 4 +- .../pollen/services/service/CommentService.java | 5 +- .../services/service/FavoriteListService.java | 9 +-- .../pollen/services/service/PollService.java | 3 +- .../pollen/services/service/PollenUserService.java | 21 ++++--- .../pollen/services/service/VoteService.java | 4 +- .../pollen/services/service/VoterListService.java | 31 ++++++---- .../services/service/security/SecurityService.java | 3 +- .../test/FakePollenApplicationContext.java | 6 +- .../services/test/FakePollenSecurityContext.java | 16 ++--- .../services/test/FakePollenServiceContext.java | 6 +- .../pollen/services/AbstractPollenServiceTest.java | 29 +++++++++ .../services/service/PollenUserServiceTest.java | 15 ++++- pom.xml | 2 +- 16 files changed, 171 insertions(+), 80 deletions(-) diff --git a/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollenUserApiTest.java b/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollenUserApiTest.java index f215bfb..234e267 100644 --- a/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollenUserApiTest.java +++ b/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollenUserApiTest.java @@ -25,10 +25,15 @@ package org.chorem.pollen.rest.api; import org.apache.http.client.fluent.Request; import org.chorem.pollen.persistence.entity.PollenUser; +import org.chorem.pollen.rest.api.converter.JsonConverter; +import org.chorem.pollen.services.bean.CreateBeanRef; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; +import java.io.IOException; +import java.net.URISyntaxException; + import static org.junit.Assert.assertTrue; /** @@ -45,10 +50,28 @@ public class PollenUserApiTest extends AbstractPollenRestApiTest { loadFixtures("fixtures"); } + protected String login(String login, String password) throws URISyntaxException, IOException { + + Request loginRequest = createRequest("/v1/login") + .addParameter("login", login) + .addParameter("password", password) + .Post(); + + String loginContent = loginRequest.execute().returnContent().asString(); + JsonConverter<CreateBeanRef> jsonConverter = JsonConverter.newConverter(CreateBeanRef.class); + + CreateBeanRef createBeanRef = jsonConverter.convert(CreateBeanRef.class, loginContent); + return createBeanRef.getPermission(); + + } + @Test public void getUsers() throws Exception { + String sessionToken = login("admin", "admin"); + Request request = createRequest("/v1/users").Get(); + request.addHeader(PollenRestApiRequestFilter.REQUEST_HEADER_SESSION_TOKEN, sessionToken); String content = request.execute().returnContent().asString(); showTestResult(content); assertTrue(content.contains("email")); @@ -58,9 +81,12 @@ public class PollenUserApiTest extends AbstractPollenRestApiTest { @Test public void getUser() throws Exception { + String sessionToken = login("admin", "admin"); + PollenUser pollenUser = fixture("user_jean"); String userId = pollenUser.getTopiaId(); Request request = createRequest("/v1/users/" + userId).Get(); + request.addHeader(PollenRestApiRequestFilter.REQUEST_HEADER_SESSION_TOKEN, sessionToken); String content = request.execute().returnContent().asString(); showTestResult(content); assertTrue(content.contains("email")); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/CreateBeanRef.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/CreateBeanRef.java index eebd8f7..f34ec39 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/CreateBeanRef.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/CreateBeanRef.java @@ -26,56 +26,79 @@ public class CreateBeanRef implements Serializable { protected String permission; - public void fromEntity(Poll entity) { + public static CreateBeanRef of(Poll entity) { - setId(entity.getTopiaId()); - setPermission(entity.getCreator().getPermission().getToken()); + CreateBeanRef ref = new CreateBeanRef(entity.getTopiaId(), + entity.getCreator().getPermission().getToken()); + return ref; } - public void fromEntity(Choice entity) { + public static CreateBeanRef of(Choice entity) { - setId(entity.getTopiaId()); - setPermission(entity.getCreator().getPermission().getToken()); + CreateBeanRef ref = new CreateBeanRef(entity.getTopiaId(), + entity.getCreator().getPermission().getToken()); + return ref; } - public void fromEntity(Comment entity) { + public static CreateBeanRef of(Comment entity) { - setId(entity.getTopiaId()); - setPermission(entity.getAuthor().getPermission().getToken()); + CreateBeanRef ref = new CreateBeanRef(entity.getTopiaId(), + entity.getAuthor().getPermission().getToken()); + return ref; } - public void fromEntity(Vote entity) { + public static CreateBeanRef of(Vote entity) { - setId(entity.getTopiaId()); - setPermission(entity.getVoter().getPermission().getToken()); + CreateBeanRef ref = new CreateBeanRef(entity.getTopiaId(), + entity.getVoter().getPermission().getToken()); + return ref; } - public void fromEntity(VoterList entity) { + public static CreateBeanRef of(VoterList entity) { - setId(entity.getTopiaId()); -// setPermission(entity.getVoter().getPermission().getToken()); + CreateBeanRef ref = new CreateBeanRef(entity.getTopiaId(), null); + return ref; } - public void fromEntity(PollenUser result) { - setId(result.getTopiaId()); + public static CreateBeanRef of(PollenUser result) { + + CreateBeanRef ref = new CreateBeanRef(result.getTopiaId(), null); + return ref; + + } + + public static CreateBeanRef of(FavoriteList result) { + + CreateBeanRef ref = new CreateBeanRef(result.getTopiaId(), null); + return ref; + } - public void fromEntity(FavoriteList result) { - setId(result.getTopiaId()); + public static CreateBeanRef of(FavoriteListMember result) { + + CreateBeanRef ref = new CreateBeanRef(result.getTopiaId(), null); + return ref; + } - public void fromEntity(FavoriteListMember result) { - setId(result.getTopiaId()); + public static CreateBeanRef of(SessionToken result) { + + CreateBeanRef ref = new CreateBeanRef(result.getPollenUser().getTopiaId(), + result.getPollenToken().getToken()); + return ref; + } - public void fromEntity(SessionToken result) { - setId(result.getPollenUser().getTopiaId()); - setPermission(result.getPollenToken().getToken()); + protected CreateBeanRef(String id, String permission) { + + setId(id); + setPermission(permission); + } public String getId() { diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java index 1fa5876..2be031d 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java @@ -132,9 +132,7 @@ public class ChoiceService extends PollenServiceSupport { getNotificationService().onChoiceAdded(poll, result); - CreateBeanRef createBeanRef = new CreateBeanRef(); - createBeanRef.fromEntity(result); - + CreateBeanRef createBeanRef = CreateBeanRef.of(result); return createBeanRef; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java index 3f5c930..5add5c0 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java @@ -23,7 +23,6 @@ package org.chorem.pollen.services.service; * #L% */ -import com.google.common.collect.ImmutableList; import org.chorem.pollen.persistence.entity.Comment; import org.chorem.pollen.persistence.entity.Poll; import org.chorem.pollen.persistence.entity.PollenPrincipal; @@ -94,9 +93,7 @@ public class CommentService extends PollenServiceSupport { getNotificationService().onCommentAdded(poll, result); - CreateBeanRef createBeanRef = new CreateBeanRef(); - createBeanRef.fromEntity(result); - + CreateBeanRef createBeanRef = CreateBeanRef.of(result); return createBeanRef; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java index 66bd690..00a28fa 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java @@ -23,8 +23,6 @@ package org.chorem.pollen.services.service; * #L% */ -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; @@ -49,7 +47,6 @@ import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import java.io.BufferedReader; import java.io.File; -import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; @@ -110,8 +107,7 @@ public class FavoriteListService extends PollenServiceSupport { getNotificationService().onFavoriteListAdded(user, result); - CreateBeanRef createBeanRef = new CreateBeanRef(); - createBeanRef.fromEntity(result); + CreateBeanRef createBeanRef = CreateBeanRef.of(result); return createBeanRef; } @@ -206,8 +202,7 @@ public class FavoriteListService extends PollenServiceSupport { FavoriteListMember result = saveFavoriteListMember(favoriteList, member); commit(); - CreateBeanRef createBeanRef = new CreateBeanRef(); - createBeanRef.fromEntity(result); + CreateBeanRef createBeanRef = CreateBeanRef.of(result); return createBeanRef; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java index f0ea7a1..b0f74dd 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java @@ -161,8 +161,7 @@ public class PollService extends PollenServiceSupport { getNotificationService().onPollCreated(savedPoll); - CreateBeanRef createBeanRef = new CreateBeanRef(); - createBeanRef.fromEntity(savedPoll); + CreateBeanRef createBeanRef = CreateBeanRef.of(savedPoll); return createBeanRef; diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java index ae50d70..fcb1f55 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java @@ -46,20 +46,24 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer public List<PollenUserBean> getUsers() { -// checkIsConnected(); -// checkIsAdmin(); + checkIsConnected(); + checkIsAdmin(); List<PollenUser> pollenUsers = getPollenUserDao().findAll(); - return copyAsList(PollenUserBean.class, pollenUsers); + List<PollenUserBean> pollenUserBeans = copyAsList(PollenUserBean.class, pollenUsers); + return pollenUserBeans; } public PollenUserBean getUser(String userId) { + checkIsConnected(); checkNotNull(userId); - PollenUser result = getUser0(userId); - return copy(PollenUserBean.class, result); + PollenUser pollenUser = getUser0(userId); + PollenUserBean pollenUserBean = copy(PollenUserBean.class, pollenUser); + + return pollenUserBean; } @@ -80,8 +84,7 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer getNotificationService().onUserCreated(result, generatePassword); - CreateBeanRef createBeanRef = new CreateBeanRef(); - createBeanRef.fromEntity(result); + CreateBeanRef createBeanRef = CreateBeanRef.of(result); return createBeanRef; } @@ -98,7 +101,9 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer commit(); getNotificationService().onUserEdited(result); - return copy(PollenUserBean.class, result); + + PollenUserBean pollenUserBean = copy(PollenUserBean.class, result); + return pollenUserBean; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java index e9de3e1..d75da00 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java @@ -101,9 +101,7 @@ public class VoteService extends PollenServiceSupport { getNotificationService().onVoteAdded(poll, result); - CreateBeanRef createBeanRef = new CreateBeanRef(); - createBeanRef.fromEntity(result); - + CreateBeanRef createBeanRef = CreateBeanRef.of(result); return createBeanRef; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java index 17a8623..d34d307 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java @@ -89,7 +89,8 @@ public class VoterListService extends PollenServiceSupport { Poll poll = getPollService().getPoll0(pollId); List<VoterList> voterLists = getVoterListDao().forPollEquals(poll).findAll(); - return copyAsList(VoterListBean.class, voterLists); + List<VoterListBean> voterListBeans = copyAsList(VoterListBean.class, voterLists); + return voterListBeans; } @@ -98,8 +99,9 @@ public class VoterListService extends PollenServiceSupport { checkNotNull(pollId); checkNotNull(voterListId); - VoterList result = getVoterList0(pollId, voterListId); - return copy(VoterListBean.class, result); + VoterList voterList = getVoterList0(pollId, voterListId); + VoterListBean voterListBean = copy(VoterListBean.class, voterList); + return voterListBean; } @@ -122,8 +124,7 @@ public class VoterListService extends PollenServiceSupport { //TODO Notify - CreateBeanRef createBeanRef = new CreateBeanRef(); - createBeanRef.fromEntity(result); + CreateBeanRef createBeanRef = CreateBeanRef.of(result); return createBeanRef; } @@ -145,7 +146,8 @@ public class VoterListService extends PollenServiceSupport { commit(); //TODO Notify - return copy(VoterListBean.class, result); + VoterListBean voterListBean = copy(VoterListBean.class, result); + return voterListBean; } @@ -169,8 +171,9 @@ public class VoterListService extends PollenServiceSupport { VoterList voterList = getVoterList0(pollId, voterListId); - Set<VoterListMember> result = voterList.getMember(); - return copyAsSet(VoterListMemberBean.class, result); + Set<VoterListMember> members = voterList.getMember(); + Set<VoterListMemberBean> memberBeans = copyAsSet(VoterListMemberBean.class, members); + return memberBeans; } @@ -182,9 +185,9 @@ public class VoterListService extends PollenServiceSupport { VoterList voterList = getVoterList0(pollId, voterListId); - VoterListMember result = getVoterListMember(voterList, memberId); - - return copy(VoterListMemberBean.class, result); + VoterListMember member = getVoterListMember(voterList, memberId); + VoterListMemberBean memberBean = copy(VoterListMemberBean.class, member); + return memberBean; } @@ -205,7 +208,8 @@ public class VoterListService extends PollenServiceSupport { VoterListMember result = saveVoterListMember(voterList, member); commit(); - return copy(VoterListMemberBean.class, result); + VoterListMemberBean memberBean = copy(VoterListMemberBean.class, result); + return memberBean; } @@ -227,7 +231,8 @@ public class VoterListService extends PollenServiceSupport { VoterListMember result = saveVoterListMember(voterList, member); commit(); - return copy(VoterListMemberBean.class, result); + VoterListMemberBean memberBean = copy(VoterListMemberBean.class, result); + return memberBean; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SecurityService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SecurityService.java index 215eeab..d5c62cb 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SecurityService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SecurityService.java @@ -100,8 +100,7 @@ public class SecurityService extends PollenServiceSupport { SessionToken.PROPERTY_POLLEN_USER, user); commit(); - CreateBeanRef createBeanRef = new CreateBeanRef(); - createBeanRef.fromEntity(sessionToken); + CreateBeanRef createBeanRef = CreateBeanRef.of(sessionToken); return createBeanRef; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/test/FakePollenApplicationContext.java b/pollen-services/src/main/java/org/chorem/pollen/services/test/FakePollenApplicationContext.java index 79ca1e5..17f9fd4 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/test/FakePollenApplicationContext.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/test/FakePollenApplicationContext.java @@ -150,7 +150,11 @@ public class FakePollenApplicationContext extends TestWatcher implements PollenA log.trace("closing transaction " + openedTransaction); } - openedTransaction.closeContext(); + if (!openedTransaction.isClosed()) { + + openedTransaction.closeContext(); + + } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/test/FakePollenSecurityContext.java b/pollen-services/src/main/java/org/chorem/pollen/services/test/FakePollenSecurityContext.java index 216117b..fa25e59 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/test/FakePollenSecurityContext.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/test/FakePollenSecurityContext.java @@ -33,14 +33,14 @@ public class FakePollenSecurityContext extends DefaultPollenSecurityContext { private static final long serialVersionUID = 1L; - @Override - public boolean isConnected() { - return true; - } +// @Override +// public boolean isConnected() { +// return true; +// } - @Override - public boolean isAdmin() { - return false; - } +// @Override +// public boolean isAdmin() { +// return false; +// } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/test/FakePollenServiceContext.java b/pollen-services/src/main/java/org/chorem/pollen/services/test/FakePollenServiceContext.java index 2768674..f0609d2 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/test/FakePollenServiceContext.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/test/FakePollenServiceContext.java @@ -30,6 +30,7 @@ import org.chorem.pollen.persistence.PollenTopiaApplicationContext; import org.chorem.pollen.persistence.PollenTopiaPersistenceContext; import org.chorem.pollen.services.DefaultPollenServiceContext; import org.chorem.pollen.services.config.PollenServiceConfig; +import org.chorem.pollen.services.service.security.PollenSecurityContext; import java.util.Date; import java.util.Locale; @@ -70,5 +71,8 @@ public class FakePollenServiceContext extends DefaultPollenServiceContext { this.date = date; } - + @Override + public FakePollenSecurityContext getSecurityContext() { + return (FakePollenSecurityContext) super.getSecurityContext(); + } } diff --git a/pollen-services/src/test/java/org/chorem/pollen/services/AbstractPollenServiceTest.java b/pollen-services/src/test/java/org/chorem/pollen/services/AbstractPollenServiceTest.java index 0027668..11ff686 100644 --- a/pollen-services/src/test/java/org/chorem/pollen/services/AbstractPollenServiceTest.java +++ b/pollen-services/src/test/java/org/chorem/pollen/services/AbstractPollenServiceTest.java @@ -24,9 +24,15 @@ package org.chorem.pollen.services; */ import com.google.common.collect.Multimap; +import org.chorem.pollen.persistence.entity.SessionToken; +import org.chorem.pollen.services.bean.CreateBeanRef; import org.chorem.pollen.services.service.InvalidFormException; +import org.chorem.pollen.services.service.security.PollenAuthenticationException; +import org.chorem.pollen.services.service.security.PollenInvalidSessionTokenException; +import org.chorem.pollen.services.service.security.SecurityService; import org.chorem.pollen.services.test.FakePollenApplicationContext; import org.chorem.pollen.services.test.FakePollenServiceContext; +import org.junit.After; import org.junit.Assert; import org.junit.Rule; @@ -51,6 +57,11 @@ public abstract class AbstractPollenServiceTest { return application.fixture(id); } + @After + public void tearDown() { + logout(); + } + protected FakePollenServiceContext getServiceContext() { if (serviceContext == null) { @@ -75,4 +86,22 @@ public abstract class AbstractPollenServiceTest { } } + protected void login(String login, String password) throws PollenInvalidSessionTokenException, PollenAuthenticationException { + + SecurityService securityService = newService(SecurityService.class); + + CreateBeanRef loginRef = securityService.login(login, password, null); + + SessionToken sessionToken = securityService.getSessionTokenByToken(loginRef.getPermission()); + serviceContext.getSecurityContext().setSessionToken(sessionToken); + + } + + protected void logout() { + + SecurityService securityService = newService(SecurityService.class); + securityService.logout(); + + } + } diff --git a/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java b/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java index 3fafaaf..3449281 100644 --- a/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java +++ b/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java @@ -28,6 +28,8 @@ import org.chorem.pollen.persistence.entity.PollenUser; import org.chorem.pollen.services.AbstractPollenServiceTest; import org.chorem.pollen.services.bean.CreateBeanRef; import org.chorem.pollen.services.bean.PollenUserBean; +import org.chorem.pollen.services.service.security.PollenAuthenticationException; +import org.chorem.pollen.services.service.security.PollenInvalidSessionTokenException; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -62,16 +64,21 @@ public class PollenUserServiceTest extends AbstractPollenServiceTest { } @Test - public void testGetPollenUsers() { + public void testGetPollenUsers() throws PollenAuthenticationException, PollenInvalidSessionTokenException { + + login("jean", "fake"); List<PollenUserBean> users = service.getUsers(); Assert.assertNotNull(users); Assert.assertTrue(CollectionUtils.isNotEmpty(users)); + } @Test - public void testGetPollenUser() { + public void testGetPollenUser() throws PollenInvalidSessionTokenException, PollenAuthenticationException { + + login("jean", "fake"); try { service.getUser("pollen_user_tony_" + System.nanoTime()); @@ -136,7 +143,9 @@ public class PollenUserServiceTest extends AbstractPollenServiceTest { } @Test - public void testEditUser() throws InvalidFormException { + public void testEditUser() throws InvalidFormException, PollenInvalidSessionTokenException, PollenAuthenticationException { + + login("jean", "fake"); PollenUserBean user = service.getUser(this.user.getTopiaId()); diff --git a/pom.xml b/pom.xml index 1ab4552..25dc5d0 100644 --- a/pom.xml +++ b/pom.xml @@ -177,7 +177,7 @@ <slf4jVersion>1.7.7</slf4jVersion> <jettyVersion>9.0.3.v20130506</jettyVersion> <tomcatEmbedVersion>7.0.50</tomcatEmbedVersion> - <tomcatEmbedVersion>8.0.5</tomcatEmbedVersion> + <!--tomcatEmbedVersion>8.0.5</tomcatEmbedVersion--> <hibernateVersion>4.3.5.Final</hibernateVersion> <seleniumVersion>2.33.0</seleniumVersion> <mockitoVersion>1.9.5</mockitoVersion> -- To stop receiving notification emails like this one, please contact Chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
Chorem.org scm