diff --git a/config/alfresco/cmis-api-context.xml b/config/alfresco/cmis-api-context.xml
index 64bcb1eb00..bcf5259296 100644
--- a/config/alfresco/cmis-api-context.xml
+++ b/config/alfresco/cmis-api-context.xml
@@ -89,14 +89,14 @@
alf:icon16
image/gif
- ICON16
+ alf:icon16
16
16
alf:icon32
image/gif
- ICON32
+ alf:icon32
32
32
diff --git a/source/java/org/alfresco/cmis/CMISRendition.java b/source/java/org/alfresco/cmis/CMISRendition.java
index 4f787e787b..f1565a0f08 100644
--- a/source/java/org/alfresco/cmis/CMISRendition.java
+++ b/source/java/org/alfresco/cmis/CMISRendition.java
@@ -48,7 +48,7 @@ public interface CMISRendition
* Get rendition kind.
* @return
*/
- public CMISRenditionKind getKind();
+ public String getKind();
/**
* Get the height of image. Typically used for ‘image’ renditions (expressed as pixels).
diff --git a/source/java/org/alfresco/cmis/CMISRenditionKind.java b/source/java/org/alfresco/cmis/CMISRenditionKind.java
deleted file mode 100644
index 2cd9d2b3fa..0000000000
--- a/source/java/org/alfresco/cmis/CMISRenditionKind.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2005-2010 Alfresco Software Limited.
- *
- * This file is part of Alfresco
- *
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- */
-package org.alfresco.cmis;
-
-
-/**
- * Enumeration of the CMIS Rendition Kinds
- *
- * @author Stas Sokolovsky
- */
-public enum CMISRenditionKind implements EnumLabel
-{
- THUMBNAIL("cmis:thumbnail"),
- WEB_PREVIEW("alf:webpreview"),
- ICON16("alf:icon16"),
- ICON32("alf:icon32");
-
- private String label;
-
- /**
- * Construct
- *
- * @param label
- */
- CMISRenditionKind(String label)
- {
- this.label = label;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.alfresco.cmis.EnumLabel#label()
- */
- public String getLabel()
- {
- return label;
- }
-
- public static EnumFactory FACTORY = new EnumFactory(CMISRenditionKind.class);
-
- public static CMISRenditionKind valueOfLabel(String label)
- {
- for(CMISRenditionKind kind: CMISRenditionKind.values())
- {
- if(kind.getLabel().equals(label))
- {
- return kind;
- }
- }
- return null;
- }
-}
diff --git a/source/java/org/alfresco/cmis/renditions/CMISRenditionImpl.java b/source/java/org/alfresco/cmis/renditions/CMISRenditionImpl.java
index 6122eaa9b3..96eac8bebd 100644
--- a/source/java/org/alfresco/cmis/renditions/CMISRenditionImpl.java
+++ b/source/java/org/alfresco/cmis/renditions/CMISRenditionImpl.java
@@ -19,7 +19,6 @@
package org.alfresco.cmis.renditions;
import org.alfresco.cmis.CMISRendition;
-import org.alfresco.cmis.CMISRenditionKind;
import org.alfresco.service.cmr.repository.NodeRef;
/**
@@ -32,7 +31,7 @@ public class CMISRenditionImpl implements CMISRendition
private NodeRef nodeRef;
private String streamId;
private String mimeType;
- private CMISRenditionKind kind;
+ private String kind;
private Integer height;
private Integer width;
private String title;
@@ -52,7 +51,7 @@ public class CMISRenditionImpl implements CMISRendition
* @param length the length of the rendition stream in bytes
* @param renditionDocumentId the rendition document id
*/
- public CMISRenditionImpl(NodeRef nodeRef, String streamId, String mimeType, CMISRenditionKind kind, Integer height, Integer width, String title, Integer length, String renditionDocumentId)
+ public CMISRenditionImpl(NodeRef nodeRef, String streamId, String mimeType, String kind, Integer height, Integer width, String title, Integer length, String renditionDocumentId)
{
super();
this.nodeRef = nodeRef;
@@ -113,7 +112,7 @@ public class CMISRenditionImpl implements CMISRendition
/**
* @see org.alfresco.cmis.CMISRendition#getKind()
*/
- public CMISRenditionKind getKind()
+ public String getKind()
{
return kind;
}
@@ -123,7 +122,7 @@ public class CMISRenditionImpl implements CMISRendition
*
* @param kind rendition kind
*/
- public void setKind(CMISRenditionKind kind)
+ public void setKind(String kind)
{
this.kind = kind;
}
diff --git a/source/java/org/alfresco/cmis/renditions/CMISRenditionServiceImpl.java b/source/java/org/alfresco/cmis/renditions/CMISRenditionServiceImpl.java
index 59894c061b..83a2922b95 100644
--- a/source/java/org/alfresco/cmis/renditions/CMISRenditionServiceImpl.java
+++ b/source/java/org/alfresco/cmis/renditions/CMISRenditionServiceImpl.java
@@ -29,7 +29,6 @@ import java.util.Map.Entry;
import org.alfresco.cmis.CMISFilterNotValidException;
import org.alfresco.cmis.CMISRendition;
-import org.alfresco.cmis.CMISRenditionKind;
import org.alfresco.cmis.CMISRenditionService;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
@@ -65,7 +64,7 @@ public class CMISRenditionServiceImpl implements CMISRenditionService
/** Kind to thumbnail mapping */
private Map> kindToThumbnailNames = new HashMap>();
- private Map thumbnailNamesToKind = new HashMap();
+ private Map thumbnailNamesToKind = new HashMap();
/** Custom renditions */
private CustomRenditionsCache customRenditionsCache;
@@ -200,17 +199,9 @@ public class CMISRenditionServiceImpl implements CMISRenditionService
for (String filterElement : filterElements)
{
filterElement = filterElement.trim();
- if (isRenditionKind(filterElement))
+ if (filterElement.indexOf('/') == -1)
{
- CMISRenditionKind kind = null;
- for (CMISRenditionKind renditionKind : CMISRenditionKind.values())
- {
- if (renditionKind.getLabel().equals(filterElement))
- {
- kind = renditionKind;
- }
- }
- result.getKinds().add(kind);
+ result.getKinds().add(filterElement);
List thumbnails = kindToThumbnailNames.get(filterElement);
if (thumbnails != null)
{
@@ -255,23 +246,6 @@ public class CMISRenditionServiceImpl implements CMISRenditionService
return null;
}
- /**
- * @param filterElement filter element
- * @return true if filter element is rendition kind
- */
- private boolean isRenditionKind(String filterElement)
- {
- boolean result = false;
- for (CMISRenditionKind renditionKind : CMISRenditionKind.values())
- {
- if (renditionKind.getLabel().equals(filterElement))
- {
- result = true;
- }
- }
- return result;
- }
-
/**
* Create CMISRendition by thumbnailNode and documentNode.
*
@@ -283,42 +257,40 @@ public class CMISRenditionServiceImpl implements CMISRenditionService
{
CMISRenditionImpl rendition = null;
- String thumbnailName = getThumbnailName(thumbnailNode);
- CMISRenditionKind kind = thumbnailNamesToKind.get(thumbnailName);
- if (thumbnailName != null && kind != null)
- {
- rendition = new CMISRenditionImpl();
- ContentData contentData = (ContentData) nodeService.getProperty(thumbnailNode, ContentModel.PROP_CONTENT);
- rendition.setNodeRef(thumbnailNode);
- rendition.setStreamId(thumbnailNode.toString());
- rendition.setRenditionDocumentId(documentNode.toString());
- rendition.setTitle(thumbnailName);
- rendition.setKind(kind);
- rendition.setMimeType(contentData.getMimetype());
- rendition.setLength((int) contentData.getSize());
+ String thumbnailName = getThumbnailName(thumbnailNode);
+ String kind = thumbnailNamesToKind.get(thumbnailName);
+ kind = (kind == null) ? thumbnailName : kind;
+
+ rendition = new CMISRenditionImpl();
+ ContentData contentData = (ContentData) nodeService.getProperty(thumbnailNode, ContentModel.PROP_CONTENT);
+ rendition.setNodeRef(thumbnailNode);
+ rendition.setStreamId(thumbnailNode.toString());
+ rendition.setRenditionDocumentId(documentNode.toString());
+ rendition.setTitle(thumbnailName);
+ rendition.setKind(kind);
+ rendition.setMimeType(contentData.getMimetype());
+ rendition.setLength((int) contentData.getSize());
- ImageResizeOptions imageAttributes = getImageAttributes(thumbnailName);
- if (imageAttributes != null)
- {
- rendition.setWidth(imageAttributes.getWidth());
- rendition.setHeight(imageAttributes.getHeight());
- }
+ ImageResizeOptions imageAttributes = getImageAttributes(thumbnailName);
+ if (imageAttributes != null)
+ {
+ rendition.setWidth(imageAttributes.getWidth());
+ rendition.setHeight(imageAttributes.getHeight());
}
return rendition;
}
- private String getThumbnailName(NodeRef thumbnailNode) {
- String thumbnailName = null;
- List parentAssocs = nodeService.getParentAssocs(
- thumbnailNode, RenditionModel.ASSOC_RENDITION,
- RegexQNamePattern.MATCH_ALL);
- if (parentAssocs.size() == 1)
- {
- ChildAssociationRef parentAssoc = parentAssocs.get(0);
- thumbnailName = parentAssoc.getQName().getLocalName();
- }
- return thumbnailName;
- }
+ private String getThumbnailName(NodeRef thumbnailNode)
+ {
+ String thumbnailName = null;
+ List parentAssocs = nodeService.getParentAssocs(thumbnailNode,
+ RenditionModel.ASSOC_RENDITION, RegexQNamePattern.MATCH_ALL);
+ if (parentAssocs.size() == 1) {
+ ChildAssociationRef parentAssoc = parentAssocs.get(0);
+ thumbnailName = parentAssoc.getQName().getLocalName();
+ }
+ return thumbnailName;
+ }
/**
* Get custom renditions.
@@ -337,7 +309,7 @@ public class CMISRenditionServiceImpl implements CMISRenditionService
}
else
{
- for (CMISRenditionKind kind : filter.getKinds())
+ for (String kind : filter.getKinds())
{
List renditions = customRenditionsCache.getRenditionsByKind(kind);
if (renditions != null)
@@ -379,10 +351,9 @@ public class CMISRenditionServiceImpl implements CMISRenditionService
this.kindToThumbnailNames = renditionKinds;
for (Entry> entry : renditionKinds.entrySet())
{
- CMISRenditionKind kind = CMISRenditionKind.valueOfLabel(entry.getKey());
for (String thumbnailName : entry.getValue())
{
- thumbnailNamesToKind.put(thumbnailName, kind);
+ thumbnailNamesToKind.put(thumbnailName, entry.getKey());
}
}
}
@@ -422,7 +393,7 @@ public class CMISRenditionServiceImpl implements CMISRenditionService
*/
private class CustomRenditionsCache
{
- private Map> renditionsByKind;
+ private Map> renditionsByKind;
private Map> renditionsByMimeType;
private Map> renditionsByBaseMimeType;
private List allRenditions;
@@ -430,7 +401,7 @@ public class CMISRenditionServiceImpl implements CMISRenditionService
public CustomRenditionsCache(List renditions)
{
allRenditions = renditions;
- renditionsByKind = new HashMap>(renditions.size());
+ renditionsByKind = new HashMap>(renditions.size());
renditionsByMimeType = new HashMap>(renditions.size());
renditionsByBaseMimeType = new HashMap>(renditions.size());
for (CMISRendition rendition : renditions)
@@ -454,7 +425,7 @@ public class CMISRenditionServiceImpl implements CMISRenditionService
}
}
- public List getRenditionsByKind(CMISRenditionKind kind)
+ public List getRenditionsByKind(String kind)
{
return renditionsByKind.get(kind);
}
@@ -494,7 +465,7 @@ public class CMISRenditionServiceImpl implements CMISRenditionService
*/
private class ThumbnailFilter
{
- private List kinds = new ArrayList();
+ private List kinds = new ArrayList();
private List thumbnailNames = new ArrayList();
@@ -512,7 +483,7 @@ public class CMISRenditionServiceImpl implements CMISRenditionService
return mimetypes;
}
- public List getKinds()
+ public List getKinds()
{
return kinds;
}
diff --git a/source/java/org/alfresco/cmis/renditions/CMISRenditionServiceTest.java b/source/java/org/alfresco/cmis/renditions/CMISRenditionServiceTest.java
index b3d5b09fe7..973514066d 100644
--- a/source/java/org/alfresco/cmis/renditions/CMISRenditionServiceTest.java
+++ b/source/java/org/alfresco/cmis/renditions/CMISRenditionServiceTest.java
@@ -27,7 +27,6 @@ import java.util.Locale;
import java.util.Set;
import org.alfresco.cmis.CMISRendition;
-import org.alfresco.cmis.CMISRenditionKind;
import org.alfresco.cmis.mapping.BaseCMISTest;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.content.MimetypeMap;
@@ -43,12 +42,12 @@ import org.alfresco.service.cmr.repository.NodeRef;
public class CMISRenditionServiceTest extends BaseCMISTest
{
private static final String[] THUMBNAIL_NAMES = new String[] { "doclib", "webpreview", "imgpreview" };
- private static final CMISRenditionKind[] THUMBNAIL_KINDS = new CMISRenditionKind[] { CMISRenditionKind.THUMBNAIL, CMISRenditionKind.WEB_PREVIEW, CMISRenditionKind.WEB_PREVIEW };
+ private static final String[] THUMBNAIL_KINDS = new String[] { "cmis:thumbnail", "alf:webpreview", "alf:webpreview" };
private NodeRef document;
private List documentRenditions = new ArrayList();
- private CMISRendition icon16Rendition = new CMISRenditionImpl(null, "alf:icon16", "image/gif", CMISRenditionKind.ICON16, 16, 16, null, null, null);
- private CMISRendition icon32Rendition = new CMISRenditionImpl(null, "alf:icon32", "image/gif", CMISRenditionKind.ICON32, 32, 32, null, null, null);
+ private CMISRendition icon16Rendition = new CMISRenditionImpl(null, "alf:icon16", "image/gif", "alf:icon16", 16, 16, null, null, null);
+ private CMISRendition icon32Rendition = new CMISRenditionImpl(null, "alf:icon32", "image/gif", "alf:icon32", 32, 32, null, null, null);
public void setUp() throws Exception
{
@@ -78,13 +77,13 @@ public class CMISRenditionServiceTest extends BaseCMISTest
public void testGetRenditionsByKind() throws Exception
{
- testGetRenditionsByKind(CMISRenditionKind.THUMBNAIL);
- testGetRenditionsByKind(CMISRenditionKind.WEB_PREVIEW);
- testGetRenditionsByKind(CMISRenditionKind.ICON16);
- testGetRenditionsByKind(CMISRenditionKind.ICON32);
+ testGetRenditionsByKind("cmis:thumbnail");
+ testGetRenditionsByKind("alf:webpreview");
+ testGetRenditionsByKind("alf:icon16");
+ testGetRenditionsByKind("alf:icon32");
- testGetRenditionsByKind(CMISRenditionKind.WEB_PREVIEW, CMISRenditionKind.ICON32);
- testGetRenditionsByKind(CMISRenditionKind.THUMBNAIL, CMISRenditionKind.WEB_PREVIEW, CMISRenditionKind.ICON16, CMISRenditionKind.ICON32);
+ testGetRenditionsByKind("alf:webpreview", "alf:icon32");
+ testGetRenditionsByKind("cmis:thumbnail", "alf:webpreview", "alf:icon16", "alf:icon32");
}
public void testGetRenditionsByMimetype() throws Exception
@@ -136,12 +135,12 @@ public class CMISRenditionServiceTest extends BaseCMISTest
testGetRenditions(null, mimetypes);
}
- private void testGetRenditionsByKind(CMISRenditionKind... kinds) throws Exception
+ private void testGetRenditionsByKind(String... kinds) throws Exception
{
testGetRenditions(kinds, null);
}
- private void testGetRenditions(CMISRenditionKind[] kinds, String[] mimetypes) throws Exception
+ private void testGetRenditions(String[] kinds, String[] mimetypes) throws Exception
{
String filter = createFilter(kinds, mimetypes);
List receivedRenditions = cmisRenditionService.getRenditions(document, filter);
@@ -149,7 +148,7 @@ public class CMISRenditionServiceTest extends BaseCMISTest
List expectedRenditions = new ArrayList();
if (kinds != null)
{
- for (CMISRenditionKind kind : kinds)
+ for (String kind : kinds)
{
expectedRenditions.addAll(getRenditionsByKind(kind));
}
@@ -171,7 +170,7 @@ public class CMISRenditionServiceTest extends BaseCMISTest
super.tearDown();
}
- private CMISRendition createRendition(NodeRef nodeRef, String thumbnailName, CMISRenditionKind kind)
+ private CMISRendition createRendition(NodeRef nodeRef, String thumbnailName, String kind)
{
ThumbnailDefinition details = thumbnailService.getThumbnailRegistry().getThumbnailDefinition(thumbnailName);
NodeRef thumbnailNodeRef = thumbnailService.createThumbnail(nodeRef, ContentModel.PROP_CONTENT, details.getMimetype(), details.getTransformationOptions(), details
@@ -260,7 +259,7 @@ public class CMISRenditionServiceTest extends BaseCMISTest
}
};
- private List getRenditionsByKind(CMISRenditionKind kind)
+ private List getRenditionsByKind(String kind)
{
return getRenditions(kind, null);
}
@@ -270,7 +269,7 @@ public class CMISRenditionServiceTest extends BaseCMISTest
return getRenditions(null, mimetype);
}
- private List getRenditions(CMISRenditionKind kind, String mimetype)
+ private List getRenditions(String kind, String mimetype)
{
List result = new ArrayList();
@@ -287,7 +286,7 @@ public class CMISRenditionServiceTest extends BaseCMISTest
return result;
}
- private boolean isRenditionSatisfyConditions(CMISRendition rendition, CMISRenditionKind kind, String mimetype)
+ private boolean isRenditionSatisfyConditions(CMISRendition rendition, String kind, String mimetype)
{
if (kind != null)
{
@@ -338,14 +337,14 @@ public class CMISRenditionServiceTest extends BaseCMISTest
return baseMymetype;
}
- private String createFilter(CMISRenditionKind[] kinds, String[] mimetypes)
+ private String createFilter(String[] kinds, String[] mimetypes)
{
StringBuilder filter = new StringBuilder();
if (kinds != null)
{
- for (CMISRenditionKind kind : kinds)
+ for (String kind : kinds)
{
- filter.append(kind.getLabel());
+ filter.append(kind);
filter.append(",");
}
}