Repository: olingo-odata4
Updated Branches:
  refs/heads/master 837c3565a -> 26c676484


[OLINGO-587] Enable title for service document


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/26c67648
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/26c67648
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/26c67648

Branch: refs/heads/master
Commit: 26c67648468471149e32016f4892d484a5447bb8
Parents: 837c356
Author: Christian Amend <[email protected]>
Authored: Mon Oct 26 16:01:16 2015 +0100
Committer: Christian Amend <[email protected]>
Committed: Mon Oct 26 16:02:12 2015 +0100

----------------------------------------------------------------------
 .../org/apache/olingo/commons/api/Constants.java |  2 ++
 .../olingo/commons/api/edm/EdmBindingTarget.java |  6 ++++++
 .../commons/api/edm/EdmFunctionImport.java       |  6 ++++++
 .../api/edm/provider/CsdlBindingTarget.java      | 19 +++++++++++++++++++
 .../commons/api/edm/provider/CsdlEntitySet.java  |  6 ++++++
 .../api/edm/provider/CsdlFunctionImport.java     | 19 +++++++++++++++++++
 .../commons/api/edm/provider/CsdlSingleton.java  |  6 ++++++
 .../core/edm/AbstractEdmBindingTarget.java       |  5 +++++
 .../commons/core/edm/EdmEntitySetImpl.java       |  1 +
 .../commons/core/edm/EdmFunctionImportImpl.java  |  5 +++++
 .../core/edm/provider/EdmEntitySetImplTest.java  |  2 ++
 .../edm/provider/EdmFunctionImportImplTest.java  |  2 ++
 .../core/edm/provider/EdmSingletonImplTest.java  |  2 ++
 .../json/ServiceDocumentJsonSerializer.java      | 18 +++++++++++-------
 .../xml/ServiceDocumentXmlSerializer.java        | 16 ++++++++++------
 15 files changed, 102 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
