Skip to content

Commit 2b6c05d

Browse files
author
tliebeck
committed
Progress toward rendering data from server-side ListViewer, still not working yet (need sync for array containing single row values).
1 parent 9edc805 commit 2b6c05d

2 files changed

Lines changed: 26 additions & 7 deletions

File tree

src/server-java/testapp-interactive/lib/nextapp/echo/extras/testapp/testscreen/ListViewerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public int size() {
6969
}
7070

7171
public Object get(int index) {
72-
return Integer.toString(index);
72+
return new String[]{"a" + index, "b" + index * 2 + "c", "q"};
7373
}
7474
});
7575

src/server-java/webcontainer/nextapp/echo/extras/webcontainer/sync/component/AbstractViewerPeer.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
package nextapp.echo.extras.webcontainer.sync.component;
3131

3232
import java.io.IOException;
33+
import java.io.PrintWriter;
3334

3435
import javax.servlet.http.HttpServletRequest;
3536

@@ -114,6 +115,7 @@ public void service(Connection conn)
114115

115116
conn.setContentType(ContentType.TEXT_XML);
116117
DomUtil.save(document, conn.getOutputStream(), null);
118+
DomUtil.save(document, new PrintWriter(System.err), null);
117119
} catch (SerialException ex) {
118120
throw new SynchronizationException("Unable to render model data.", ex);
119121
} catch (SAXException ex) {
@@ -222,13 +224,30 @@ public static void renderModelDataContent(Context context, ModelData modelData,
222224
PropertyPeerFactory factory = (PropertyPeerFactory) context.get(PropertyPeerFactory.class);
223225
int endIndex = Math.min(modelData.getEndIndex(), modelData.getModel().size());
224226
for (int i = modelData.getStartIndex(); i < endIndex; ++i) {
225-
Element pElement = parentElement.getOwnerDocument().createElement("p");
226-
Object modelValue = modelData.getModel().get(i);
227-
if (modelValue != null) {
228-
SerialPropertyPeer modelValuePeer = factory.getPeerForProperty(modelValue.getClass());
229-
modelValuePeer.toXml(context, ViewerModel.class, pElement, modelValue);
227+
Object modelValue = modelData.getModel().get(i);
228+
if (modelValue == null) {
229+
Element pElement = parentElement.getOwnerDocument().createElement("p");
230+
parentElement.appendChild(pElement);
231+
} else {
232+
if (modelValue instanceof Object[]) {
233+
Object[] array = (Object[]) modelValue;
234+
for (int iArray = 0; iArray < array.length; ++iArray) {
235+
if (array[iArray] == null) {
236+
continue;
237+
}
238+
Element pElement = parentElement.getOwnerDocument().createElement("p");
239+
pElement.setAttribute("x", Integer.toString(iArray));
240+
SerialPropertyPeer modelValuePeer = factory.getPeerForProperty(array[iArray].getClass());
241+
modelValuePeer.toXml(context, ViewerModel.class, pElement, array[iArray]);
242+
parentElement.appendChild(pElement);
243+
}
244+
} else {
245+
Element pElement = parentElement.getOwnerDocument().createElement("p");
246+
SerialPropertyPeer modelValuePeer = factory.getPeerForProperty(modelValue.getClass());
247+
modelValuePeer.toXml(context, ViewerModel.class, pElement, modelValue);
248+
parentElement.appendChild(pElement);
249+
}
230250
}
231-
parentElement.appendChild(pElement);
232251
}
233252
}
234253

0 commit comments

Comments
 (0)