Modified:
/trunk/src/main/java/com/sourcesense/confluence/cmis/DocinfoMacro.java
/trunk/src/main/resources/templates/cmis/docinfo.vm
/trunk/src/test/java/com/sourcesense/confluence/cmis/TestBaseCMISMacro.java
/trunk/src/test/java/com/sourcesense/confluence/cmis/TestDocInfoMacro.java
=======================================
--- /trunk/src/main/java/com/sourcesense/confluence/cmis/DocinfoMacro.java
Sat Jun 5 04:34:03 2010
+++ /trunk/src/main/java/com/sourcesense/confluence/cmis/DocinfoMacro.java
Mon Jun 7 08:28:04 2010
@@ -15,6 +15,7 @@
*/
package com.sourcesense.confluence.cmis;
+import com.atlassian.confluence.util.velocity.VelocityUtils;
import com.atlassian.renderer.RenderContext;
import com.atlassian.renderer.v2.macro.MacroException;
import com.sourcesense.confluence.cmis.utils.ConfluenceCMISRepository;
@@ -30,7 +31,6 @@
public class DocinfoMacro extends BaseCMISMacro {
-
@Override
protected String executeImpl(Map params, String body, RenderContext
renderContext, ConfluenceCMISRepository confluenceCmisRepository) throws
MacroException {
Session session =
confluenceCmisRepository.getRepository().createSession();
@@ -38,34 +38,15 @@
boolean useProxy = (Boolean) params.get(BaseCMISMacro.PARAM_USEPROXY);
ObjectId objectId = session.createObjectId(documentId);
- CmisObject cmisObject = (Document) session.getObject(objectId);
+ CmisObject cmisObject = session.getObject(objectId);
if (cmisObject == null) {
throw new MacroException("Cannot find any document with the
following ID: " + documentId);
}
- String title =
cmisObject.getProperty(PropertyIds.NAME).getValueAsString();
- String link = Utils.getLink(session, confluenceCmisRepository,
documentId, useProxy);
-
- StringBuilder sb = new StringBuilder(String.format("*Details
of %s*\n", String.format("[%s|%s]", title, link)));
-
- return renderDocumentInfo(sb, cmisObject);
- }
-
- protected String renderDocumentInfo(StringBuilder sb, CmisObject
cmisObject) {
- List<Property<?>> properties = cmisObject.getProperties();
-
- sb.append("||Property||Value||\n");
- for (Property<?> prop : properties) {
- String stringValue = prop.getValueAsString();
- if (PropertyType.DATETIME.equals(prop.getType())) {
- Calendar cal = (Calendar) prop.getFirstValue();
- DateFormat df = DateFormat.getDateTimeInstance();
- stringValue = df.format(cal.getTime());
- }
- sb.append(String.format("|%s|%s|\n", prop.getDisplayName(),
stringValue));
- }
-
- return sb.toString();
+ renderContext.addParam(VM_DOCUMENT_PROPERTIES,
getPropertiesMap(cmisObject));
+ renderContext.addParam(VM_DOCUMENT_LINK, Utils.getLink(session,
confluenceCmisRepository, documentId, useProxy));
+
+ return VelocityUtils.getRenderedTemplate("templates/cmis/docinfo.vm",
renderContext.getParams());
}
}
=======================================
--- /trunk/src/main/resources/templates/cmis/docinfo.vm Mon Jun 7 06:09:33
2010
+++ /trunk/src/main/resources/templates/cmis/docinfo.vm Mon Jun 7 08:28:04
2010
@@ -1,3 +1,8 @@
+*Details of [$documentProperties.get("Name")|$documentLink]*
||Property||Value||
-#foreach( $prop in $documentProperties )
-|$prop.displayName|$prop.valueAsString|#end
+#foreach( $entry in $documentProperties.entrySet() )
+#if($check.isNull($entry.value))
+#set( $entry.value = " " )
+#end
+|$entry.key|$entry.value|
+#end
=======================================
---
/trunk/src/test/java/com/sourcesense/confluence/cmis/TestBaseCMISMacro.java
Mon Jun 7 06:50:47 2010
+++
/trunk/src/test/java/com/sourcesense/confluence/cmis/TestBaseCMISMacro.java
Mon Jun 7 08:28:04 2010
@@ -110,7 +110,7 @@
for (CmisObject obj : children) {
if ("TODO.txt".equals(obj.getName())) {
Document doc = (Document) obj;
- System.out.println(doc);
+ logger.debug(doc);
}
}
}
=======================================
---
/trunk/src/test/java/com/sourcesense/confluence/cmis/TestDocInfoMacro.java
Mon Jun 7 06:50:47 2010
+++
/trunk/src/test/java/com/sourcesense/confluence/cmis/TestDocInfoMacro.java
Mon Jun 7 08:28:04 2010
@@ -4,8 +4,8 @@
import org.apache.velocity.Template;
import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -18,18 +18,22 @@
@SuppressWarnings("unchecked")
public void testRenderDocumentInfo() throws Exception
{
- List<Property<?>> documentProperties = new ArrayList<Property<?>>
();
-
- Property<String> property = mock(Property.class);
- when(property.getValueAsString()).thenReturn("value");
- when(property.getDisplayName()).thenReturn("displayName");
-
- documentProperties.add(property);
+ Map<String, String> documentProperties = new HashMap<String,
String>();
+
+ Property<String> prop = createMockedProperty
("displayName", "value");
+ documentProperties.put(prop.getDisplayName(),
prop.getValueAsString());
+
+ prop = createMockedProperty ("Name", "A nice document.txt");
+ documentProperties.put(prop.getDisplayName(),
prop.getValueAsString());
+
+ prop = createMockedProperty ("nullProperty", null);
+ documentProperties.put(prop.getDisplayName(),
prop.getValueAsString());
Template t = ve.getTemplate("templates/cmis/docinfo.vm");
StringWriter sw = new StringWriter();
vc.put("documentProperties", documentProperties);
+ vc.put("documentLink", "http://www.sourcesense.com");
t.merge(vc, sw);
String renderedView = sw.getBuffer().toString();
@@ -37,9 +41,20 @@
assertNotNull(renderedView);
assertTrue(renderedView.length() > 0);
- String expectedResult = "||Property||Value||\n" +
- "|displayName|value|";
+ String expectedResult = "*Details of [A nice document.txt|
http://www.sourcesense.com]*\n" +
+ "||Property||Value||\n" +
+ "|Name|A nice document.txt|\n" +
+ "|nullProperty| |\n" +
+ "|displayName|value|\n";
assertEquals(expectedResult, renderedView);
}
-}
+
+ private Property<String> createMockedProperty (String displayName,
String value)
+ {
+ Property<String> property = mock(Property.class);
+ when(property.getDisplayName()).thenReturn(displayName);
+ when(property.getValueAsString()).thenReturn(value);
+ return property;
+ }
+}