parser works but some stuff still needs some refactoring
This commit is contained in:
		
							parent
							
								
									6c5c3ac2de
								
							
						
					
					
						commit
						c3e4f0eaac
					
				| @ -50,6 +50,7 @@ public class XmlReader { | ||||
| 			//Log.d(LOGTAG,"there was a wake lock. releasing it till next event"); | ||||
| 			wakeLock.release(); //release wake look while waiting on next parser event | ||||
| 		} | ||||
| 		//Log.d(LOGTAG,"waiting for new event..."); | ||||
| 		while(parser.next() != XmlPullParser.END_DOCUMENT) { | ||||
| 				//Log.d(LOGTAG,"found new event. acquiring wake lock"); | ||||
| 				wakeLock.acquire(); | ||||
| @ -75,17 +76,21 @@ public class XmlReader { | ||||
| 
 | ||||
| 	public Element readElement(Tag currentTag) throws XmlPullParserException, IOException { | ||||
| 		Element element = new Element(currentTag.getName()); | ||||
| 		//Log.d(LOGTAG,"trying to read element "+element.getName()); | ||||
| 		element.setAttributes(currentTag.getAttributes()); | ||||
| 		Tag nextTag = this.readTag(); | ||||
| 		//Log.d(LOGTAG,"next Tag is: "+nextTag.toString()); | ||||
| 		if(nextTag.isNo()) { | ||||
| 			element.setContent(nextTag.getName()); | ||||
| 			nextTag = this.readTag(); | ||||
| 		} | ||||
| 		//Log.d(LOGTAG,"reading till the end of "+element.getName()); | ||||
| 		while(!nextTag.isEnd(element.getName())) { | ||||
| 			Element child = this.readElement(nextTag); | ||||
| 			element.addChild(child); | ||||
| 			nextTag = this.readTag(); | ||||
| 		} | ||||
| 		//Log.d(LOGTAG,"return with element"+element); | ||||
| 		return element; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @ -6,6 +6,7 @@ public class IqPacket extends Element { | ||||
| 	 | ||||
| 	public static final int TYPE_SET = 0; | ||||
| 	public static final int TYPE_RESULT = 1; | ||||
| 	public static final int TYPE_GET = 2; | ||||
| 
 | ||||
| 	private IqPacket(String name) { | ||||
| 		super(name); | ||||
| @ -18,9 +19,19 @@ public class IqPacket extends Element { | ||||
| 		case TYPE_SET: | ||||
| 			this.setAttribute("type", "set"); | ||||
| 			break; | ||||
| 		case TYPE_GET: | ||||
| 			this.setAttribute("type", "get"); | ||||
| 			break; | ||||
| 		case TYPE_RESULT: | ||||
| 			this.setAttribute("type", "result"); | ||||
| 			break; | ||||
| 		default: | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	public IqPacket() { | ||||
| 		super("iq"); | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
|  | ||||
							
								
								
									
										13
									
								
								src/de/gultsch/chat/xmpp/MessagePacket.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/de/gultsch/chat/xmpp/MessagePacket.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| package de.gultsch.chat.xmpp; | ||||
| 
 | ||||
| import de.gultsch.chat.xml.Element; | ||||
| 
 | ||||
| public class MessagePacket extends Element { | ||||
| 	private MessagePacket(String name) { | ||||
| 		super(name); | ||||
| 	} | ||||
| 	 | ||||
| 	public MessagePacket() { | ||||
| 		super("message"); | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										13
									
								
								src/de/gultsch/chat/xmpp/PresencePacket.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/de/gultsch/chat/xmpp/PresencePacket.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| package de.gultsch.chat.xmpp; | ||||
| 
 | ||||
| import de.gultsch.chat.xml.Element; | ||||
| 
 | ||||
| public class PresencePacket extends Element { | ||||
| 	private PresencePacket(String name) { | ||||
| 		super("presence"); | ||||
| 	} | ||||
| 	 | ||||
| 	public PresencePacket() { | ||||
| 		super("presence"); | ||||
| 	} | ||||
| } | ||||
| @ -35,8 +35,12 @@ public class XmppConnection implements Runnable { | ||||
| 	private XmlReader tagReader; | ||||
| 	private TagWriter tagWriter; | ||||
| 
 | ||||
| 	private boolean isTlsEncrypted = false; | ||||
| 	private boolean isTlsEncrypted = true; | ||||
| 	private boolean isAuthenticated = false; | ||||
| 	 | ||||
| 	private static final int PACKET_IQ = 0; | ||||
| 	private static final int PACKET_MESSAGE = 1; | ||||
| 	private static final int PACKET_PRESENCE = 2; | ||||
| 
 | ||||
| 	public XmppConnection(Account account, PowerManager pm) { | ||||
| 		this.account = account; | ||||
| @ -112,7 +116,11 @@ public class XmppConnection implements Runnable { | ||||
| 				sendStartStream(); | ||||
| 				processStream(tagReader.readTag()); | ||||
| 			} else if (nextTag.isStart("iq")) { | ||||
| 				processIq(nextTag); | ||||
| 				Log.d(LOGTAG,processIq(nextTag).toString()); | ||||
| 			} else if (nextTag.isStart("message")) { | ||||
| 				Log.d(LOGTAG,processMessage(nextTag).toString()); | ||||
| 			} else if (nextTag.isStart("presence")) { | ||||
| 				Log.d(LOGTAG,processPresence(nextTag).toString()); | ||||
| 			} else if (nextTag.isEnd("stream")) { | ||||
| 				break; | ||||
| 			} else { | ||||
| @ -121,20 +129,45 @@ public class XmppConnection implements Runnable { | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	private void processIq(Tag currentTag) throws XmlPullParserException, IOException { | ||||
| 		int typ = -1; | ||||
| 		if (currentTag.getAttribute("type").equals("result")) { | ||||
| 			typ = IqPacket.TYPE_RESULT; | ||||
| 	 | ||||
| 	private Element processPacket(Tag currentTag, int packetType) throws XmlPullParserException, IOException { | ||||
| 		Element element; | ||||
| 		switch (packetType) { | ||||
| 		case PACKET_IQ: | ||||
| 			element = new IqPacket(); | ||||
| 			break; | ||||
| 		case PACKET_MESSAGE: | ||||
| 			element = new MessagePacket(); | ||||
| 			break; | ||||
| 		case PACKET_PRESENCE: | ||||
| 			element = new PresencePacket(); | ||||
| 			break; | ||||
| 		default: | ||||
| 			return null; | ||||
| 		} | ||||
| 		IqPacket iq = new IqPacket(currentTag.getAttribute("id"),typ); | ||||
| 		element.setAttributes(currentTag.getAttributes()); | ||||
| 		Tag nextTag = tagReader.readTag(); | ||||
| 		while(!nextTag.isEnd("iq")) { | ||||
| 			Element element = tagReader.readElement(nextTag); | ||||
| 			iq.addChild(element); | ||||
| 		while(!nextTag.isEnd(element.getName())) { | ||||
| 			if (!nextTag.isNo()) { | ||||
| 				Element child = tagReader.readElement(nextTag); | ||||
| 				element.addChild(child); | ||||
| 			} | ||||
| 			nextTag = tagReader.readTag(); | ||||
| 		} | ||||
| 		Log.d(LOGTAG,"this is what i understood: "+iq.toString()); | ||||
| 		return element; | ||||
| 	} | ||||
| 	 | ||||
| 
 | ||||
| 	private IqPacket processIq(Tag currentTag) throws XmlPullParserException, IOException { | ||||
| 		return (IqPacket) processPacket(currentTag,PACKET_IQ); | ||||
| 	} | ||||
| 	 | ||||
| 	private MessagePacket processMessage(Tag currentTag) throws XmlPullParserException, IOException { | ||||
| 		return (MessagePacket) processPacket(currentTag, PACKET_MESSAGE); | ||||
| 	} | ||||
| 	 | ||||
| 	private PresencePacket processPresence(Tag currentTag) throws XmlPullParserException, IOException { | ||||
| 		return (PresencePacket) processPacket(currentTag, PACKET_PRESENCE); | ||||
| 	} | ||||
| 
 | ||||
| 	private void sendStartTLS() throws XmlPullParserException, IOException { | ||||
| @ -188,7 +221,8 @@ public class XmppConnection implements Runnable { | ||||
| 			Element element = tagReader.readElement(nextTag); | ||||
| 			streamFeatures.addChild(element); | ||||
| 			nextTag = tagReader.readTag(); | ||||
| 		}	 | ||||
| 		} | ||||
| 		Log.d(LOGTAG,streamFeatures.toString()); | ||||
| 	} | ||||
| 
 | ||||
| 	private void sendBindRequest() throws IOException { | ||||
| @ -196,9 +230,29 @@ public class XmppConnection implements Runnable { | ||||
| 		Element bind = new Element("bind"); | ||||
| 		bind.setAttribute("xmlns","urn:ietf:params:xml:ns:xmpp-bind"); | ||||
| 		iq.addChild(bind); | ||||
| 		//Element resource = new Element("resource"); | ||||
| 		//resource.setContent("mobile"); | ||||
| 		//bind.addChild(resource); | ||||
| 		Log.d(LOGTAG,"sending bind request: "+iq.toString()); | ||||
| 		tagWriter.writeElement(iq); | ||||
| 		tagWriter.flush(); | ||||
| 		 | ||||
| 		 | ||||
| 		//technically not bind stuff | ||||
| 		IqPacket startSession = new IqPacket(this.nextRandomId(), IqPacket.TYPE_SET); | ||||
| 		Element session = new Element("session"); | ||||
| 		session.setAttribute("xmlns","urn:ietf:params:xml:ns:xmpp-session"); | ||||
| 		session.setContent(""); | ||||
| 		startSession.addChild(session); | ||||
| 		 | ||||
| 		tagWriter.writeElement(startSession); | ||||
| 		tagWriter.flush(); | ||||
| 		 | ||||
| 		Element presence = new Element("presence"); | ||||
| 		 | ||||
| 		tagWriter.writeElement(presence); | ||||
| 		tagWriter.flush(); | ||||
| 		 | ||||
| 	} | ||||
| 
 | ||||
| 	private void processStreamError(Tag currentTag) { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch