You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by di...@apache.org on 2021/06/11 12:35:04 UTC
[sling-whiteboard] 03/05: add the sitemap name to the info returned
by the SitemapService
This is an automated email from the ASF dual-hosted git repository.
diru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
commit 44ae8dc9076de00ae4644919e9911f0d66316e1d
Author: Dirk Rudolph <di...@apache.org>
AuthorDate: Thu Jun 10 10:01:01 2021 +0200
add the sitemap name to the info returned by the SitemapService
---
.../java/org/apache/sling/sitemap/SitemapInfo.java | 11 ++++++++++
.../sling/sitemap/impl/SitemapServiceImpl.java | 25 ++++++++++++++++------
.../apache/sling/sitemap/impl/SitemapStorage.java | 3 +++
.../sling/sitemap/impl/SitemapStorageInfo.java | 16 ++++++++++----
4 files changed, 44 insertions(+), 11 deletions(-)
diff --git a/sitemap/src/main/java/org/apache/sling/sitemap/SitemapInfo.java b/sitemap/src/main/java/org/apache/sling/sitemap/SitemapInfo.java
index 6579b23..da1afb9 100644
--- a/sitemap/src/main/java/org/apache/sling/sitemap/SitemapInfo.java
+++ b/sitemap/src/main/java/org/apache/sling/sitemap/SitemapInfo.java
@@ -28,6 +28,8 @@ import org.osgi.annotation.versioning.ProviderType;
@ProviderType
public interface SitemapInfo {
+ String SITEMAP_INDEX_NAME = "<sitemap-index>";
+
/**
* Returns a resource path to the node the sitemap is stored. May return null if the sitemap or sitemap-index is
* served on-demand.
@@ -46,6 +48,15 @@ public interface SitemapInfo {
String getUrl();
/**
+ * Returns the name of the sitemap. This returns null when the sitemap has the default name or it is a sitemap
+ * index.
+ *
+ * @return
+ */
+ @Nullable
+ String getName();
+
+ /**
* Returns the size of the sitemap in bytes. -1 for sitemap-index or sitemaps served on-demand.
*
* @return
diff --git a/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapServiceImpl.java b/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapServiceImpl.java
index f5c8935..1641b8b 100644
--- a/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapServiceImpl.java
+++ b/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapServiceImpl.java
@@ -178,7 +178,8 @@ public class SitemapServiceImpl implements SitemapService {
} else {
location += storageInfo.getSitemapSelector() + '.' + SitemapServlet.SITEMAP_EXTENSION;
}
- infos.add(newSitemapInfo(storageInfo.getPath(), location, storageInfo.getSize(), storageInfo.getEntries()));
+ infos.add(newSitemapInfo(storageInfo.getPath(), location, storageInfo.getName(), storageInfo.getSize(),
+ storageInfo.getEntries()));
}
return infos;
@@ -244,7 +245,7 @@ public class SitemapServiceImpl implements SitemapService {
String selector = getSitemapSelector(sitemapRoot, topLevelSitemapRoot, name);
String location = topLevelSitemapRootUrl + selector + '.' + SitemapServlet.SITEMAP_EXTENSION;
if (onDemandNames.contains(name)) {
- infos.add(newSitemapInfo(null, location, -1, -1));
+ infos.add(newSitemapInfo(null, location, name, -1, -1));
} else {
if (storageInfos == null) {
storageInfos = storage.getSitemaps(sitemapRoot, names);
@@ -254,7 +255,7 @@ public class SitemapServiceImpl implements SitemapService {
.findFirst();
if (storageInfoOpt.isPresent()) {
SitemapStorageInfo storageInfo = storageInfoOpt.get();
- infos.add(newSitemapInfo(storageInfo.getPath(), location, storageInfo.getSize(), storageInfo.getEntries()));
+ infos.add(newSitemapInfo(storageInfo.getPath(), location, name, storageInfo.getSize(), storageInfo.getEntries()));
}
}
}
@@ -267,25 +268,29 @@ public class SitemapServiceImpl implements SitemapService {
}
private SitemapInfo newSitemapIndexInfo(@NotNull String url) {
- return new SitemapInfoImpl(null, url, -1, -1, true, true);
+ return new SitemapInfoImpl(null, url, null, -1, -1, true, true);
}
- private SitemapInfo newSitemapInfo(@Nullable String path, @NotNull String url, int size, int entries) {
- return new SitemapInfoImpl(path, url, size, entries, false, isWithinLimits(size, entries));
+ private SitemapInfo newSitemapInfo(@Nullable String path, @NotNull String url, @Nullable String name, int size,
+ int entries) {
+ return new SitemapInfoImpl(path, url, name, size, entries, false, isWithinLimits(size, entries));
}
private static class SitemapInfoImpl implements SitemapInfo {
private final String url;
private final String path;
+ private final String name;
private final int size;
private final int entries;
private final boolean isIndex;
private final boolean withinLimits;
- private SitemapInfoImpl(@Nullable String path, @NotNull String url, int size, int entries, boolean isIndex, boolean withinLimits) {
+ private SitemapInfoImpl(@Nullable String path, @NotNull String url, @Nullable String name, int size,
+ int entries, boolean isIndex, boolean withinLimits) {
this.path = path;
this.url = url;
+ this.name = name;
this.size = size;
this.entries = entries;
this.isIndex = isIndex;
@@ -305,6 +310,12 @@ public class SitemapServiceImpl implements SitemapService {
}
@Override
+ @Nullable
+ public String getName() {
+ return name;
+ }
+
+ @Override
public int getSize() {
return size;
}
diff --git a/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapStorage.java b/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapStorage.java
index 2b283e3..f368de5 100644
--- a/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapStorage.java
+++ b/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapStorage.java
@@ -80,6 +80,7 @@ public class SitemapStorage implements Runnable {
static final String PN_SITEMAP_ENTRIES = "entries";
static final String PN_SITEMAP_SIZE = "size";
+ static final String PN_SITEMAP_NAME = "name";
private static final Logger LOG = LoggerFactory.getLogger(SitemapStorage.class);
private static final Map<String, Object> AUTH = Collections.singletonMap(ResourceResolverFactory.SUBSERVICE,
@@ -211,6 +212,7 @@ public class SitemapStorage implements Runnable {
properties.put(JcrConstants.JCR_PRIMARYTYPE, JcrConstants.NT_UNSTRUCTURED);
properties.put(JcrConstants.JCR_LASTMODIFIED, Calendar.getInstance());
properties.put(JcrConstants.JCR_DATA, data);
+ properties.put(PN_SITEMAP_NAME, name);
properties.put(PN_SITEMAP_ENTRIES, entries);
properties.put(PN_SITEMAP_SIZE, size);
properties.put(PN_RESOURCE_TYPE, RT_SITEMAP_FILE);
@@ -280,6 +282,7 @@ public class SitemapStorage implements Runnable {
.map(child -> new SitemapStorageInfo(
child.getPath(),
child.getName().substring(0, child.getName().lastIndexOf('.')),
+ child.getValueMap().get(PN_SITEMAP_NAME, String.class),
child.getValueMap().get(JcrConstants.JCR_LASTMODIFIED, Calendar.class),
child.getValueMap().get(PN_SITEMAP_SIZE, 0),
child.getValueMap().get(PN_SITEMAP_ENTRIES, 0)))
diff --git a/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapStorageInfo.java b/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapStorageInfo.java
index 312fe9e..2b284f8 100644
--- a/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapStorageInfo.java
+++ b/sitemap/src/main/java/org/apache/sling/sitemap/impl/SitemapStorageInfo.java
@@ -26,28 +26,36 @@ import java.util.Calendar;
class SitemapStorageInfo {
private final String sitemapSelector;
+ private final String name;
private final String path;
private final Calendar lastModified;
private final int size;
private final int entries;
- SitemapStorageInfo(@NotNull String path, @NotNull String sitemapSelector, @Nullable Calendar lastModified, int size,
+ SitemapStorageInfo(@NotNull String path, @NotNull String sitemapSelector, @NotNull String name,
+ @Nullable Calendar lastModified, int size,
int entries) {
- this.sitemapSelector = sitemapSelector;
this.path = path;
+ this.sitemapSelector = sitemapSelector;
+ this.name = name;
this.lastModified = lastModified;
this.size = size;
this.entries = entries;
}
@NotNull
+ public String getPath() {
+ return path;
+ }
+
+ @NotNull
public String getSitemapSelector() {
return sitemapSelector;
}
@NotNull
- public String getPath() {
- return path;
+ public String getName() {
+ return name;
}
@Nullable