|
15 | 15 | */
|
16 | 16 | package com.orientechnologies.orient.server.network.protocol.http;
|
17 | 17 |
|
| 18 | +import com.orientechnologies.common.collection.OMultiValue; |
| 19 | +import com.orientechnologies.common.log.OLogManager; |
| 20 | +import com.orientechnologies.common.util.OCallable; |
| 21 | +import com.orientechnologies.orient.core.db.record.OIdentifiable; |
| 22 | +import com.orientechnologies.orient.core.record.ORecord; |
| 23 | +import com.orientechnologies.orient.core.record.impl.ODocument; |
| 24 | +import com.orientechnologies.orient.core.serialization.OBinaryProtocol; |
| 25 | +import com.orientechnologies.orient.core.serialization.serializer.OJSONWriter; |
| 26 | + |
18 | 27 | import java.io.ByteArrayInputStream;
|
19 | 28 | import java.io.ByteArrayOutputStream;
|
20 | 29 | import java.io.IOException;
|
21 | 30 | import java.io.InputStream;
|
22 | 31 | import java.io.OutputStream;
|
23 | 32 | import java.io.StringWriter;
|
24 | 33 | import java.util.ArrayList;
|
25 |
| -import java.util.Collections; |
26 | 34 | import java.util.Date;
|
27 | 35 | import java.util.Iterator;
|
28 | 36 | import java.util.LinkedHashSet;
|
29 | 37 | import java.util.List;
|
30 | 38 | import java.util.Map;
|
31 | 39 | import java.util.zip.GZIPOutputStream;
|
32 | 40 |
|
33 |
| -import com.orientechnologies.common.collection.OMultiValue; |
34 |
| -import com.orientechnologies.common.log.OLogManager; |
35 |
| -import com.orientechnologies.common.util.OCallable; |
36 |
| -import com.orientechnologies.orient.core.db.record.OIdentifiable; |
37 |
| -import com.orientechnologies.orient.core.record.ORecord; |
38 |
| -import com.orientechnologies.orient.core.record.impl.ODocument; |
39 |
| -import com.orientechnologies.orient.core.serialization.OBinaryProtocol; |
40 |
| -import com.orientechnologies.orient.core.serialization.serializer.OJSONWriter; |
41 |
| - |
42 | 41 | /**
|
43 | 42 | * Maintains information about current HTTP response.
|
44 | 43 | *
|
@@ -171,36 +170,36 @@ public void writeResult(Object iResult, final String iFormat, final String accep
|
171 | 170 | if (iResult == null)
|
172 | 171 | send(OHttpUtils.STATUS_OK_NOCONTENT_CODE, "", OHttpUtils.CONTENT_TEXT_PLAIN, null, null, true);
|
173 | 172 | else {
|
174 |
| - final Object newResult; |
175 |
| - if (isJSObject(iResult)) { |
176 |
| - newResult = Collections.singleton(new ODocument().field("value", iResult)).iterator(); |
177 |
| - } else if (iResult instanceof Map<?, ?>) { |
178 |
| - newResult = ((Map<?, ?>) iResult).entrySet().iterator(); |
| 173 | + if (iResult instanceof Map<?, ?>) { |
| 174 | + iResult = ((Map<?, ?>) iResult).entrySet().iterator(); |
179 | 175 | } else if (OMultiValue.isMultiValue(iResult)
|
180 | 176 | && (OMultiValue.getSize(iResult) > 0 && !(OMultiValue.getFirstValue(iResult) instanceof OIdentifiable))) {
|
181 |
| - newResult = Collections.singleton(new ODocument().field("value", iResult)).iterator(); |
| 177 | + final List<OIdentifiable> resultSet = new ArrayList<OIdentifiable>(); |
| 178 | + resultSet.add(new ODocument().field("value", iResult)); |
| 179 | + iResult = resultSet.iterator(); |
| 180 | + |
182 | 181 | } else if (iResult instanceof OIdentifiable) {
|
183 | 182 | // CONVERT SIGLE VALUE IN A COLLECTION
|
184 |
| - newResult = Collections.singleton(iResult).iterator(); |
| 183 | + final List<OIdentifiable> resultSet = new ArrayList<OIdentifiable>(); |
| 184 | + resultSet.add((OIdentifiable) iResult); |
| 185 | + iResult = resultSet.iterator(); |
185 | 186 | } else if (iResult instanceof Iterable<?>)
|
186 |
| - newResult = ((Iterable<OIdentifiable>) iResult).iterator(); |
| 187 | + iResult = ((Iterable<OIdentifiable>) iResult).iterator(); |
187 | 188 | else if (OMultiValue.isMultiValue(iResult))
|
188 |
| - newResult = OMultiValue.getMultiValueIterator(iResult); |
| 189 | + iResult = OMultiValue.getMultiValueIterator(iResult); |
189 | 190 | else {
|
190 |
| - newResult = Collections.singleton(new ODocument().field("value", iResult)).iterator(); |
| 191 | + final List<OIdentifiable> resultSet = new ArrayList<OIdentifiable>(); |
| 192 | + resultSet.add(new ODocument().field("value", iResult)); |
| 193 | + iResult = resultSet.iterator(); |
191 | 194 | }
|
192 | 195 |
|
193 |
| - if (newResult == null) |
| 196 | + if (iResult == null) |
194 | 197 | send(OHttpUtils.STATUS_OK_NOCONTENT_CODE, "", OHttpUtils.CONTENT_TEXT_PLAIN, null, null, true);
|
195 |
| - else |
196 |
| - writeRecords(newResult, null, iFormat, accept); |
| 198 | + else if (iResult instanceof Iterator<?>) |
| 199 | + writeRecords(iResult, null, iFormat, accept); |
197 | 200 | }
|
198 | 201 | }
|
199 | 202 |
|
200 |
| - private boolean isJSObject(Object iResult) { |
201 |
| - return iResult.getCla
5481
ss().getName().equals("jdk.nashorn.api.scripting.ScriptObjectMirror"); |
202 |
| - } |
203 |
| - |
204 | 203 | public void writeRecords(final Object iRecords) throws IOException {
|
205 | 204 | writeRecords(iRecords, null, null, null);
|
206 | 205 | }
|
|
0 commit comments