index 291e2e5..beff60d 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
@@ -215,6 +215,8 @@ public interface Constants {
   String VALUE = "value";
 
   String JSON_URL = "url";
+  
+  String JSON_TITLE = "title";
 
   String JSON_COORDINATES = "coordinates";
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
index 4f4d145..e3fbc37 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
@@ -27,6 +27,12 @@ import java.util.List;
 public interface EdmBindingTarget extends EdmNamed, EdmAnnotatable {
 
   /**
+   * Returns a human readable title or null if not set.
+   * @return a human readable title or null
+   */
+  String getTitle();
+  
+  /**
    * Returns the target for a given path.
    *
    * @param path path for which the target is returned

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java
index 9fcf365..d0f82db 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java
@@ -46,6 +46,12 @@ public interface EdmFunctionImport extends 
EdmOperationImport {
   FullQualifiedName getFunctionFqn();
 
   /**
+   * Returns a human readable title or null if not set.
+   * @return a human readable title or null
+   */
+  String getTitle();
+  
+  /**
    * @return true if the function import must be included in the service 
document
    */
   boolean isIncludeInServiceDocument();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlBindingTarget.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlBindingTarget.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlBindingTarget.java
index 9043eb7..67d8f5a 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlBindingTarget.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlBindingTarget.java
@@ -34,6 +34,11 @@ public abstract class CsdlBindingTarget extends 
CsdlAbstractEdmItem implements C
    * The Name.
    */
   protected String name;
+  
+  /**
+   * The human readable title.
+   */
+  protected String title;
 
   /**
    * The Type.
@@ -139,4 +144,18 @@ public abstract class CsdlBindingTarget extends 
CsdlAbstractEdmItem implements C
     this.annotations = annotations;
     return this;
   }
+
+  public String getTitle() {
+    return title;
+  }
+
+  /**
+   * A human readable title for this instance
+   * @param title
+   * @return this instance
+   */
+  public CsdlBindingTarget setTitle(String title) {
+    this.title = title;
+    return this;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntitySet.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntitySet.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntitySet.java
index 12b59ce..a8d17b2 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntitySet.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntitySet.java
@@ -83,4 +83,10 @@ public class CsdlEntitySet extends CsdlBindingTarget {
     this.includeInServiceDocument = includeInServiceDocument;
     return this;
   }
+  
+  @Override
+  public CsdlEntitySet setTitle(String title) {
+    super.setTitle(title);
+    return this;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlFunctionImport.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlFunctionImport.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlFunctionImport.java
index e293af1..1b4e56d 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlFunctionImport.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlFunctionImport.java
@@ -34,6 +34,11 @@ public class CsdlFunctionImport extends CsdlOperationImport {
   // Default include in service document is false for function imports
   private boolean includeInServiceDocument;
 
+  /**
+   * Humanreadable title
+   */
+  private String title;
+
   @Override
   public String getName() {
     return name;
@@ -116,4 +121,18 @@ public class CsdlFunctionImport extends 
CsdlOperationImport {
     this.annotations = annotations;
     return this;
   }
+  
+  public String getTitle() {
+    return title;
+  }
+
+  /**
+   * A human readable title for this instance
+   * @param title
+   * @return this instance
+   */
+  public CsdlFunctionImport setTitle(String title) {
+    this.title = title;
+    return this;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlSingleton.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlSingleton.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlSingleton.java
index b05766f..091f61d 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlSingleton.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlSingleton.java
@@ -59,4 +59,10 @@ public class CsdlSingleton extends CsdlBindingTarget {
     super.setAnnotations(annotations);
     return this;
   }
+  
+  @Override
+  public CsdlSingleton setTitle(String title) {
+    super.setTitle(title);
+    return this;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java
 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java
index 94956e2..90ac9f8 100644
--- 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java
+++ 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java
@@ -119,4 +119,9 @@ public abstract class AbstractEdmBindingTarget extends 
AbstractEdmNamed implemen
 
     return bindingTarget;
   }
+  
+  @Override
+  public String getTitle() {
+    return target.getTitle();
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmEntitySetImpl.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmEntitySetImpl.java
 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmEntitySetImpl.java
index 0ba3ae1..a0bf7d3 100644
--- 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmEntitySetImpl.java
+++ 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmEntitySetImpl.java
@@ -36,4 +36,5 @@ public class EdmEntitySetImpl extends 
AbstractEdmBindingTarget implements EdmEnt
   public boolean isIncludeInServiceDocument() {
     return entitySet.isIncludeInServiceDocument();
   }
+
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmFunctionImportImpl.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmFunctionImportImpl.java
 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmFunctionImportImpl.java
index 574c2f8..06e839b 100644
--- 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmFunctionImportImpl.java
+++ 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmFunctionImportImpl.java
@@ -56,4 +56,9 @@ public class EdmFunctionImportImpl extends 
AbstractEdmOperationImport implements
   public boolean isIncludeInServiceDocument() {
     return functionImport.isIncludeInServiceDocument();
   }
+  
+  @Override
+  public String getTitle() {
+    return functionImport.getTitle();
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImplTest.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImplTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImplTest.java
index cf02023..ddd4ede 100644
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImplTest.java
+++ 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImplTest.java
@@ -66,6 +66,7 @@ public class EdmEntitySetImplTest {
     final String entitySetName = "entitySet";
     final CsdlEntitySet entitySetProvider = new CsdlEntitySet()
         .setName(entitySetName)
+        .setTitle("title")
         .setType(typeName)
         .setNavigationPropertyBindings(Arrays.asList(
             new CsdlNavigationPropertyBinding().setPath("path")
@@ -75,6 +76,7 @@ public class EdmEntitySetImplTest {
     final EdmEntitySet entitySet = new EdmEntitySetImpl(edm, entityContainer, 
entitySetProvider);
     assertEquals(entitySetName, 
entityContainer.getEntitySet(entitySetName).getName());
     assertEquals(entitySetName, entitySet.getName());
+    assertEquals("title", entitySet.getTitle());
     final EdmEntityType entityType = entitySet.getEntityType();
     assertEquals(typeName.getNamespace(), entityType.getNamespace());
     assertEquals(typeName.getName(), entityType.getName());

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java
index 526badf..828405a 100644
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java
+++ 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java
@@ -71,6 +71,7 @@ public class EdmFunctionImportImplTest {
     final String functionImportName = "functionImport";
     final CsdlFunctionImport functionImportProvider = new CsdlFunctionImport()
         .setName(functionImportName)
+        .setTitle("title")
         .setFunction(functionName)
         .setIncludeInServiceDocument(true);
     when(provider.getFunctionImport(containerName, 
functionImportName)).thenReturn(functionImportProvider);
@@ -78,6 +79,7 @@ public class EdmFunctionImportImplTest {
     final EdmFunctionImport functionImport = new EdmFunctionImportImpl(edm, 
entityContainer, functionImportProvider);
     assertEquals(functionImportName, 
entityContainer.getFunctionImport(functionImportName).getName());
     assertEquals("functionImport", functionImport.getName());
+    assertEquals("title", functionImport.getTitle());
     assertEquals(new FullQualifiedName("ns", functionImportName), 
functionImport.getFullQualifiedName());
     assertTrue(functionImport.isIncludeInServiceDocument());
     final EdmFunction function = 
functionImport.getUnboundFunction(Collections.<String> emptyList());

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSingletonImplTest.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSingletonImplTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSingletonImplTest.java
index d1aeb20..673131e 100644
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSingletonImplTest.java
+++ 
b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSingletonImplTest.java
@@ -64,6 +64,7 @@ public class EdmSingletonImplTest {
     final CsdlSingleton singletonProvider =
         new CsdlSingleton()
             .setName(singletonName)
+            .setTitle("title")
             .setType(typeName)
             .setNavigationPropertyBindings(
                 Arrays.asList(
@@ -74,6 +75,7 @@ public class EdmSingletonImplTest {
     final EdmSingleton singleton = new EdmSingletonImpl(edm, entityContainer, 
singletonProvider);
     assertEquals(singletonName, 
entityContainer.getSingleton(singletonName).getName());
     assertEquals(singletonName, singleton.getName());
+    assertEquals("title", singleton.getTitle());
     final EdmEntityType entityType = singleton.getEntityType();
     assertEquals(typeName.getNamespace(), entityType.getNamespace());
     assertEquals(typeName.getName(), entityType.getName());

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentJsonSerializer.java
----------------------------------------------------------------------
diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentJsonSerializer.java
 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentJsonSerializer.java
index 2cae476..a9793b9 100644
--- 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentJsonSerializer.java
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentJsonSerializer.java
@@ -81,29 +81,33 @@ public class ServiceDocumentJsonSerializer {
   private void writeEntitySets(final JsonGenerator gen, final 
EdmEntityContainer container) throws IOException {
     for (EdmEntitySet edmEntitySet : container.getEntitySets()) {
       if (edmEntitySet.isIncludeInServiceDocument()) {
-        writeElement(gen, null, edmEntitySet.getName(), 
edmEntitySet.getName());
+        writeElement(gen, null, edmEntitySet.getName(), 
edmEntitySet.getName(), edmEntitySet.getName());
       }
     }
   }
 
   private void writeFunctionImports(final JsonGenerator gen, final 
EdmEntityContainer container) throws IOException {
-    for (EdmFunctionImport edmFunctionImport : container.getFunctionImports()) 
{
-      if (edmFunctionImport.isIncludeInServiceDocument()) {
-        writeElement(gen, FUNCTION_IMPORT, edmFunctionImport.getName(), 
edmFunctionImport.getName());
+    for (EdmFunctionImport edmFI : container.getFunctionImports()) {
+      if (edmFI.isIncludeInServiceDocument()) {
+        writeElement(gen, FUNCTION_IMPORT, edmFI.getName(), edmFI.getName(), 
edmFI.getTitle());
       }
     }
   }
 
   private void writeSingletons(final JsonGenerator gen, final 
EdmEntityContainer container) throws IOException {
     for (EdmSingleton edmSingleton : container.getSingletons()) {
-      writeElement(gen, SINGLETON, edmSingleton.getName(), 
edmSingleton.getName());
+      writeElement(gen, SINGLETON, edmSingleton.getName(), 
edmSingleton.getName(), edmSingleton.getTitle());
     }
   }
 
-  private void writeElement(JsonGenerator gen, final String kind, final String 
reference, final String title)
+  private void writeElement(JsonGenerator gen, final String kind, final String 
reference, final String name,
+      final String title)
       throws IOException {
     gen.writeStartObject();
-    gen.writeObjectField(Constants.JSON_NAME, title);
+    gen.writeObjectField(Constants.JSON_NAME, name);
+    if (title != null) {
+      gen.writeObjectField(Constants.JSON_TITLE, title);
+    }
     gen.writeObjectField(Constants.JSON_URL, reference);
     if (kind != null) {
       gen.writeObjectField(KIND, kind);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/26c67648/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializer.java
----------------------------------------------------------------------
diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializer.java
 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializer.java
index 6d130ba..a5490e6 100644
--- 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializer.java
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ServiceDocumentXmlSerializer.java
@@ -97,7 +97,7 @@ public class ServiceDocumentXmlSerializer {
       throws XMLStreamException {
     for (EdmEntitySet edmEntitySet : container.getEntitySets()) {
       if (edmEntitySet.isIncludeInServiceDocument()) {
-        writeElement(writer, true, "collection", edmEntitySet.getName(), 
edmEntitySet.getName());
+        writeElement(writer, true, "collection", edmEntitySet.getName(), 
edmEntitySet.getTitle());
       }
     }
   }
@@ -106,7 +106,7 @@ public class ServiceDocumentXmlSerializer {
       throws XMLStreamException {
     for (EdmFunctionImport edmFunctionImport : container.getFunctionImports()) 
{
       if (edmFunctionImport.isIncludeInServiceDocument()) {
-        writeElement(writer, false, "function-import", 
edmFunctionImport.getName(), edmFunctionImport.getName());
+        writeElement(writer, false, "function-import", 
edmFunctionImport.getName(), edmFunctionImport.getTitle());
       }
     }
   }
@@ -114,20 +114,24 @@ public class ServiceDocumentXmlSerializer {
   private void writeSingletons(final XMLStreamWriter writer, final 
EdmEntityContainer container)
       throws XMLStreamException {
     for (EdmSingleton edmSingleton : container.getSingletons()) {
-      writeElement(writer, false, "singleton", edmSingleton.getName(), 
edmSingleton.getName());
+      writeElement(writer, false, "singleton", edmSingleton.getName(), 
edmSingleton.getTitle());
     }
   }
 
-  private void writeElement(XMLStreamWriter writer, final boolean isApp, final 
String kind, final String reference,
+  private void writeElement(XMLStreamWriter writer, final boolean isApp, final 
String kind, final String name,
       final String title) throws XMLStreamException {
     if (isApp) {
       writer.writeStartElement(APP, kind, NS_APP);
     } else {
       writer.writeStartElement(METADATA, kind, NS_METADATA);
     }
-    writer.writeAttribute(Constants.ATTR_HREF, reference);
+    writer.writeAttribute(Constants.ATTR_HREF, name);
     writer.writeStartElement(ATOM, Constants.ATOM_ELEM_TITLE, NS_ATOM);
-    writer.writeCharacters(title);
+    if (title != null) {
+      writer.writeCharacters(title);
+    } else {
+      writer.writeCharacters(name);
+    }
     writer.writeEndElement();
     writer.writeEndElement();
   }

Reply via email to