diff --git a/documentation/extensions/index.md b/documentation/extensions/index.md index 325fcf30a..05ffa0b5c 100644 --- a/documentation/extensions/index.md +++ b/documentation/extensions/index.md @@ -87,6 +87,7 @@ Experimental Smack Extensions and currently supported XEPs of smack-experimental | [Internet of Things - Control](iot.md) | [XEP-0325](http://xmpp.org/extensions/xep-0325.html) | Describes how to control devices or actuators in an XMPP-based sensor netowrk. | | [HTTP over XMPP transport](hoxt.md) | [XEP-0332](http://xmpp.org/extensions/xep-0332.html) | Allows to transport HTTP communication over XMPP peer-to-peer networks. | | Chat Markers | [XEP-0333](http://xmpp.org/extensions/xep-0333.html) | A solution of marking the last received, displayed and acknowledged message in a chat. | +| Message Processing Hints | [XEP-0334](http://xmpp.org/extensions/xep-0334.html) | Hints to entities routing or receiving a message. | | JSON Containers | [XEP-0335](http://xmpp.org/extensions/xep-0335.html) | Encapsulation of JSON data within XMPP Stanzas. | | [Internet of Things - Discovery](iot.md) | [XEP-0347](http://xmpp.org/extensions/xep-0347.html) | Describes how Things can be installed and discovered by their owners. | | Client State Indication | [XEP-0352](http://xmpp.org/extensions/xep-0352.html) | A way for the client to indicate its active/inactive state. | diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/MessageProcessingHintsManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/MessageProcessingHintsManager.java new file mode 100644 index 000000000..4f0e20522 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/MessageProcessingHintsManager.java @@ -0,0 +1,71 @@ +/** + * + * Copyright 2017 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.hints; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +import org.jivesoftware.smack.packet.Message; +import org.jivesoftware.smackx.hints.element.MessageProcessingHintType; +import org.jivesoftware.smackx.hints.element.NoCopyHint; +import org.jivesoftware.smackx.hints.element.NoPermanentStoreHint; +import org.jivesoftware.smackx.hints.element.NoStoreHint; +import org.jivesoftware.smackx.hints.element.StoreHint; + +public class MessageProcessingHintsManager { + + public static Set getHintsFrom(Message message) { + Set hints = null; + + boolean noCopyHint = NoCopyHint.hasHint(message); + if (noCopyHint) { + hints = new HashSet<>(MessageProcessingHintType.values().length); + hints.add(MessageProcessingHintType.no_copy); + } + + boolean noPermanentStoreHint = NoPermanentStoreHint.hasHint(message); + if (noPermanentStoreHint) { + if (hints == null) { + hints = new HashSet<>(MessageProcessingHintType.values().length); + } + hints.add(MessageProcessingHintType.no_permanent_store); + } + + boolean noStoreHint = NoStoreHint.hasHint(message); + if (noStoreHint) { + if (hints == null) { + hints = new HashSet<>(MessageProcessingHintType.values().length); + } + hints.add(MessageProcessingHintType.no_store); + } + + boolean storeHint = StoreHint.hasHint(message); + if (storeHint) { + if (hints == null) { + hints = new HashSet<>(MessageProcessingHintType.values().length); + } + hints.add(MessageProcessingHintType.store); + } + + if (hints == null) { + return Collections.emptySet(); + } + + return hints; + } +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/MessageProcessingHint.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/MessageProcessingHint.java new file mode 100644 index 000000000..3ea9dc487 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/MessageProcessingHint.java @@ -0,0 +1,32 @@ +/** + * + * Copyright 2017 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.hints.element; + +import org.jivesoftware.smack.packet.ExtensionElement; + +public abstract class MessageProcessingHint implements ExtensionElement { + + public static final String NAMESPACE = "urn:xmpp:hints"; + + @Override + public final String getNamespace() { + return NAMESPACE; + } + + public abstract MessageProcessingHintType getHintType(); + +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/MessageProcessingHintType.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/MessageProcessingHintType.java new file mode 100644 index 000000000..a89bc56b5 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/MessageProcessingHintType.java @@ -0,0 +1,27 @@ +/** + * + * Copyright 2017 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.hints.element; + +public enum MessageProcessingHintType { + + no_permanent_store, + no_store, + no_copy, + store, + ; + +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/NoCopyHint.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/NoCopyHint.java new file mode 100644 index 000000000..b726b2be2 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/NoCopyHint.java @@ -0,0 +1,61 @@ +/** + * + * Copyright 2017 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.hints.element; + +import org.jivesoftware.smack.packet.Message; + +/** + * A "no copy" hint. Messages with this hint should not be copied to addresses other than the one to which it is addressed. + * + * @see XEP-0344 § 4.3 No copies + */ +public final class NoCopyHint extends MessageProcessingHint { + + public static final NoCopyHint INSTANCE = new NoCopyHint(); + + public static final String ELEMENT = "no-copy"; + + private NoCopyHint() { + } + + @Override + public String getElementName() { + return ELEMENT; + } + + @Override + public String toXML() { + return '<' + ELEMENT + " xmlns='" + NAMESPACE + "'/>"; + } + + @Override + public MessageProcessingHintType getHintType() { + return MessageProcessingHintType.no_copy; + } + + public static NoCopyHint from(Message message) { + return message.getExtension(ELEMENT, NAMESPACE); + } + + public static boolean hasHint(Message message) { + return from(message) != null; + } + + public static void set(Message message) { + message.addExtension(INSTANCE); + } +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/NoPermanentStoreHint.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/NoPermanentStoreHint.java new file mode 100644 index 000000000..d52ed693b --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/NoPermanentStoreHint.java @@ -0,0 +1,69 @@ +/** + * + * Copyright 2017 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.hints.element; + +import org.jivesoftware.smack.packet.Message; + +/** + * A "no permanent store" hint. Messages with this hint should not be stored in permanent stores or archives. + * + * @see XEP-0334 § 4.1 No permanent store + */ +public final class NoPermanentStoreHint extends MessageProcessingHint { + + public static final NoPermanentStoreHint INSTANCE = new NoPermanentStoreHint(); + + public static final String ELEMENT = "no-permanent-store"; + + private NoPermanentStoreHint() { + } + + @Override + public String getElementName() { + return ELEMENT; + } + + @Override + public String toXML() { + return '<' + ELEMENT + " xmlns='" + NAMESPACE + "'/>"; + } + + @Override + public MessageProcessingHintType getHintType() { + return MessageProcessingHintType.no_permanent_store; + } + + public static NoPermanentStoreHint from(Message message) { + return message.getExtension(ELEMENT, NAMESPACE); + } + + public static boolean hasHint(Message message) { + return from(message) != null; + } + + public static void set(Message message) { + if (StoreHint.hasHint(message)) { + // No need to set the no-permanent-store hint when a no-store hint is already set. + return; + } + setExplicitly(message); + } + + public static void setExplicitly(Message message) { + message.addExtension(INSTANCE); + } +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/NoStoreHint.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/NoStoreHint.java new file mode 100644 index 000000000..1651dde18 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/NoStoreHint.java @@ -0,0 +1,61 @@ +/** + * + * Copyright 2017 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.hints.element; + +import org.jivesoftware.smack.packet.Message; + +/** + * A "no store" hint. Messages with this hint should not be stored in stores or archives. + * + * XEP-0334 § 4.2 No store + */ +public final class NoStoreHint extends MessageProcessingHint { + + public static final NoStoreHint INSTANCE = new NoStoreHint(); + + public static final String ELEMENT = "no-store"; + + private NoStoreHint() { + } + + @Override + public String getElementName() { + return ELEMENT; + } + + @Override + public String toXML() { + return '<' + ELEMENT + " xmlns='" + NAMESPACE + "'/>"; + } + + @Override + public MessageProcessingHintType getHintType() { + return MessageProcessingHintType.no_store; + } + + public static NoStoreHint from(Message message) { + return message.getExtension(ELEMENT, NAMESPACE); + } + + public static boolean hasHint(Message message) { + return from(message) != null; + } + + public static void set(Message message) { + message.addExtension(INSTANCE); + } +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/StoreHint.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/StoreHint.java new file mode 100644 index 000000000..bfb52f541 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/StoreHint.java @@ -0,0 +1,61 @@ +/** + * + * Copyright 2017 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.hints.element; + +import org.jivesoftware.smack.packet.Message; + +/** + * A "store" hint. Messages with this hint should be stored in permanent stores or archives. + * + * @see XEP-0334 § 4.4 Store + */ +public final class StoreHint extends MessageProcessingHint { + + public static final StoreHint INSTANCE = new StoreHint(); + + public static final String ELEMENT = "no-store"; + + private StoreHint() { + } + + @Override + public String getElementName() { + return ELEMENT; + } + + @Override + public String toXML() { + return '<' + ELEMENT + " xmlns='" + NAMESPACE + "'/>"; + } + + @Override + public MessageProcessingHintType getHintType() { + return MessageProcessingHintType.store; + } + + public static StoreHint from(Message message) { + return message.getExtension(ELEMENT, NAMESPACE); + } + + public static boolean hasHint(Message message) { + return from(message) != null; + } + + public static void set(Message message) { + message.addExtension(INSTANCE); + } +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/package-info.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/package-info.java new file mode 100644 index 000000000..f2a9eff0d --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/element/package-info.java @@ -0,0 +1,20 @@ +/** + * + * Copyright 2017 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. + */ +/** + * XMPP extension elements for XEP-0334: Message Processing Hints. + */ +package org.jivesoftware.smackx.hints.element; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/package-info.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/package-info.java new file mode 100644 index 000000000..33d49eaae --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/package-info.java @@ -0,0 +1,20 @@ +/** + * + * Copyright 2017 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. + */ +/** + * Smack's API for XEP-0334: Message Processing Hints. + */ +package org.jivesoftware.smackx.hints; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/MessageProcessingHintProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/MessageProcessingHintProvider.java new file mode 100644 index 000000000..0918bcd56 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/MessageProcessingHintProvider.java @@ -0,0 +1,31 @@ +/** + * + * Copyright 2017 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.hints.provider; + +import org.jivesoftware.smack.provider.ExtensionElementProvider; +import org.jivesoftware.smackx.hints.element.MessageProcessingHint; +import org.xmlpull.v1.XmlPullParser; + +public abstract class MessageProcessingHintProvider extends ExtensionElementProvider { + + @Override + public H parse(XmlPullParser parser, int initialDepth) throws Exception { + return getHint(); + } + + protected abstract H getHint(); +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/NoCopyHintProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/NoCopyHintProvider.java new file mode 100644 index 000000000..1cabaaf20 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/NoCopyHintProvider.java @@ -0,0 +1,28 @@ +/** + * + * Copyright 2017 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.hints.provider; + +import org.jivesoftware.smackx.hints.element.NoCopyHint; + +public class NoCopyHintProvider extends MessageProcessingHintProvider { + + @Override + protected NoCopyHint getHint() { + return NoCopyHint.INSTANCE; + } + +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/NoPermanentStoreHintProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/NoPermanentStoreHintProvider.java new file mode 100644 index 000000000..8d81cede8 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/NoPermanentStoreHintProvider.java @@ -0,0 +1,28 @@ +/** + * + * Copyright 2017 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.hints.provider; + +import org.jivesoftware.smackx.hints.element.NoPermanentStoreHint; + +public class NoPermanentStoreHintProvider extends MessageProcessingHintProvider { + + @Override + protected NoPermanentStoreHint getHint() { + return NoPermanentStoreHint.INSTANCE; + } + +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/NoStoreHintProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/NoStoreHintProvider.java new file mode 100644 index 000000000..343f9b1bb --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/NoStoreHintProvider.java @@ -0,0 +1,28 @@ +/** + * + * Copyright 2017 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.hints.provider; + +import org.jivesoftware.smackx.hints.element.NoStoreHint; + +public class NoStoreHintProvider extends MessageProcessingHintProvider { + + @Override + protected NoStoreHint getHint() { + return NoStoreHint.INSTANCE; + } + +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/StoreHintProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/StoreHintProvider.java new file mode 100644 index 000000000..cd7889c59 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/StoreHintProvider.java @@ -0,0 +1,28 @@ +/** + * + * Copyright 2017 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.hints.provider; + +import org.jivesoftware.smackx.hints.element.StoreHint; + +public class StoreHintProvider extends MessageProcessingHintProvider { + + @Override + protected StoreHint getHint() { + return StoreHint.INSTANCE; + } + +} diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/package-info.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/package-info.java new file mode 100644 index 000000000..c508930b1 --- /dev/null +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hints/provider/package-info.java @@ -0,0 +1,20 @@ +/** + * + * Copyright 2017 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. + */ +/** + * Smack Provider for XEP-0334: Message Processing Hints. + */ +package org.jivesoftware.smackx.hints.provider; diff --git a/smack-experimental/src/main/resources/org.jivesoftware.smack.experimental/experimental.providers b/smack-experimental/src/main/resources/org.jivesoftware.smack.experimental/experimental.providers index 20ed6cd25..2598dceea 100644 --- a/smack-experimental/src/main/resources/org.jivesoftware.smack.experimental/experimental.providers +++ b/smack-experimental/src/main/resources/org.jivesoftware.smack.experimental/experimental.providers @@ -233,6 +233,28 @@ org.jivesoftware.smackx.chat_markers.provider.AcknowledgedProvider + + + no-copy + urn:xmpp:hints + org.jivesoftware.smackx.hints.provider.NoCopyHintProvider + + + no-permanent-store + urn:xmpp:hints + org.jivesoftware.smackx.hints.provider.NoPermanentStoreHintProvider + + + no-store + urn:xmpp:hints + org.jivesoftware.smackx.hints.provider.NoStoreHintProvider + + + store + urn:xmpp:hints + org.jivesoftware.smackx.hints.provider.StoreHintProvider + +g slot