diff --git a/bundle/src/main/java/com/adobe/acs/commons/redirectmaps/impl/AddEntryServlet.java b/bundle/src/main/java/com/adobe/acs/commons/redirectmaps/impl/AddEntryServlet.java index c845da4211..d4a1e4229a 100644 --- a/bundle/src/main/java/com/adobe/acs/commons/redirectmaps/impl/AddEntryServlet.java +++ b/bundle/src/main/java/com/adobe/acs/commons/redirectmaps/impl/AddEntryServlet.java @@ -22,12 +22,14 @@ import javax.servlet.ServletException; +import com.drew.lang.annotations.NotNull; import org.apache.commons.collections.CollectionUtils; import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.sling.SlingServlet; import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.api.resource.Resource; +import org.apache.sling.api.resource.ValueMap; import org.apache.sling.api.servlets.SlingAllMethodsServlet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -63,15 +65,21 @@ protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse Resource resource = request.getResourceResolver().getResource(ETC_ACS_COMMONS_LISTS_COUNTRIES_JCR_CONTENT_LIST); if (Objects.nonNull(resource)) { countries = new HashMap<>(); + @NotNull Iterable children = resource.getChildren(); - for (Resource childResource : children) { - String title = childResource.getValueMap().get("jcr:title", String.class); - String nodeValue = childResource.getValueMap().get("value", String.class); - countries.put(nodeValue, title); + if(children != null){ + for (Resource childResource : children) { + ValueMap valueMap = childResource.getValueMap(); + if (valueMap != null) { + String title = valueMap.get("jcr:title", String.class); + String nodeValue = valueMap.get("value", String.class); + countries.put(nodeValue, title); + } + } } } List lines = RedirectEntriesUtils.readEntries(request); - if(CollectionUtils.isNotEmpty(lines)){ + if(countries != null && !countries.isEmpty()){ for (Map.Entry country : countries.entrySet()) { String genericSource = country.getKey()+":" +source; String genericTarget= "/"+country.getKey()+"/"+country.getValue()+target; diff --git a/bundle/src/test/java/com/adobe/acs/commons/redirectmaps/impl/TestServlets.java b/bundle/src/test/java/com/adobe/acs/commons/redirectmaps/impl/TestServlets.java index 26da7a5a2f..30d42008b8 100644 --- a/bundle/src/test/java/com/adobe/acs/commons/redirectmaps/impl/TestServlets.java +++ b/bundle/src/test/java/com/adobe/acs/commons/redirectmaps/impl/TestServlets.java @@ -20,8 +20,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.*; import java.io.IOException; import java.io.InputStream; @@ -41,12 +40,14 @@ import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.api.resource.ModifiableValueMap; import org.apache.sling.api.resource.Resource; +import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.commons.testing.sling.MockResourceResolver; import org.apache.tika.io.IOUtils; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -76,6 +77,10 @@ public class TestServlets { @Mock private Resource mockMapContentResource; + @Mock + private ResourceResolver resourceResolver; + + private Map value = new HashMap<>(); private ModifiableValueMap mvm = new ModifiableValueMap() { @@ -292,7 +297,6 @@ public void testAddEntryServlet() throws ServletException, IOException { log.info("testAddEntryServlet"); AddEntryServlet servlet = new AddEntryServlet(); servlet.doPost(mockSlingRequest, mockSlingResponse); - log.info("REDIRECT MAP:\n" + value.get(JcrConstants.JCR_DATA)); assertTrue(value.get(JcrConstants.JCR_DATA).contains("/source /target")); log.info("Test successful!");