You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by be...@apache.org on 2008/11/22 21:42:49 UTC
svn commit: r719914 - in
/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery:
collection/ handler/ management/
Author: berndf
Date: Sat Nov 22 12:42:48 2008
New Revision: 719914
URL: http://svn.apache.org/viewvc?rev=719914&view=rev
Log:
[vysper] LABS-228: more service disco feature: item req, respect node on query, error handling etc.
Added:
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ServiceDiscoveryRequestException.java
Modified:
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/collection/ServiceCollector.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/InfoRequest.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/InfoRequestListener.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/Item.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ItemRequestListener.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ServerInfoRequestListener.java
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/collection/ServiceCollector.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/collection/ServiceCollector.java?rev=719914&r1=719913&r2=719914&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/collection/ServiceCollector.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/collection/ServiceCollector.java Sat Nov 22 12:42:48 2008
@@ -49,7 +49,7 @@
/**
* collect all server feature and identity info from the listeners
*/
- public List<InfoElement> processServerInfoRequest(InfoRequest infoRequest) {
+ public List<InfoElement> processServerInfoRequest(InfoRequest infoRequest) throws ServiceDiscoveryRequestException {
// sorted structure, to place all <feature/> after <identity/>
List<InfoElement> elements = new ArrayList<InfoElement>();
elements.add(DEFAULT_FEATURE);
@@ -57,6 +57,8 @@
List<InfoElement> elementList = null;
try {
elementList = serverInfoRequestListener.getServerInfosFor(infoRequest);
+ } catch (ServiceDiscoveryRequestException abortion) {
+ throw abortion;
} catch (Throwable e) {
continue;
}
@@ -69,7 +71,7 @@
/**
* collect all non-server feature and identity info from the listeners
*/
- public List<InfoElement> processInfoRequest(InfoRequest infoRequest) {
+ public List<InfoElement> processInfoRequest(InfoRequest infoRequest) throws ServiceDiscoveryRequestException {
// sorted structure, to place all <feature/> after <identity/>
List<InfoElement> elements = new ArrayList<InfoElement>();
elements.add(DEFAULT_FEATURE);
@@ -77,6 +79,8 @@
List<InfoElement> elementList = null;
try {
elementList = infoRequestListener.getInfosFor(infoRequest);
+ } catch (ServiceDiscoveryRequestException abortion) {
+ throw abortion;
} catch (Throwable e) {
continue;
}
@@ -89,12 +93,14 @@
/**
* collect all item info from the listeners
*/
- public List<Item> processItemRequest(InfoRequest infoRequest) {
+ public List<Item> processItemRequest(InfoRequest infoRequest) throws ServiceDiscoveryRequestException {
List<Item> elements = new ArrayList<Item>();
for (ItemRequestListener itemRequestListener : itemRequestListeners) {
List<Item> elementList = null;
try {
elementList = itemRequestListener.getItemsFor(infoRequest);
+ } catch (ServiceDiscoveryRequestException abortion) {
+ throw abortion;
} catch (Throwable e) {
continue;
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java?rev=719914&r1=719913&r2=719914&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java Sat Nov 22 12:42:48 2008
@@ -17,23 +17,31 @@
package org.apache.vysper.xmpp.modules.servicediscovery.handler;
+import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.modules.core.base.handler.DefaultIQHandler;
import org.apache.vysper.xmpp.modules.servicediscovery.collection.ServiceCollector;
import org.apache.vysper.xmpp.modules.servicediscovery.collection.ServiceDiscoveryRequestListenerRegistry;
import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoElement;
import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoRequest;
+import org.apache.vysper.xmpp.modules.servicediscovery.management.ServiceDiscoveryRequestException;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.server.response.ServerErrorResponses;
-import org.apache.vysper.xmpp.stanza.*;
+import org.apache.vysper.xmpp.stanza.IQStanza;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.stanza.StanzaErrorCondition;
+import org.apache.vysper.xmpp.stanza.StanzaErrorType;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
- * handles roster get, set, push & result requests
+ * handles IQ info queries
*/
public class DiscoInfoIQHandler extends DefaultIQHandler {
@@ -45,9 +53,18 @@
}
@Override
+ protected boolean verifyInnerElement(Stanza stanza) {
+ return verifyInnerElementWorker(stanza, "query");
+ }
+
+ @Override
protected Stanza handleGet(IQStanza stanza, ServerRuntimeContext serverRuntimeContext, SessionContext sessionContext) {
ServiceCollector serviceCollector = null;
+ // TODO if the target entity does not exist, return error/cancel/item-not-found
+ // TODO more strictly, server can also return error/cancel/service-unaivable
+
+ // retrieve the service collector
try {
serviceCollector = (ServiceCollector)serverRuntimeContext.getServerRuntimeContextService(ServiceDiscoveryRequestListenerRegistry.SERVICE_DISCOVERY_REQUEST_LISTENER_REGISTRY);
} catch (Exception e) {
@@ -62,23 +79,50 @@
getErrorLanguage(serverRuntimeContext, sessionContext), null);
}
- boolean isServerInfoRequest = serverRuntimeContext.getServerEnitity().equals(stanza.getTo());
+ Entity to = stanza.getTo();
+ boolean isServerInfoRequest = false;
+ if (to == null) {
+ isServerInfoRequest = true; // this can only be meant to query the server
+ } else if (!to.isNodeSet()) {
+ isServerInfoRequest = serverRuntimeContext.getServerEnitity().equals(to);
+ if (!isServerInfoRequest) {
+ return ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.ITEM_NOT_FOUND, stanza,
+ StanzaErrorType.CANCEL,
+ "server does not handle info query requests for " + to.getFullQualifiedName(),
+ getErrorLanguage(serverRuntimeContext, sessionContext), null);
+ }
+ }
+
+ XMLElement queryElement = stanza.getFirstInnerElement();
+ String node = queryElement != null ? queryElement.getAttributeValue("node") : null;
// collect all the info response elements
List<InfoElement> elements = null;
- if (isServerInfoRequest) {
- elements = serviceCollector.processServerInfoRequest(new InfoRequest(stanza.getFrom(), stanza.getTo()));
- } else {
- elements = serviceCollector.processInfoRequest(new InfoRequest(stanza.getFrom(), stanza.getTo()));
+ try {
+ if (isServerInfoRequest) {
+ elements = serviceCollector.processServerInfoRequest(new InfoRequest(stanza.getFrom(), to, node));
+ } else {
+ elements = serviceCollector.processInfoRequest(new InfoRequest(stanza.getFrom(), to, node));
+ }
+ } catch (ServiceDiscoveryRequestException e) {
+ // the request yields an error
+ StanzaErrorCondition stanzaErrorCondition = e.getErrorCondition();
+ if (stanzaErrorCondition == null) stanzaErrorCondition = StanzaErrorCondition.INTERNAL_SERVER_ERROR;
+ return ServerErrorResponses.getInstance().getStanzaError(stanzaErrorCondition, stanza,
+ StanzaErrorType.CANCEL,
+ "disco info request failed.",
+ getErrorLanguage(serverRuntimeContext, sessionContext), null);
}
//TODO check that elementSet contains at least one identity element and on feature element!
// render the stanza with information collected
- StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(stanza.getTo(), stanza.getFrom(), IQStanzaType.RESULT, stanza.getID()).
+ StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(to, stanza.getFrom(), IQStanzaType.RESULT, stanza.getID()).
startInnerElement("query").
addNamespaceAttribute(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO);
-
+ if (node != null) {
+ stanzaBuilder.addAttribute("node", node);
+ }
for (InfoElement infoElement : elements) {
infoElement.insertElement(stanzaBuilder);
}
Added: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java?rev=719914&view=auto
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java (added)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java Sat Nov 22 12:42:48 2008
@@ -0,0 +1,124 @@
+/***********************************************************************
+ * Copyright (c) 2006-2007 The Apache Software Foundation. *
+ * All rights reserved. *
+ * ------------------------------------------------------------------- *
+ * 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.apache.vysper.xmpp.modules.servicediscovery.handler;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.core.base.handler.DefaultIQHandler;
+import org.apache.vysper.xmpp.modules.servicediscovery.collection.ServiceCollector;
+import org.apache.vysper.xmpp.modules.servicediscovery.collection.ServiceDiscoveryRequestListenerRegistry;
+import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoRequest;
+import org.apache.vysper.xmpp.modules.servicediscovery.management.Item;
+import org.apache.vysper.xmpp.modules.servicediscovery.management.ServiceDiscoveryRequestException;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
+import org.apache.vysper.xmpp.server.response.ServerErrorResponses;
+import org.apache.vysper.xmpp.stanza.IQStanza;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.stanza.StanzaErrorCondition;
+import org.apache.vysper.xmpp.stanza.StanzaErrorType;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+/**
+ * handles IQ info queries
+ */
+public class DiscoItemIQHandler extends DefaultIQHandler {
+
+ final Logger logger = LoggerFactory.getLogger(DiscoItemIQHandler.class);
+
+ @Override
+ protected boolean verifyNamespace(Stanza stanza) {
+ return verifyInnerNamespace(stanza, NamespaceURIs.XEP0030_SERVICE_DISCOVERY_ITEMS);
+ }
+
+ @Override
+ protected boolean verifyInnerElement(Stanza stanza) {
+ return verifyInnerElementWorker(stanza, "query");
+ }
+
+ @Override
+ protected Stanza handleGet(IQStanza stanza, ServerRuntimeContext serverRuntimeContext, SessionContext sessionContext) {
+ ServiceCollector serviceCollector = null;
+
+ // retrieve the service collector
+ try {
+ serviceCollector = (ServiceCollector)serverRuntimeContext.getServerRuntimeContextService(ServiceDiscoveryRequestListenerRegistry.SERVICE_DISCOVERY_REQUEST_LISTENER_REGISTRY);
+ } catch (Exception e) {
+ logger.error("error retrieving ServiceCollector service {}", e);
+ serviceCollector = null;
+ }
+
+ if (serviceCollector == null) {
+ return ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.INTERNAL_SERVER_ERROR, stanza,
+ StanzaErrorType.CANCEL,
+ "cannot retrieve IQ-get-info result from internal components",
+ getErrorLanguage(serverRuntimeContext, sessionContext), null);
+ }
+
+ Entity to = stanza.getTo();
+ boolean isServerInfoRequest = false;
+ if (to == null) {
+ isServerInfoRequest = true; // this can only be meant to query the server
+ } else if (!to.isNodeSet()) {
+ isServerInfoRequest = serverRuntimeContext.getServerEnitity().equals(to);
+ if (!isServerInfoRequest) {
+ return ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.ITEM_NOT_FOUND, stanza,
+ StanzaErrorType.CANCEL,
+ "server does not handle info query requests for " + to.getFullQualifiedName(),
+ getErrorLanguage(serverRuntimeContext, sessionContext), null);
+ }
+ }
+
+ XMLElement queryElement = stanza.getFirstInnerElement();
+ String node = queryElement != null ? queryElement.getAttributeValue("node") : null;
+
+ // collect all the item response elements
+ List<Item> items = null;
+ try {
+ items = serviceCollector.processItemRequest(new InfoRequest(stanza.getFrom(), stanza.getTo(), node));
+ } catch (ServiceDiscoveryRequestException e) {
+ // the request yields an error
+ StanzaErrorCondition stanzaErrorCondition = e.getErrorCondition();
+ if (stanzaErrorCondition == null) stanzaErrorCondition = StanzaErrorCondition.INTERNAL_SERVER_ERROR;
+ return ServerErrorResponses.getInstance().getStanzaError(stanzaErrorCondition, stanza,
+ StanzaErrorType.CANCEL,
+ "disco info request failed.",
+ getErrorLanguage(serverRuntimeContext, sessionContext), null);
+ }
+
+ // render the stanza with information collected
+ StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(to, stanza.getFrom(), IQStanzaType.RESULT, stanza.getID()).
+ startInnerElement("query").
+ addNamespaceAttribute(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_ITEMS);
+ if (node != null) {
+ stanzaBuilder.addAttribute("node", node);
+ }
+ for (Item item : items) {
+ item.insertElement(stanzaBuilder);
+ }
+ stanzaBuilder.endInnerElement();
+
+ return stanzaBuilder.getFinalStanza();
+ }
+}
\ No newline at end of file
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/InfoRequest.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/InfoRequest.java?rev=719914&r1=719913&r2=719914&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/InfoRequest.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/InfoRequest.java Sat Nov 22 12:42:48 2008
@@ -24,10 +24,12 @@
private Entity from;
private Entity to;
+ private String node = null;
- public InfoRequest(Entity from, Entity to) {
+ public InfoRequest(Entity from, Entity to, String node) {
this.from = from;
this.to = to;
+ this.node = node;
}
public Entity getFrom() {
@@ -37,4 +39,8 @@
public Entity getTo() {
return to;
}
+
+ public String getNode() {
+ return node;
+ }
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/InfoRequestListener.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/InfoRequestListener.java?rev=719914&r1=719913&r2=719914&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/InfoRequestListener.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/InfoRequestListener.java Sat Nov 22 12:42:48 2008
@@ -23,6 +23,6 @@
*/
public interface InfoRequestListener {
- public List<InfoElement> getInfosFor(InfoRequest request);
+ public List<InfoElement> getInfosFor(InfoRequest request) throws ServiceDiscoveryRequestException;
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/Item.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/Item.java?rev=719914&r1=719913&r2=719914&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/Item.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/Item.java Sat Nov 22 12:42:48 2008
@@ -17,6 +17,7 @@
package org.apache.vysper.xmpp.modules.servicediscovery.management;
import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
/**
*/
@@ -27,6 +28,7 @@
protected String node; // optional
public Item(Entity jid, String name, String node) {
+ if (jid == null) throw new IllegalArgumentException("jid may not be null");
this.jid = jid;
this.name = name;
this.node = node;
@@ -47,4 +49,12 @@
public String getNode() {
return node;
}
+
+ public void insertElement(StanzaBuilder stanzaBuilder) {
+ stanzaBuilder.startInnerElement("item");
+ if (jid != null) stanzaBuilder.addAttribute("jid", jid.getFullQualifiedName());
+ if (name != null) stanzaBuilder.addAttribute("name", name);
+ if (node != null) stanzaBuilder.addAttribute("node", node);
+ stanzaBuilder.endInnerElement();
+ }
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ItemRequestListener.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ItemRequestListener.java?rev=719914&r1=719913&r2=719914&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ItemRequestListener.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ItemRequestListener.java Sat Nov 22 12:42:48 2008
@@ -24,6 +24,6 @@
*/
public interface ItemRequestListener {
- public List<Item> getItemsFor(InfoRequest request);
+ public List<Item> getItemsFor(InfoRequest request) throws ServiceDiscoveryRequestException;
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ServerInfoRequestListener.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ServerInfoRequestListener.java?rev=719914&r1=719913&r2=719914&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ServerInfoRequestListener.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ServerInfoRequestListener.java Sat Nov 22 12:42:48 2008
@@ -23,6 +23,6 @@
*/
public interface ServerInfoRequestListener {
- public List<InfoElement> getServerInfosFor(InfoRequest request);
+ public List<InfoElement> getServerInfosFor(InfoRequest request) throws ServiceDiscoveryRequestException;
}
\ No newline at end of file
Added: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ServiceDiscoveryRequestException.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ServiceDiscoveryRequestException.java?rev=719914&view=auto
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ServiceDiscoveryRequestException.java (added)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/management/ServiceDiscoveryRequestException.java Sat Nov 22 12:42:48 2008
@@ -0,0 +1,43 @@
+/***********************************************************************
+ * Copyright (c) 2006-2007 The Apache Software Foundation. *
+ * All rights reserved. *
+ * ------------------------------------------------------------------- *
+ * 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.apache.vysper.xmpp.modules.servicediscovery.management;
+
+import org.apache.vysper.xmpp.stanza.StanzaErrorCondition;
+
+/**
+ */
+public class ServiceDiscoveryRequestException extends Exception {
+
+ private StanzaErrorCondition errorCondition;
+
+ public ServiceDiscoveryRequestException(String s) {
+ super(s);
+ }
+
+ public ServiceDiscoveryRequestException(StanzaErrorCondition errorCondition) {
+ this.errorCondition = errorCondition;
+ }
+
+ public ServiceDiscoveryRequestException(StanzaErrorCondition errorCondition, Throwable throwable) {
+ super(throwable);
+ this.errorCondition = errorCondition;
+ }
+
+ public StanzaErrorCondition getErrorCondition() {
+ return errorCondition;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org