Update of /var/cvs/src/org/mmbase/module/core
In directory james.mmbase.org:/tmp/cvs-serv1599
Modified Files:
MMObjectNode.java
Log Message:
binaries are sometimes stored as inputstream in mmobjectnode, mmobjectnode is
serializable
See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/module/core
Index: MMObjectNode.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/module/core/MMObjectNode.java,v
retrieving revision 1.222
retrieving revision 1.223
diff -u -b -r1.222 -r1.223
--- MMObjectNode.java 3 Jul 2008 15:53:58 -0000 1.222
+++ MMObjectNode.java 8 Jul 2008 07:37:10 -0000 1.223
@@ -21,9 +21,7 @@
import org.mmbase.storage.search.*;
import org.mmbase.storage.search.implementation.NodeSearchQuery;
import org.mmbase.storage.search.implementation.BasicFieldValueConstraint;
-import org.mmbase.util.Casting;
-import org.mmbase.util.SizeOf;
-import org.mmbase.util.DynamicDate;
+import org.mmbase.util.*;
import org.mmbase.util.logging.*;
import org.mmbase.util.functions.*;
import org.w3c.dom.Document;
@@ -40,10 +38,10 @@
* @author Eduard Witteveen
* @author Michiel Meeuwissen
* @author Ernst Bunders
- * @version $Id: MMObjectNode.java,v 1.222 2008/07/03 15:53:58 michiel Exp $
+ * @version $Id: MMObjectNode.java,v 1.223 2008/07/08 07:37:10 michiel Exp $
*/
-public class MMObjectNode implements org.mmbase.util.SizeMeasurable,
java.io.Serializable {
+public class MMObjectNode implements org.mmbase.util.SizeMeasurable,
java.io.Serializable { // Comparable<MMObjectNode> {
private static final Logger log =
Logging.getLoggerInstance(MMObjectNode.class);
@@ -464,7 +462,7 @@
*/
protected Object checkSerializable(String fieldName, Object fieldValue) {
if (fieldValue != null && (! (fieldValue instanceof Serializable))) {
- log.warn("Value for " + fieldName + " is not serializable: " +
fieldValue, new Exception());
+ log.warn("Value for " + fieldName + " is not serializable: " +
fieldValue.getClass() + " " + fieldValue, new Exception());
}
return fieldValue;
}
@@ -484,6 +482,9 @@
// This is just a hack to make app1 import/export working,
withough exposing the values map.
values.remove(fieldName);
}
+ if (fieldValue != null && (fieldValue instanceof InputStream)) {
+ fieldValue = new SerializableInputStream((InputStream) fieldValue);
+ }
fieldValue = checkSerializable(fieldName, fieldValue);
if (checkFieldExistance(fieldName)) {
values.put(fieldName, fieldValue);
@@ -843,17 +844,7 @@
* @since MMBase-1.8
*/
private byte[] useInputStream(String fieldName, InputStream stream) {
// first, convert to byte-array
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- try {
- byte[] buf = new byte[1024];
- int n;
- while ((n = stream.read(buf)) > -1) {
- bos.write(buf, 0, n);
- }
- } catch (IOException ioe) {
- log.error(ioe);
- }
- byte[] b = bos.toByteArray();
+ byte[] b = SerializableInputStream.toByteArray(stream);
// check if we can cache it.
BlobCache blobs = parent.getBlobCache(fieldName);
String key = blobs.getKey(getNumber(), fieldName);
@@ -1861,4 +1852,8 @@
aliases = (Set<String>)in.readObject();
newContext = (String)in.readObject();
}
+
+ public int compareTo(MMObjectNode n) {
+ return getNumber() - n.getNumber();
+ }
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs