mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2025-09-09 18:29:45 +02:00
Add (IQ|PacketExtension)IntrospectionProvider
This simplifies code as there is no longer a distinction between "normal" providers and introspection providers in ProviderManager necessary. It's also easier to get an idea where introspection is used for parsing.
This commit is contained in:
parent
00f5008794
commit
77f0fdc156
11 changed files with 284 additions and 212 deletions
|
@ -0,0 +1,28 @@
|
|||
/**
|
||||
*
|
||||
* Copyright © 2014 Florian Schmaus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.jivesoftware.smackx.time.provider;
|
||||
|
||||
import org.jivesoftware.smack.provider.IntrospectionProvider.IQIntrospectionProvider;
|
||||
import org.jivesoftware.smackx.time.packet.Time;
|
||||
|
||||
public class TimeProvider extends IQIntrospectionProvider<Time> {
|
||||
|
||||
public TimeProvider() {
|
||||
super(Time.class);
|
||||
}
|
||||
|
||||
}
|
|
@ -13,7 +13,7 @@
|
|||
<iqProvider>
|
||||
<elementName>time</elementName>
|
||||
<namespace>urn:xmpp:time</namespace>
|
||||
<className>org.jivesoftware.smackx.time.packet.Time</className>
|
||||
<className>org.jivesoftware.smackx.time.provider.TimeProvider</className>
|
||||
</iqProvider>
|
||||
|
||||
<!-- Chat State -->
|
||||
|
|
|
@ -17,14 +17,11 @@
|
|||
package org.jivesoftware.smackx.time.packet;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import org.jivesoftware.smack.packet.IQ;
|
||||
import org.jivesoftware.smack.util.PacketParserUtils;
|
||||
import org.jivesoftware.smackx.InitExtensions;
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -58,37 +55,4 @@ public class TimeTest extends InitExtensions {
|
|||
|
||||
assertEquals("+8:30", time.getTzo());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parseTimeWithIntrospectionTest() throws Exception {
|
||||
// @formatter:off
|
||||
final String request =
|
||||
"<iq type='get'"
|
||||
+ "from='romeo@montague.net/orchard'"
|
||||
+ "to='juliet@capulet.com/balcony'"
|
||||
+ "id='time_1'>"
|
||||
+ "<time xmlns='urn:xmpp:time'/>"
|
||||
+ "</iq>";
|
||||
// @formatter:on
|
||||
IQ iqRequest = (IQ) PacketParserUtils.parseStanza(request);
|
||||
assertTrue(iqRequest instanceof Time);
|
||||
|
||||
// @formatter:off
|
||||
final String response =
|
||||
"<iq type='result'"
|
||||
+ "from='juliet@capulet.com/balcony'"
|
||||
+ "to='romeo@montague.net/orchard'"
|
||||
+ "id='time_1'>"
|
||||
+ "<time xmlns='urn:xmpp:time'>"
|
||||
+ "<tzo>-06:00</tzo>"
|
||||
+ "<utc>2006-12-19T17:58:35Z</utc>"
|
||||
+ "</time>"
|
||||
+ "</iq>";
|
||||
// @formatter:on
|
||||
IQ iqResponse = (IQ) PacketParserUtils.parseStanza(response);
|
||||
assertTrue(iqResponse instanceof Time);
|
||||
Time time = (Time) iqResponse;
|
||||
assertEquals("-06:00", time.getTzo());
|
||||
assertEquals("2006-12-19T17:58:35Z", time.getUtc());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2014 Florian Schmaus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.jivesoftware.smackx.time.provider;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.jivesoftware.smack.packet.IQ;
|
||||
import org.jivesoftware.smack.util.PacketParserUtils;
|
||||
import org.jivesoftware.smackx.time.packet.Time;
|
||||
import org.junit.Test;
|
||||
|
||||
public class TimeProviderTest {
|
||||
|
||||
@Test
|
||||
public void parseTimeWithIntrospectionTest() throws Exception {
|
||||
// @formatter:off
|
||||
final String request =
|
||||
"<iq type='get'"
|
||||
+ "from='romeo@montague.net/orchard'"
|
||||
+ "to='juliet@capulet.com/balcony'"
|
||||
+ "id='time_1'>"
|
||||
+ "<time xmlns='urn:xmpp:time'/>"
|
||||
+ "</iq>";
|
||||
// @formatter:on
|
||||
IQ iqRequest = (IQ) PacketParserUtils.parseStanza(request);
|
||||
assertTrue(iqRequest instanceof Time);
|
||||
|
||||
// @formatter:off
|
||||
final String response =
|
||||
"<iq type='result'"
|
||||
+ "from='juliet@capulet.com/balcony'"
|
||||
+ "to='romeo@montague.net/orchard'"
|
||||
+ "id='time_1'>"
|
||||
+ "<time xmlns='urn:xmpp:time'>"
|
||||
+ "<tzo>-06:00</tzo>"
|
||||
+ "<utc>2006-12-19T17:58:35Z</utc>"
|
||||
+ "</time>"
|
||||
+ "</iq>";
|
||||
// @formatter:on
|
||||
IQ iqResponse = (IQ) PacketParserUtils.parseStanza(response);
|
||||
assertTrue(iqResponse instanceof Time);
|
||||
Time time = (Time) iqResponse;
|
||||
assertEquals("-06:00", time.getTzo());
|
||||
assertEquals("2006-12-19T17:58:35Z", time.getUtc());
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue