X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Facr%2FCmsContentSession.java;h=daefe9835e371c4210bf6487ce108ac04700e05d;hb=5724ab347ddfba8f2b21cdcc2fa0b8e1e2b4e527;hp=8d475fd204853737eae48b94629c04fcdf858ea2;hpb=54098df1bc3ba263dd1e3290aafa880d54d96805;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/acr/CmsContentSession.java b/org.argeo.cms/src/org/argeo/cms/acr/CmsContentSession.java index 8d475fd20..daefe9835 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/CmsContentSession.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/CmsContentSession.java @@ -26,10 +26,11 @@ import org.argeo.api.acr.spi.ProvidedContent; import org.argeo.api.acr.spi.ProvidedRepository; import org.argeo.api.acr.spi.ProvidedSession; import org.argeo.api.uuid.UuidFactory; +import org.argeo.api.uuid.UuidIdentified; import org.argeo.cms.CurrentUser; /** Implements {@link ProvidedSession}. */ -class CmsContentSession implements ProvidedSession { +class CmsContentSession implements ProvidedSession, UuidIdentified { final private AbstractContentRepository contentRepository; private final UUID uuid; @@ -69,32 +70,25 @@ class CmsContentSession implements ProvidedSession { @Override public Content get(String path) { - if (!path.startsWith(ContentUtils.ROOT_SLASH)) + if (!path.startsWith(Content.ROOT_PATH)) throw new IllegalArgumentException(path + " is not an absolute path"); ContentProvider contentProvider = contentRepository.getMountManager().findContentProvider(path); String mountPath = contentProvider.getMountPath(); - String relativePath = extractRelativePath(mountPath, path); + String relativePath = ContentUtils.relativize(mountPath, path); ProvidedContent content = contentProvider.get(CmsContentSession.this, relativePath); return content; } @Override public boolean exists(String path) { - if (!path.startsWith(ContentUtils.ROOT_SLASH)) + if (!path.startsWith(Content.ROOT_PATH)) throw new IllegalArgumentException(path + " is not an absolute path"); ContentProvider contentProvider = contentRepository.getMountManager().findContentProvider(path); String mountPath = contentProvider.getMountPath(); - String relativePath = extractRelativePath(mountPath, path); + String relativePath = ContentUtils.relativize(mountPath, path); return contentProvider.exists(this, relativePath); } - private String extractRelativePath(String mountPath, String path) { - String relativePath = path.substring(mountPath.length()); - if (relativePath.length() > 0 && relativePath.charAt(0) == '/') - relativePath = relativePath.substring(1); - return relativePath; - } - @Override public Subject getSubject() { return subject; @@ -161,7 +155,7 @@ class CmsContentSession implements ProvidedSession { } @Override - public UUID getUuid() { + public UUID uuid() { return uuid; } @@ -180,11 +174,18 @@ class CmsContentSession implements ProvidedSession { return sessionRunDir; } + /* + * OBJECT METHODS + */ + @Override public boolean equals(Object o) { - if (o instanceof CmsContentSession session) - return uuid.equals(session.uuid); - return false; + return UuidIdentified.equals(this, o); + } + + @Override + public int hashCode() { + return UuidIdentified.hashCode(this); } @Override