📄 streaminitiationprovider.java
字号:
package com.valhalla.jbother.jabber.smack.provider;import com.valhalla.jbother.jabber.smack.*;import org.jivesoftware.smack.provider.IQProvider;import org.jivesoftware.smack.packet.IQ;import org.jivesoftware.smackx.packet.DataForm;import org.xmlpull.v1.XmlPullParser;import com.valhalla.jbother.jabber.smack.*;import org.jivesoftware.smackx.provider.*;/** * Created by luke on Feb 10, 2005 3:11:38 PM *//** * Implementation of provider class for StreamInitiation objects. * It will parse XML code for <si> messages and return StreamInitiation object. */public class StreamInitiationProvider implements IQProvider{ private static String fId = "$Id$"; public StreamInitiationProvider() { } public IQ parseIQ(XmlPullParser parser) throws Exception { StreamInitiation si = new StreamInitiation(); boolean done = false; String fileName = ""; long fileSize = -1; String fileHash = null; String description = ""; String featureNS = ""; StreamInitiation.Feature feature = null; String profile = profile = parser.getAttributeValue("","profile"); String id = parser.getAttributeValue("","id"); while (!done) { int eventType = parser.next(); String elementName = parser.getName(); String namespace = parser.getNamespace(); if (eventType == XmlPullParser.START_TAG) { if (elementName.equals("file")) { fileSize = Long.parseLong(parser.getAttributeValue("","size")); fileName = parser.getAttributeValue("","name"); fileHash = parser.getAttributeValue("","hash"); } else if (elementName.equals("desc")) { int eType = parser.next(); if( eType == XmlPullParser.END_TAG ) { description = ""; } else { description = parser.getText(); // @todo there is probably better way to do it... if(description.equals("<desc/>")) { description=""; } } } else if (elementName.equals("feature")) { featureNS = parser.getNamespace(); } else if (elementName.equals("x") && namespace.equals("jabber:x:data")) { DataFormProvider dataFormProvider = new DataFormProvider(); DataForm dataForm = (DataForm)dataFormProvider.parseExtension(parser); feature = new StreamInitiation.Feature(dataForm.getType()); feature.setDataForm(dataForm); } } else if (eventType == XmlPullParser.END_TAG && elementName.equals("si")) { done = true; } } if( fileName.length() > 0 && fileSize > -1 ) { StreamInitiation.FileDetails fd = new StreamInitiation.FileDetails(fileName); fd.setFileSize(fileSize); fd.setDescription(description); fd.setHash(fileHash); si.setFileDetails(fd); } si.setFeature(feature); si.setId(id); return si; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -