This is an automated email from the ASF dual-hosted git repository. shuber pushed a commit to branch unomi-1.5.x in repository https://gitbox.apache.org/repos/asf/unomi.git
commit deb906fad6b106200e75c69728394071fa3fc4dc Author: Serge Huber <[email protected]> AuthorDate: Mon Jul 27 09:53:27 2020 +0200 Porting ITest fixes --- .../test/java/org/apache/unomi/itests/BaseIT.java | 43 +++++++++++++++++----- .../org/apache/unomi/itests/ContextServletIT.java | 42 ++++++++++++++++----- .../apache/unomi/itests/ProfileImportActorsIT.java | 33 +++++++++++++---- .../unomi/itests/ProfileImportRankingIT.java | 22 ++++++++--- .../unomi/itests/ProfileImportSurfersIT.java | 33 +++++++++++------ .../java/org/apache/unomi/itests/TestUtils.java | 12 +++++- .../java/org/apache/unomi/web/ContextServlet.java | 6 ++- 7 files changed, 145 insertions(+), 46 deletions(-) diff --git a/itests/src/test/java/org/apache/unomi/itests/BaseIT.java b/itests/src/test/java/org/apache/unomi/itests/BaseIT.java index 6651562..f6c35e4 100644 --- a/itests/src/test/java/org/apache/unomi/itests/BaseIT.java +++ b/itests/src/test/java/org/apache/unomi/itests/BaseIT.java @@ -17,6 +17,10 @@ package org.apache.unomi.itests; +import org.apache.unomi.api.Item; +import org.apache.unomi.api.conditions.Condition; +import org.apache.unomi.api.services.DefinitionsService; +import org.apache.unomi.persistence.spi.PersistenceService; import org.junit.Assert; import org.ops4j.pax.exam.Configuration; import org.ops4j.pax.exam.CoreOptions; @@ -24,9 +28,10 @@ import org.ops4j.pax.exam.Option; import org.ops4j.pax.exam.karaf.container.internal.JavaVersionUtil; import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel; import org.ops4j.pax.exam.options.MavenArtifactUrlReference; -import org.ops4j.pax.exam.options.MavenUrlReference; import org.ops4j.pax.exam.options.extra.VMOption; +import org.ops4j.pax.exam.util.Filter; +import javax.inject.Inject; import java.io.File; import java.util.ArrayList; import java.util.Arrays; @@ -36,7 +41,12 @@ import java.util.function.Supplier; import static org.ops4j.pax.exam.CoreOptions.maven; import static org.ops4j.pax.exam.CoreOptions.systemProperty; -import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.*; +import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.debugConfiguration; +import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut; +import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.karafDistributionConfiguration; +import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder; +import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel; +import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.replaceConfigurationFile; /** * Base class for integration tests. @@ -50,6 +60,27 @@ public abstract class BaseIT { protected static final String KARAF_DIR = "target/exam"; protected static final String UNOMI_KEY = "670c26d1cc413346c3b2fd9ce65dab41"; + @Inject + @Filter(timeout = 600000) + protected PersistenceService persistenceService; + + @Inject + @Filter(timeout = 600000) + protected DefinitionsService definitionsService; + + protected void removeItems(final Class<? extends Item> ...classes) throws InterruptedException { + Condition condition = new Condition(definitionsService.getConditionType("matchAllCondition")); + for (Class<? extends Item> aClass : classes) { + persistenceService.removeByQuery(condition, aClass); + } + refreshPersistence(); + } + + protected void refreshPersistence() throws InterruptedException { + persistenceService.refresh(); + Thread.sleep(1000); + } + @Configuration public Option[] config() throws InterruptedException { @@ -59,13 +90,6 @@ public abstract class BaseIT { .type("tar.gz") .versionAsInProject(); - MavenUrlReference routerRepo = maven() - .groupId("org.apache.unomi") - .artifactId("unomi-router-karaf-feature") - .classifier("features") - .type("xml") - .versionAsInProject(); - List<Option> options = new ArrayList<>(); Option[] commonOptions = new Option[]{ @@ -109,7 +133,6 @@ public abstract class BaseIT { systemProperty("org.apache.unomi.hazelcast.tcp-ip.members").value("127.0.0.1"), systemProperty("org.apache.unomi.hazelcast.tcp-ip.interface").value("127.0.0.1"), systemProperty("unomi.autoStart").value("true"), - features(routerRepo, "unomi-router-karaf-feature"), CoreOptions.bundleStartLevel(100), CoreOptions.frameworkStartLevel(100) }; diff --git a/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java b/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java index 926627b..307a38e 100644 --- a/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java +++ b/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java @@ -21,7 +21,12 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; -import org.apache.unomi.api.*; +import org.apache.unomi.api.ContextRequest; +import org.apache.unomi.api.ContextResponse; +import org.apache.unomi.api.Event; +import org.apache.unomi.api.Metadata; +import org.apache.unomi.api.Profile; +import org.apache.unomi.api.Session; import org.apache.unomi.api.conditions.Condition; import org.apache.unomi.api.segments.Segment; import org.apache.unomi.api.services.DefinitionsService; @@ -87,6 +92,8 @@ public class ContextServletIT extends BaseIT { @Filter(timeout = 600000) protected SegmentService segmentService; + private Profile profile; + @Before public void setUp() throws InterruptedException { //Create a past-event segment @@ -100,7 +107,12 @@ public class ContextServletIT extends BaseIT { segmentCondition.setParameter("eventCondition",pastEventEventCondition); segment.setCondition(segmentCondition); segmentService.setSegmentDefinition(segment); - Thread.sleep(2000); + + String profileId = "test-profile-id"; + profile = new Profile(profileId); + profileService.save(profile); + + refreshPersistence(); } @After @@ -108,8 +120,8 @@ public class ContextServletIT extends BaseIT { TestUtils.removeAllEvents(definitionsService, persistenceService); TestUtils.removeAllSessions(definitionsService, persistenceService); TestUtils.removeAllProfiles(definitionsService, persistenceService); + profileService.delete(profile.getItemId(), false); segmentService.removeSegmentDefinition(SEGMENT_ID,false); - persistenceService.refresh(); } @Test @@ -126,6 +138,7 @@ public class ContextServletIT extends BaseIT { Event event = new Event(eventId, eventTypeOriginal, session, profile, scope, null, null, new Date()); profileService.save(profile); this.eventService.send(event); + refreshPersistence(); Thread.sleep(2000); event.setEventType(eventTypeUpdated); //change the event so we can see the update effect @@ -137,6 +150,7 @@ public class ContextServletIT extends BaseIT { request.addHeader(THIRD_PARTY_HEADER_NAME, UNOMI_KEY); request.setEntity(new StringEntity(objectMapper.writeValueAsString(contextRequest), ContentType.create("application/json"))); TestUtils.executeContextJSONRequest(request, sessionId); + refreshPersistence(); Thread.sleep(2000); //Making sure event is updated in DB //Assert @@ -159,6 +173,7 @@ public class ContextServletIT extends BaseIT { Event event = new Event(eventId, eventTypeOriginal, session, profile, scope, null, null, new Date()); profileService.save(profile); this.eventService.send(event); + refreshPersistence(); Thread.sleep(2000); event.setEventType(eventTypeUpdated); //change the event so we can see the update effect @@ -169,6 +184,7 @@ public class ContextServletIT extends BaseIT { HttpPost request = new HttpPost(URL + CONTEXT_URL); request.setEntity(new StringEntity(objectMapper.writeValueAsString(contextRequest), ContentType.create("application/json"))); TestUtils.executeContextJSONRequest(request, sessionId); + refreshPersistence(); Thread.sleep(2000); //Making sure event is updated in DB //Assert @@ -182,16 +198,14 @@ public class ContextServletIT extends BaseIT { public void testUpdateEventFromContextAuthorizedThirdPartyNoItemID_Fail() throws IOException, InterruptedException { //Arrange String eventId = "test-event-id3"; - String profileId = "test-profile-id"; String sessionId = "test-session-id"; String scope = "test-scope"; String eventTypeOriginal = "test-event-type-original"; String eventTypeUpdated = "test-event-type-updated"; - Profile profile = new Profile(profileId); Session session = new Session(sessionId, profile, new Date(), scope); Event event = new Event(eventId, eventTypeOriginal, session, profile, scope, null, null, new Date()); - profileService.save(profile); this.eventService.send(event); + refreshPersistence(); Thread.sleep(2000); event.setEventType(eventTypeUpdated); //change the event so we can see the update effect @@ -202,6 +216,7 @@ public class ContextServletIT extends BaseIT { HttpPost request = new HttpPost(URL + CONTEXT_URL); request.setEntity(new StringEntity(objectMapper.writeValueAsString(contextRequest), ContentType.create("application/json"))); TestUtils.executeContextJSONRequest(request, sessionId); + refreshPersistence(); Thread.sleep(2000); //Making sure event is updated in DB //Assert @@ -211,7 +226,7 @@ public class ContextServletIT extends BaseIT { } @Test - public void testCreateEventsWithNoTimestampParam_profileAddedToSegment() throws IOException { + public void testCreateEventsWithNoTimestampParam_profileAddedToSegment() throws IOException, InterruptedException { //Arrange String sessionId = "test-session-id"; String scope = "test-scope"; @@ -227,17 +242,22 @@ public class ContextServletIT extends BaseIT { HttpPost request = new HttpPost(URL + CONTEXT_URL); request.setEntity(new StringEntity(objectMapper.writeValueAsString(contextRequest), ContentType.create("application/json"))); String cookieHeaderValue = TestUtils.executeContextJSONRequest(request, sessionId).getCookieHeaderValue(); + refreshPersistence(); + Thread.sleep(1000); //Making sure DB is updated + //Add the context-profile-id cookie to the second event request.addHeader("Cookie", cookieHeaderValue); ContextResponse response = (TestUtils.executeContextJSONRequest(request, sessionId)).getContextResponse(); //second event + refreshPersistence(); + //Assert assertEquals(1, response.getProfileSegments().size()); assertThat(response.getProfileSegments(),hasItem(SEGMENT_ID)); } @Test - public void testCreateEventWithTimestampParam_pastEvent_profileIsNotAddedToSegment() throws IOException { + public void testCreateEventWithTimestampParam_pastEvent_profileIsNotAddedToSegment() throws IOException, InterruptedException { //Arrange String sessionId = "test-session-id"; String scope = "test-scope"; @@ -257,17 +277,19 @@ public class ContextServletIT extends BaseIT { request.setEntity(new StringEntity(objectMapper.writeValueAsString(contextRequest), ContentType.create("application/json"))); //The first event is with a default timestamp (now) String cookieHeaderValue = TestUtils.executeContextJSONRequest(request, sessionId).getCookieHeaderValue(); + refreshPersistence(); //The second event is with a customized timestamp request.setURI(URI.create(customTimestampURI)); request.addHeader("Cookie", cookieHeaderValue); ContextResponse response = (TestUtils.executeContextJSONRequest(request, sessionId)).getContextResponse(); //second event + refreshPersistence(); //Assert assertEquals(0,response.getProfileSegments().size()); } @Test - public void testCreateEventWithTimestampParam_futureEvent_profileIsNotAddedToSegment() throws IOException { + public void testCreateEventWithTimestampParam_futureEvent_profileIsNotAddedToSegment() throws IOException, InterruptedException { //Arrange String sessionId = "test-session-id"; String scope = "test-scope"; @@ -287,10 +309,12 @@ public class ContextServletIT extends BaseIT { request.setEntity(new StringEntity(objectMapper.writeValueAsString(contextRequest), ContentType.create("application/json"))); //The first event is with a default timestamp (now) String cookieHeaderValue = TestUtils.executeContextJSONRequest(request, sessionId).getCookieHeaderValue(); + refreshPersistence(); //The second event is with a customized timestamp request.setURI(URI.create(customTimestampURI)); request.addHeader("Cookie", cookieHeaderValue); ContextResponse response = (TestUtils.executeContextJSONRequest(request, sessionId)).getContextResponse(); //second event + refreshPersistence(); //Assert assertEquals(0,response.getProfileSegments().size()); diff --git a/itests/src/test/java/org/apache/unomi/itests/ProfileImportActorsIT.java b/itests/src/test/java/org/apache/unomi/itests/ProfileImportActorsIT.java index 677ccbc..0d31b7f 100644 --- a/itests/src/test/java/org/apache/unomi/itests/ProfileImportActorsIT.java +++ b/itests/src/test/java/org/apache/unomi/itests/ProfileImportActorsIT.java @@ -34,7 +34,12 @@ import org.ops4j.pax.exam.util.Filter; import javax.inject.Inject; import java.io.File; -import java.util.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; /** * Created by amidani on 14/08/2017. @@ -43,9 +48,11 @@ import java.util.*; @ExamReactorStrategy(PerSuite.class) public class ProfileImportActorsIT extends BaseIT { - @Inject @Filter(value="(configDiscriminator=IMPORT)", timeout = 600000) + @Inject + @Filter(value = "(configDiscriminator=IMPORT)", timeout = 600000) protected ImportExportConfigurationService<ImportConfiguration> importConfigurationService; - @Inject @Filter(timeout = 600000) + @Inject + @Filter(timeout = 600000) protected ProfileService profileService; @Test @@ -66,11 +73,17 @@ public class ProfileImportActorsIT extends BaseIT { profileService.setPropertyType(propertyTypeTwitterId); profileService.setPropertyType(propertyTypeActorsGenres); - PropertyType propTwitterId = profileService.getPropertyType("twitterId"); - Assert.assertNotNull(propTwitterId); + PropertyType propTwitterId = keepTrying("Failed waiting for property type 'twitterId'", + () -> profileService.getPropertyType("twitterId"), + Objects::nonNull, + 1000, + 100); - PropertyType propActorsGenre = profileService.getPropertyType("movieGenres"); - Assert.assertNotNull(propActorsGenre); + PropertyType propActorsGenre = keepTrying("Failed waiting for property type 'movieGenres'", + () -> profileService.getPropertyType("movieGenres"), + Objects::nonNull, + 1000, + 100); /*** Actors Test ***/ @@ -101,7 +114,11 @@ public class ProfileImportActorsIT extends BaseIT { importConfigurationService.save(importConfigActors, true); //Wait for data to be processed - keepTrying("Failed waiting for actors initial import to complete", ()-> profileService.findProfilesByPropertyValue("properties.city", "hollywood", 0, 10, null), (p)->p.getTotalSize() == 6, 1000, 200); + keepTrying("Failed waiting for actors initial import to complete", + () -> profileService.findProfilesByPropertyValue("properties.city", "hollywood", 0, 10, null), + (p) -> p.getTotalSize() == 6, + 1000, + 200); List<ImportConfiguration> importConfigurations = importConfigurationService.getAll(); Assert.assertEquals(1, importConfigurations.size()); diff --git a/itests/src/test/java/org/apache/unomi/itests/ProfileImportRankingIT.java b/itests/src/test/java/org/apache/unomi/itests/ProfileImportRankingIT.java index 9694598..9159426 100644 --- a/itests/src/test/java/org/apache/unomi/itests/ProfileImportRankingIT.java +++ b/itests/src/test/java/org/apache/unomi/itests/ProfileImportRankingIT.java @@ -38,6 +38,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; /** * Created by amidani on 09/08/2017. @@ -71,11 +72,17 @@ public class ProfileImportRankingIT extends BaseIT { profileService.setPropertyType(propertyTypeRank); - PropertyType propUciId = profileService.getPropertyType("uciId"); - Assert.assertNotNull(propUciId); + PropertyType propUciId = keepTrying("Failed waiting for property type 'uciId'", + () -> profileService.getPropertyType("uciId"), + Objects::nonNull, + 1000, + 100); - PropertyType propRankId = profileService.getPropertyType("rank"); - Assert.assertNotNull(propRankId); + PropertyType propRankId = keepTrying("Failed waiting for property type 'rank'", + () -> profileService.getPropertyType("rank"), + Objects::nonNull, + 1000, + 100); /*** Surfers Test ***/ @@ -108,8 +115,11 @@ public class ProfileImportRankingIT extends BaseIT { //Wait for data to be processed keepTrying("Failed waiting for ranking import to complete", ()->profileService.findProfilesByPropertyValue("properties.city", "rankingCity", 0, 50, null), (p)->p.getTotalSize() == 25, 1000, 200); - List<ImportConfiguration> importConfigurations = importConfigurationService.getAll(); - Assert.assertEquals(1, importConfigurations.size()); + List<ImportConfiguration> importConfigurations = keepTrying("Failed waiting for import configurations list with 1 item", + () -> importConfigurationService.getAll(), + (list) -> Objects.nonNull(list) && list.size() == 1, + 1000, + 100); PartialList<Profile> gregProfileList = profileService.findProfilesByPropertyValue("properties.uciId", "10004451371", 0, 10, null); Assert.assertEquals(1, gregProfileList.getList().size()); diff --git a/itests/src/test/java/org/apache/unomi/itests/ProfileImportSurfersIT.java b/itests/src/test/java/org/apache/unomi/itests/ProfileImportSurfersIT.java index e4bbf69..01ea0fe 100644 --- a/itests/src/test/java/org/apache/unomi/itests/ProfileImportSurfersIT.java +++ b/itests/src/test/java/org/apache/unomi/itests/ProfileImportSurfersIT.java @@ -40,8 +40,8 @@ import java.io.File; import java.io.IOException; import java.util.Collections; import java.util.HashMap; -import java.util.List; import java.util.Map; +import java.util.Objects; /** * Created by amidani on 09/08/2017. @@ -67,11 +67,13 @@ public class ProfileImportSurfersIT extends BaseIT { profileService.setPropertyType(propertyType); - PropertyType propAlive = profileService.getPropertyType("alive"); + keepTrying("Failed waiting for property type 'alive'", + () -> profileService.getPropertyType("alive"), + Objects::nonNull, + 1000, + 100); - Assert.assertNotNull("Alive property should not be null", propAlive); - - propAlive = RouterUtils.getPropertyTypeById(profileService.getTargetPropertyTypes("profiles"), "alive"); + PropertyType propAlive = RouterUtils.getPropertyTypeById(profileService.getTargetPropertyTypes("profiles"), "alive"); Assert.assertNotNull("Lookup of alive property through profiles target has failed !", propAlive); @@ -107,8 +109,11 @@ public class ProfileImportSurfersIT extends BaseIT { //Wait for data to be processed keepTrying("Failed waiting for surfers initial import to complete", ()->profileService.findProfilesByPropertyValue("properties.city", "surfersCity", 0, 50, null), (p)->p.getTotalSize() == 34, 1000, 100); - List<ImportConfiguration> importConfigurations = importConfigurationService.getAll(); - Assert.assertEquals(1, importConfigurations.size()); + keepTrying("Failed waiting for import configurations list with 1 item", + () -> importConfigurationService.getAll(), + (list) -> Objects.nonNull(list) && list.size() == 1, + 1000, + 100); //Profile not to delete PartialList<Profile> jordyProfile = profileService.findProfilesByPropertyValue("properties.email", "[email protected]", 0, 10, null); @@ -152,8 +157,11 @@ public class ProfileImportSurfersIT extends BaseIT { //Wait for data to be processed keepTrying("Failed waiting for surfers overwrite import to complete", ()->profileService.findProfilesByPropertyValue("properties.city", "surfersCity", 0, 50, null), (p)->p.getTotalSize() == 36, 1000, 100); - importConfigurations = importConfigurationService.getAll(); - Assert.assertEquals(1, importConfigurations.size()); + keepTrying("Failed waiting for import configurations list with 1 item", + () -> importConfigurationService.getAll(), + (list) -> Objects.nonNull(list) && list.size() == 1, + 1000, + 100); //Profile not to delete PartialList<Profile> aliveProfiles = profileService.findProfilesByPropertyValue("properties.alive", "true", 0, 50, null); @@ -191,8 +199,11 @@ public class ProfileImportSurfersIT extends BaseIT { //Wait for data to be processed keepTrying("Failed waiting for surfers delete import to complete", ()->profileService.findProfilesByPropertyValue("properties.city", "surfersCity", 0, 50, null), (p)->p.getTotalSize() == 0, 1000, 100); - importConfigurations = importConfigurationService.getAll(); - Assert.assertEquals(1, importConfigurations.size()); + keepTrying("Failed waiting for import configurations list with 1 item", + () -> importConfigurationService.getAll(), + (list) -> Objects.nonNull(list) && list.size() == 1, + 1000, + 100); PartialList<Profile> jordyProfileDelete = profileService.findProfilesByPropertyValue("properties.email", "[email protected]", 0, 10, null); Assert.assertEquals(0, jordyProfileDelete.getList().size()); diff --git a/itests/src/test/java/org/apache/unomi/itests/TestUtils.java b/itests/src/test/java/org/apache/unomi/itests/TestUtils.java index eae0252..6f45456 100644 --- a/itests/src/test/java/org/apache/unomi/itests/TestUtils.java +++ b/itests/src/test/java/org/apache/unomi/itests/TestUtils.java @@ -18,6 +18,7 @@ package org.apache.unomi.itests; import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; @@ -33,11 +34,14 @@ import org.apache.unomi.api.services.DefinitionsService; import org.apache.unomi.persistence.spi.CustomObjectMapper; import org.apache.unomi.persistence.spi.PersistenceService; import org.junit.Assert; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; public class TestUtils { private static final String JSON_MYME_TYPE = "application/json"; + private final static Logger LOGGER = LoggerFactory.getLogger(TestUtils.class); public static <T> T retrieveResourceFromResponse(HttpResponse response, Class<T> clazz) throws IOException { if (response == null) { @@ -53,6 +57,7 @@ public class TestUtils { T value = mapper.readValue(jsonFromResponse, clazz); return value; } catch (Throwable t) { + LOGGER.error("Error parsing response JSON", t); t.printStackTrace(); } return null; @@ -61,7 +66,12 @@ public class TestUtils { public static RequestResponse executeContextJSONRequest(HttpPost request, String sessionId) throws IOException { try (CloseableHttpResponse response = HttpClientBuilder.create().build().execute(request)) { // validate mimeType - String mimeType = ContentType.getOrDefault(response.getEntity()).getMimeType(); + HttpEntity entity = response.getEntity(); + String mimeType = ContentType.getOrDefault(entity).getMimeType(); + if (!JSON_MYME_TYPE.equals(mimeType)) { + String entityContent = EntityUtils.toString(entity); + LOGGER.warn("Invalid response: " + entityContent); + } Assert.assertEquals("Response content type should be " + JSON_MYME_TYPE, JSON_MYME_TYPE, mimeType); // validate context diff --git a/wab/src/main/java/org/apache/unomi/web/ContextServlet.java b/wab/src/main/java/org/apache/unomi/web/ContextServlet.java index 693c23e..3604162 100644 --- a/wab/src/main/java/org/apache/unomi/web/ContextServlet.java +++ b/wab/src/main/java/org/apache/unomi/web/ContextServlet.java @@ -179,7 +179,11 @@ public class ContextServlet extends HttpServlet { // We must reload the profile with the session ID as some properties could be missing from the session profile // #personalIdentifier profile = profileService.load(sessionProfile.getItemId()); - HttpUtils.sendProfileCookie(profile, response, profileIdCookieName, profileIdCookieDomain, profileIdCookieMaxAgeInSeconds); + if (profile != null) { + HttpUtils.sendProfileCookie(profile, response, profileIdCookieName, profileIdCookieDomain, profileIdCookieMaxAgeInSeconds); + } else { + logger.warn("Couldn't load profile {} referenced in session {}", sessionProfile.getItemId(), session.getItemId()); + } } // Handle anonymous situation
