question: @ Override public IChatMessage sendMessage2 ( Geoloc geoloc ) throws RemoteException { if ( geoloc == null ) { throw new ServerApiIllegalArgumentException ( "geoloc must not be null!" ) ; } String label = geoloc . getLabel ( ) ; if ( label != null ) { int labelLength = label . length ( ) ; int labelMaxLength = mRcsSettings . getMaxGeolocLabelLength ( ) ; if ( labelLength > labelMaxLength ) { throw new ServerApiIllegalArgumentException ( "geoloc message label length: " + labelLength + " exeeds max length: " + labelMaxLength + "!" ) ; } } if ( sLogger . isActivated ( ) ) { sLogger . debug ( "Send geolocation message." ) ; } try { long timestamp = System . currentTimeMillis ( ) ; final ChatMessage geolocMsg = ChatUtils . createGeolocMessage ( mContact , geoloc , timestamp , timestamp ) ; ChatMessagePersistedStorageAccessor persistentStorage = new ChatMessagePersistedStorageAccessor ( mMessagingLog , geolocMsg . getMessageId ( ) , geolocMsg . getRemoteContact ( ) , geolocMsg . getContent ( ) , geolocMsg . getMimeType ( ) , mContact . toString ( ) , Direction . OUTGOING ) ; addOutgoingChatMessage ( geolocMsg , Status . QUEUED ) ; mImService . tryToDequeueOneToOneChatMessages ( mContact ) ; return new ChatMessageImpl ( persistentStorage ) ; } catch ( ServerApiBaseException e ) { if ( ! e . shouldNotBeLogged ( ) ) { sLogger . error ( ExceptionUtil . getFullStackTrace ( e ) ) ; } throw e ; } catch ( Exception e ) { sLogger . error ( ExceptionUtil . getFullStackTrace ( e ) ) ; throw new ServerApiGenericException ( e ) ; } }
target:  Sends a geoloc message