Return-Path: X-Original-To: apmail-camel-commits-archive@www.apache.org Delivered-To: apmail-camel-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 70391188BF for ; Tue, 16 Jun 2015 09:13:08 +0000 (UTC) Received: (qmail 76030 invoked by uid 500); 16 Jun 2015 09:13:03 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 75983 invoked by uid 500); 16 Jun 2015 09:13:03 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 75974 invoked by uid 99); 16 Jun 2015 09:13:03 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 16 Jun 2015 09:13:03 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 3A8C4DFB90; Tue, 16 Jun 2015 09:13:03 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: davsclaus@apache.org To: commits@camel.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: camel git commit: Component docs Date: Tue, 16 Jun 2015 09:13:03 +0000 (UTC) Repository: camel Updated Branches: refs/heads/master efc2ce362 -> ca1d054b0 Component docs Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ca1d054b Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ca1d054b Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ca1d054b Branch: refs/heads/master Commit: ca1d054b00d95950856ba27c4d41a955f18ca129 Parents: efc2ce3 Author: Claus Ibsen Authored: Tue Jun 16 11:16:56 2015 +0200 Committer: Claus Ibsen Committed: Tue Jun 16 11:18:31 2015 +0200 ---------------------------------------------------------------------- .../camel/component/sip/SipConfiguration.java | 299 ++++++++++++------- .../apache/camel/component/sip/SipEndpoint.java | 2 +- .../services/org/apache/camel/component/sips | 18 ++ 3 files changed, 216 insertions(+), 103 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/ca1d054b/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipConfiguration.java ---------------------------------------------------------------------- diff --git a/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipConfiguration.java b/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipConfiguration.java index dc436b3..acbc180 100644 --- a/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipConfiguration.java +++ b/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipConfiguration.java @@ -23,7 +23,6 @@ import java.util.List; import java.util.Map; import java.util.Properties; import javax.sip.ClientTransaction; -import javax.sip.Dialog; import javax.sip.InvalidArgumentException; import javax.sip.ListeningPoint; import javax.sip.SipFactory; @@ -59,10 +58,14 @@ import org.slf4j.LoggerFactory; public class SipConfiguration { private static final Logger LOG = LoggerFactory.getLogger(SipConfiguration.class); private static final String IMPLEMENTATION = "gov.nist"; + + private SipComponent component; + + private String protocol; + private Map parameters; + @UriPath @Metadata(required = "true") private URI uri; - private Map parameters; - private SipComponent component; @UriParam private AddressFactory addressFactory; @UriParam @@ -73,13 +76,12 @@ public class SipConfiguration { private SipStack sipStack; @UriParam private ListeningPoint listeningPoint; - private String protocol; @UriParam private SipURI sipUri; - @UriParam - private String stackName; - @UriParam - private String transport; + @UriParam(defaultValue = "NAME_NOT_SET") + private String stackName = "NAME_NOT_SET"; + @UriParam(defaultValue = "tcp", enums = "tcp,udp") + private String transport = "tcp"; @UriParam private int maxForwards; @UriParam @@ -88,39 +90,44 @@ public class SipConfiguration { private String eventHeaderName; @UriParam private String eventId; + @UriParam(defaultValue = "3600") + private int msgExpiration = 3600; @UriParam - private int msgExpiration; + private boolean useRouterForAllUris; + @UriParam(defaultValue = "10000") + private long receiveTimeoutMillis = 10000; + @UriParam(defaultValue = "1048576") + private int maxMessageSize = 1048576; @UriParam - private String useRouterForAllUris; + private boolean cacheConnections; + @UriParam(defaultValue = "text") + private String contentType = "text"; + @UriParam(defaultValue = "plain") + private String contentSubType = "plain"; + @UriParam(defaultValue = "off") + private String automaticDialogSupport = "off"; @UriParam - private long receiveTimeoutMillis; + private String implementationServerLogFile; @UriParam - private String maxMessageSize; - @UriParam - private String cacheConnections; - @UriParam - private String contentType; - @UriParam - private String contentSubType; - @UriParam - private String automaticDialogSupport; - @UriParam - private String nistServerLog; - @UriParam - private String nistDebugLog; - @UriParam - private String nistTraceLevel; + private String implementationDebugLogFile; + @UriParam(defaultValue = "0") + private String implementationTraceLevel = "0"; @UriParam private SipFactory sipFactory; + @UriParam private String fromUser; + @UriParam private String fromHost; + @UriParam private int fromPort; + @UriParam private String toUser; + @UriParam private String toHost; + @UriParam private int toPort; @UriParam private boolean presenceAgent; - @UriParam private FromHeader fromHeader; @UriParam @@ -141,31 +148,13 @@ public class SipConfiguration { private ExtensionHeader extensionHeader; @UriParam private ExpiresHeader expiresHeader; - @UriParam - private ClientTransaction clientTransactionId; - @UriParam - private Dialog dialog; - + public SipConfiguration() { sipFactory = SipFactory.getInstance(); sipFactory.setPathName(IMPLEMENTATION); - - setStackName("NAME_NOT_SET"); - setTransport("tcp"); - setMaxMessageSize("1048576"); - setCacheConnections("false"); - setAutomaticDialogSupport("off"); - setContentType("text"); - setContentSubType("plain"); - setReceiveTimeoutMillis(10000); - setConsumer(false); - setUseRouterForAllUris("false"); - setMsgExpiration(3600); - setPresenceAgent(false); } - public void initialize(URI uri, Map parameters, - SipComponent component) { + public void initialize(URI uri, Map parameters, SipComponent component) { this.setParameters(parameters); this.setComponent(component); this.setUri(uri); @@ -187,10 +176,10 @@ public class SipConfiguration { setTransport((String) settings.get("transport")); } if (settings.containsKey("maxMessageSize")) { - setMaxMessageSize((String) settings.get("maxMessageSize")); + setMaxMessageSize(Integer.valueOf((String) settings.get("maxMessageSize"))); } if (settings.containsKey("cacheConnections")) { - setCacheConnections((String) settings.get("cacheConnections")); + setCacheConnections(Boolean.valueOf((String) settings.get("cacheConnections"))); } if (settings.containsKey("contentType")) { setContentType((String) settings.get("contentType")); @@ -211,7 +200,7 @@ public class SipConfiguration { setEventId((String) settings.get("eventId")); } if (settings.containsKey("useRouterForAllUris")) { - setUseRouterForAllUris((String) settings.get("useRouterForAllUris")); + setUseRouterForAllUris(Boolean.valueOf((String) settings.get("useRouterForAllUris"))); } if (settings.containsKey("msgExpiration")) { setMsgExpiration(Integer.valueOf((String) settings.get("msgExpiration"))); @@ -249,9 +238,10 @@ public class SipConfiguration { } } } - nistDebugLog = component.getAndRemoveParameter(parameters, "implementationDebugLogFile", String.class, null); - nistServerLog = component.getAndRemoveParameter(parameters, "implementationServerLogFile", String.class, null); - nistTraceLevel = component.getAndRemoveParameter(parameters, "implementationTraceLevel", String.class, "0"); + + implementationDebugLogFile = component.getAndRemoveParameter(parameters, "implementationDebugLogFile", String.class, null); + implementationServerLogFile = component.getAndRemoveParameter(parameters, "implementationServerLogFile", String.class, null); + implementationTraceLevel = component.getAndRemoveParameter(parameters, "implementationTraceLevel", String.class, "0"); LOG.trace("Consumer:" + consumer + " StackName:" + stackName); LOG.trace("From User: " + getFromUser() + " From host: " + getFromHost() + " From Port: " + getFromPort()); @@ -409,13 +399,13 @@ public class SipConfiguration { Properties createInitialProperties() { Properties properties = new Properties(); properties.setProperty("javax.sip.STACK_NAME", getStackName()); - properties.setProperty("gov.nist.javax.sip.MAX_MESSAGE_SIZE", getMaxMessageSize()); - properties.setProperty("gov.nist.javax.sip.CACHE_CLIENT_CONNECTIONS", getCacheConnections()); - properties.setProperty("javax.sip.USE_ROUTER_FOR_ALL_URIS", getUseRouterForAllUris()); - if ((nistDebugLog != null) && (nistServerLog != null)) { - properties.setProperty("gov.nist.javax.sip.DEBUG_LOG", nistDebugLog); - properties.setProperty("gov.nist.javax.sip.SERVER_LOG", nistServerLog); - properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", nistTraceLevel); + properties.setProperty("gov.nist.javax.sip.MAX_MESSAGE_SIZE", "" + getMaxMessageSize()); + properties.setProperty("gov.nist.javax.sip.CACHE_CLIENT_CONNECTIONS", "" + isCacheConnections()); + properties.setProperty("javax.sip.USE_ROUTER_FOR_ALL_URIS", "" + isUseRouterForAllUris()); + if ((implementationDebugLogFile != null) && (implementationServerLogFile != null)) { + properties.setProperty("gov.nist.javax.sip.DEBUG_LOG", implementationDebugLogFile); + properties.setProperty("gov.nist.javax.sip.SERVER_LOG", implementationServerLogFile); + properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", implementationTraceLevel); } return properties; @@ -425,6 +415,9 @@ public class SipConfiguration { return addressFactory; } + /** + * To use a custom AddressFactory + */ public void setAddressFactory(AddressFactory addressFactory) { this.addressFactory = addressFactory; } @@ -433,6 +426,9 @@ public class SipConfiguration { return messageFactory; } + /** + * To use a custom MessageFactory + */ public void setMessageFactory(MessageFactory messageFactory) { this.messageFactory = messageFactory; } @@ -441,6 +437,9 @@ public class SipConfiguration { return headerFactory; } + /** + * To use a custom HeaderFactory + */ public void setHeaderFactory(HeaderFactory headerFactory) { this.headerFactory = headerFactory; } @@ -449,22 +448,20 @@ public class SipConfiguration { return sipStack; } + /** + * To use a custom SipStack + */ public void setSipStack(SipStack sipStack) { this.sipStack = sipStack; } - public String getProtocol() { - return protocol; - } - - public void setProtocol(String protocol) { - this.protocol = protocol; - } - public SipURI getSipUri() { return sipUri; } + /** + * To use a custom SipURI. If none configured, then the SipUri fallback to use the options toUser toHost:toPort + */ public void setSipUri(SipURI sipUri) { this.sipUri = sipUri; } @@ -473,6 +470,9 @@ public class SipConfiguration { return stackName; } + /** + * Name of the SIP Stack instance associated with an SIP Endpoint. + */ public void setStackName(String stackName) { this.stackName = stackName; } @@ -481,15 +481,21 @@ public class SipConfiguration { return transport; } + /** + * Setting for choice of transport protocol. Valid choices are "tcp" or "udp". + */ public void setTransport(String transport) { this.transport = transport; } - public String getMaxMessageSize() { + public int getMaxMessageSize() { return maxMessageSize; } - public void setMaxMessageSize(String maxMessageSize) { + /** + * Setting for maximum allowed Message size in bytes. + */ + public void setMaxMessageSize(int maxMessageSize) { this.maxMessageSize = maxMessageSize; } @@ -497,15 +503,21 @@ public class SipConfiguration { return automaticDialogSupport; } + /** + * Setting to specify whether every communication should be associated with a dialog. + */ public void setAutomaticDialogSupport(String automaticDialogSupport) { this.automaticDialogSupport = automaticDialogSupport; } - public String getCacheConnections() { + public boolean isCacheConnections() { return cacheConnections; } - public void setCacheConnections(String cacheConnections) { + /** + * Should connections be cached by the SipStack to reduce cost of connection creation. This is useful if the connection is used for long running conversations. + */ + public void setCacheConnections(boolean cacheConnections) { this.cacheConnections = cacheConnections; } @@ -513,10 +525,16 @@ public class SipConfiguration { return listeningPoint; } + /** + * To use a custom ListeningPoint implementation + */ public void setListeningPoint(ListeningPoint listeningPoint) { this.listeningPoint = listeningPoint; } + /** + * Setting for contentType can be set to any valid MimeType. + */ public void setContentType(String contentType) { this.contentType = contentType; } @@ -525,6 +543,9 @@ public class SipConfiguration { return contentType; } + /** + * Setting for contentSubType can be set to any valid MimeSubType. + */ public void setContentSubType(String contentSubType) { this.contentSubType = contentSubType; } @@ -533,6 +554,9 @@ public class SipConfiguration { return contentSubType; } + /** + * Number of maximum proxy forwards + */ public void setMaxForwards(int maxForwards) { this.maxForwards = maxForwards; } @@ -541,6 +565,9 @@ public class SipConfiguration { return maxForwards; } + /** + * Setting for specifying amount of time to wait for a Response and/or Acknowledgement can be received from another SIP stack + */ public void setReceiveTimeoutMillis(long receiveTimeoutMillis) { this.receiveTimeoutMillis = receiveTimeoutMillis; } @@ -565,34 +592,46 @@ public class SipConfiguration { return component; } - public String getNistServerLog() { - return nistServerLog; + public String getImplementationServerLogFile() { + return implementationServerLogFile; } - public void setNistServerLog(String nistServerLog) { - this.nistServerLog = nistServerLog; + /** + * Name of server log file to use for logging + */ + public void setImplementationServerLogFile(String implementationServerLogFile) { + this.implementationServerLogFile = implementationServerLogFile; } - public String getNistDebugLog() { - return nistDebugLog; + public String getImplementationDebugLogFile() { + return implementationDebugLogFile; } - public void setNistDebugLog(String nistDebugLog) { - this.nistDebugLog = nistDebugLog; + /** + * Name of client debug log file to use for logging + */ + public void setImplementationDebugLogFile(String implementationDebugLogFile) { + this.implementationDebugLogFile = implementationDebugLogFile; } - public String getNistTraceLevel() { - return nistTraceLevel; + public String getImplementationTraceLevel() { + return implementationTraceLevel; } - public void setNistTraceLevel(String nistTraceLevel) { - this.nistTraceLevel = nistTraceLevel; + /** + * Logging level for tracing + */ + public void setImplementationTraceLevel(String implementationTraceLevel) { + this.implementationTraceLevel = implementationTraceLevel; } public SipFactory getSipFactory() { return sipFactory; } + /** + * To use a custom SipFactory to create the SipStack to be used + */ public void setSipFactory(SipFactory sipFactory) { this.sipFactory = sipFactory; } @@ -601,6 +640,9 @@ public class SipConfiguration { return fromUser; } + /** + * Username of the message originator. Mandatory setting unless a registry based custom FromHeader is specified. + */ public void setFromUser(String fromUser) { this.fromUser = fromUser; } @@ -609,6 +651,9 @@ public class SipConfiguration { return fromHost; } + /** + * Hostname of the message originator. Mandatory setting unless a registry based FromHeader is specified + */ public void setFromHost(String fromHost) { this.fromHost = fromHost; } @@ -617,6 +662,9 @@ public class SipConfiguration { return fromPort; } + /** + * Port of the message originator. Mandatory setting unless a registry based FromHeader is specified + */ public void setFromPort(int fromPort) { this.fromPort = fromPort; } @@ -625,6 +673,9 @@ public class SipConfiguration { return toUser; } + /** + * Username of the message receiver. Mandatory setting unless a registry based custom ToHeader is specified. + */ public void setToUser(String toUser) { this.toUser = toUser; } @@ -633,6 +684,9 @@ public class SipConfiguration { return toHost; } + /** + * Hostname of the message receiver. Mandatory setting unless a registry based ToHeader is specified + */ public void setToHost(String toHost) { this.toHost = toHost; } @@ -641,6 +695,9 @@ public class SipConfiguration { return toPort; } + /** + * Portname of the message receiver. Mandatory setting unless a registry based ToHeader is specified + */ public void setToPort(int toPort) { this.toPort = toPort; } @@ -649,6 +706,9 @@ public class SipConfiguration { return fromHeader; } + /** + * A custom Header object containing message originator settings. Must implement the type javax.sip.header.FromHeader + */ public void setFromHeader(FromHeader fromHeader) { this.fromHeader = fromHeader; } @@ -657,6 +717,9 @@ public class SipConfiguration { return toHeader; } + /** + * A custom Header object containing message receiver settings. Must implement the type javax.sip.header.ToHeader + */ public void setToHeader(ToHeader toHeader) { this.toHeader = toHeader; } @@ -665,6 +728,10 @@ public class SipConfiguration { return viaHeaders; } + /** + * List of custom Header objects of the type javax.sip.header.ViaHeader. + * Each ViaHeader containing a proxy address for request forwarding. (Note this header is automatically updated by each proxy when the request arrives at its listener) + */ public void setViaHeaders(List viaHeaders) { this.viaHeaders = viaHeaders; } @@ -673,6 +740,9 @@ public class SipConfiguration { return contentTypeHeader; } + /** + * A custom Header object containing message content details. Must implement the type javax.sip.header.ContentTypeHeader + */ public void setContentTypeHeader(ContentTypeHeader contentTypeHeader) { this.contentTypeHeader = contentTypeHeader; } @@ -681,6 +751,9 @@ public class SipConfiguration { return callIdHeader; } + /** + * A custom Header object containing call details. Must implement the type javax.sip.header.CallIdHeader + */ public void setCallIdHeader(CallIdHeader callIdHeader) { this.callIdHeader = callIdHeader; } @@ -689,6 +762,10 @@ public class SipConfiguration { return maxForwardsHeader; } + /** + * A custom Header object containing details on maximum proxy forwards. + * This header places a limit on the viaHeaders possible. Must implement the type javax.sip.header.MaxForwardsHeader + */ public void setMaxForwardsHeader(MaxForwardsHeader maxForwardsHeader) { this.maxForwardsHeader = maxForwardsHeader; } @@ -697,6 +774,9 @@ public class SipConfiguration { return contactHeader; } + /** + * An optional custom Header object containing verbose contact details (email, phone number etc). Must implement the type javax.sip.header.ContactHeader + */ public void setContactHeader(ContactHeader contactHeader) { this.contactHeader = contactHeader; } @@ -705,10 +785,16 @@ public class SipConfiguration { return extensionHeader; } + /** + * A custom Header object containing user/application specific details. Must implement the type javax.sip.header.ExtensionHeader + */ public void setExtensionHeader(ExtensionHeader extensionHeader) { this.extensionHeader = extensionHeader; } + /** + * URI of the SIP server to connect to (the username and password can be included such as: john:secret@myserver:9999) + */ public void setUri(URI uri) { this.uri = uri; } @@ -717,6 +803,9 @@ public class SipConfiguration { return uri; } + /** + * This setting is used to determine whether the kind of header (FromHeader,ToHeader etc) that needs to be created for this endpoint + */ public void setConsumer(boolean consumer) { this.consumer = consumer; } @@ -725,22 +814,9 @@ public class SipConfiguration { return consumer; } - public void setClientTransactionId(ClientTransaction clientTransactionId) { - this.clientTransactionId = clientTransactionId; - } - - public ClientTransaction getClientTransactionId() { - return clientTransactionId; - } - - public void setDialog(Dialog dialog) { - this.dialog = dialog; - } - - public Dialog getDialog() { - return dialog; - } - + /** + * A custom Header object containing event details. Must implement the type javax.sip.header.EventHeader + */ public void setEventHeader(EventHeader eventHeader) { this.eventHeader = eventHeader; } @@ -749,6 +825,9 @@ public class SipConfiguration { return eventHeader; } + /** + * Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified + */ public void setEventHeaderName(String eventHeaderName) { this.eventHeaderName = eventHeaderName; } @@ -757,6 +836,9 @@ public class SipConfiguration { return eventHeaderName; } + /** + * Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified + */ public void setEventId(String eventId) { this.eventId = eventId; } @@ -765,11 +847,14 @@ public class SipConfiguration { return eventId; } - public void setUseRouterForAllUris(String useRouterForAllUris) { + /** + * This setting is used when requests are sent to the Presence Agent via a proxy. + */ + public void setUseRouterForAllUris(boolean useRouterForAllUris) { this.useRouterForAllUris = useRouterForAllUris; } - public String getUseRouterForAllUris() { + public boolean isUseRouterForAllUris() { return useRouterForAllUris; } @@ -777,6 +862,9 @@ public class SipConfiguration { return msgExpiration; } + /** + * The amount of time a message received at an endpoint is considered valid + */ public void setMsgExpiration(int msgExpiration) { this.msgExpiration = msgExpiration; } @@ -785,6 +873,9 @@ public class SipConfiguration { return expiresHeader; } + /** + * A custom Header object containing message expiration details. Must implement the type javax.sip.header.ExpiresHeader + */ public void setExpiresHeader(ExpiresHeader expiresHeader) { this.expiresHeader = expiresHeader; } @@ -793,6 +884,10 @@ public class SipConfiguration { return presenceAgent; } + /** + * This setting is used to distinguish between a Presence Agent & a consumer. + * This is due to the fact that the SIP Camel component ships with a basic Presence Agent (for testing purposes only). Consumers have to set this flag to true. + */ public void setPresenceAgent(boolean presenceAgent) { this.presenceAgent = presenceAgent; } http://git-wip-us.apache.org/repos/asf/camel/blob/ca1d054b/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipEndpoint.java b/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipEndpoint.java index 97a6206..05e3463 100644 --- a/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipEndpoint.java +++ b/components/camel-sip/src/main/java/org/apache/camel/component/sip/SipEndpoint.java @@ -24,7 +24,7 @@ import org.apache.camel.impl.DefaultEndpoint; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; -@UriEndpoint(scheme = "sip", title = "SIP (Session Initiation Protocol)", syntax = "sip:uri", label = "messaging") +@UriEndpoint(scheme = "sip,sips", title = "SIP (Session Initiation Protocol)", syntax = "sip:uri", label = "messaging,mobile") public class SipEndpoint extends DefaultEndpoint { @UriParam private SipConfiguration configuration; http://git-wip-us.apache.org/repos/asf/camel/blob/ca1d054b/components/camel-sip/src/main/resources/META-INF/services/org/apache/camel/component/sips ---------------------------------------------------------------------- diff --git a/components/camel-sip/src/main/resources/META-INF/services/org/apache/camel/component/sips b/components/camel-sip/src/main/resources/META-INF/services/org/apache/camel/component/sips new file mode 100644 index 0000000..385e88a --- /dev/null +++ b/components/camel-sip/src/main/resources/META-INF/services/org/apache/camel/component/sips @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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. +# + +class=org.apache.camel.component.sip.SipComponent