当前位置: 首页>>代码示例>>Java>>正文


Java Stream.setContents方法代码示例

本文整理汇总了Java中lotus.domino.Stream.setContents方法的典型用法代码示例。如果您正苦于以下问题:Java Stream.setContents方法的具体用法?Java Stream.setContents怎么用?Java Stream.setContents使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在lotus.domino.Stream的用法示例。


在下文中一共展示了Stream.setContents方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: saveState

import lotus.domino.Stream; //导入方法依赖的package包/类
/**
 * Save state. Imported from org.openntf.domino
 * 
 * @param object
 *            the object
 * @param doc
 *            the doc
 * @param itemName
 *            the item name
 * @param compress
 *            the compress
 * @throws Throwable
 *             the throwable
 */
public static void saveState(Serializable object, Document doc, String itemName, boolean compress, Map<String, String> headers) throws Throwable {
	Session session=doc.getParentDatabase().getParent();
	boolean convertMime = session.isConvertMime();
	session.setConvertMime(false);

	ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
	ObjectOutputStream objectStream = compress ? new ObjectOutputStream(new GZIPOutputStream(byteStream)) : new ObjectOutputStream(
			byteStream);
	String contentType = null;

	// Prefer externalization if available
	if(object instanceof Externalizable) {
		((Externalizable)object).writeExternal(objectStream);
		contentType = "application/x-java-externalized-object";
	} else {
		objectStream.writeObject(object);
		contentType = "application/x-java-serialized-object";
	}

	objectStream.flush();
	objectStream.close();

	Stream mimeStream = session.createStream();
	MIMEEntity previousState = doc.getMIMEEntity(itemName);
	MIMEEntity entity = previousState == null ? doc.createMIMEEntity(itemName) : previousState;
	ByteArrayInputStream byteIn = new ByteArrayInputStream(byteStream.toByteArray());
	mimeStream.setContents(byteIn);
	entity.setContentFromBytes(mimeStream, contentType, MIMEEntity.ENC_NONE);
	MIMEHeader contentEncoding = entity.getNthHeader("Content-Encoding");
	if (compress) {
		if (contentEncoding == null) {
			contentEncoding = entity.createHeader("Content-Encoding");
		}
		contentEncoding.setHeaderVal("gzip");
		contentEncoding.recycle();
	} else {
		if (contentEncoding != null) {
			contentEncoding.remove();
			contentEncoding.recycle();
		}
	}
	MIMEHeader javaClass = entity.getNthHeader("X-Java-Class");
	if (javaClass == null) {
		javaClass = entity.createHeader("X-Java-Class");
	}
	javaClass.setHeaderVal(object.getClass().getName());
	javaClass.recycle();

	if(headers != null) {
		for(Map.Entry<String, String> entry : headers.entrySet()) {
			MIMEHeader paramHeader = entity.getNthHeader(entry.getKey());
			if(paramHeader == null) {
				paramHeader = entity.createHeader(entry.getKey());
			}
			paramHeader.setHeaderVal(entry.getValue());
			paramHeader.recycle();
		}
	}

	entity.recycle();
	mimeStream.recycle();

	session.setConvertMime(convertMime);
}
 
开发者ID:sbasegmez,项目名称:Blogged,代码行数:79,代码来源:DevelopiUtils.java

示例2: processJava2Domino

import lotus.domino.Stream; //导入方法依赖的package包/类
public Object[] processJava2Domino(Document docCurrent, Object objCurrent, Definition def) {
	Object[] objRC = new Object[2];
	try {
		Object oldBody = getRawValueFromStore(docCurrent, def.getNotesField());
		Object body = getValue(objCurrent, def.getJavaField());
		objRC[0] = oldBody;
		objRC[1] = body;
		Session session = docCurrent.getParentDatabase().getParent();

		boolean convertMime = session.isConvertMime();
		session.setConvertMime(false);

		ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
		ObjectOutputStream objectStream = new ObjectOutputStream(new GZIPOutputStream(byteStream));
		objectStream.writeObject(body);
		objectStream.flush();
		objectStream.close();

		MIMEEntity entity = null;
		MIMEEntity previousState = docCurrent.getMIMEEntity(def.getNotesField());
		if (previousState == null) {
			entity = docCurrent.createMIMEEntity(def.getNotesField());
		} else {
			entity = previousState;
		}
		Stream mimeStream = session.createStream();
		ByteArrayInputStream byteIn = new ByteArrayInputStream(byteStream.toByteArray());
		mimeStream.setContents(byteIn);
		entity.setContentFromBytes(mimeStream, "application/x-java-serialized-object", MIMEEntity.ENC_NONE);

		MIMEHeader header = entity.getNthHeader("Content-Encoding");
		if (header == null) {
			header = entity.createHeader("Content-Encoding");
		}
		header.setHeaderVal("gzip");

		header.recycle();
		entity.recycle();
		mimeStream.recycle();

		session.setConvertMime(convertMime);

	} catch (Exception e) {
		LoggerFactory.logWarning(getClass(), "Error during processJava2Domino", e);
	}
	return objRC;

}
 
开发者ID:OpenNTF,项目名称:XPagesToolkit,代码行数:49,代码来源:ObjectBinder.java


注:本文中的lotus.domino.Stream.setContents方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。