mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-07 13:41:21 +00:00
GUACAMOLE-36: Define REST API transfer mechanism for translatable messages.
This commit is contained in:
@@ -25,6 +25,8 @@ import org.apache.guacamole.GuacamoleException;
|
||||
import org.apache.guacamole.GuacamoleResourceNotFoundException;
|
||||
import org.apache.guacamole.GuacamoleSecurityException;
|
||||
import org.apache.guacamole.form.Field;
|
||||
import org.apache.guacamole.language.Translatable;
|
||||
import org.apache.guacamole.language.TranslatableMessage;
|
||||
import org.apache.guacamole.net.auth.credentials.GuacamoleCredentialsException;
|
||||
import org.apache.guacamole.net.auth.credentials.GuacamoleInsufficientCredentialsException;
|
||||
import org.apache.guacamole.net.auth.credentials.GuacamoleInvalidCredentialsException;
|
||||
@@ -39,10 +41,15 @@ import org.apache.guacamole.tunnel.GuacamoleStreamException;
|
||||
public class APIError {
|
||||
|
||||
/**
|
||||
* The error message.
|
||||
* The human-readable error message.
|
||||
*/
|
||||
private final String message;
|
||||
|
||||
/**
|
||||
* A translatable message representing the error that occurred.
|
||||
*/
|
||||
private final TranslatableMessage translatableMessage;
|
||||
|
||||
/**
|
||||
* The associated Guacamole protocol status code.
|
||||
*/
|
||||
@@ -148,7 +155,9 @@ public class APIError {
|
||||
|
||||
/**
|
||||
* Creates a new APIError which exposes the details of the given
|
||||
* GuacamoleException.
|
||||
* GuacamoleException. If the given GuacamoleException implements
|
||||
* Translatable, then its translation string and values will be exposed as
|
||||
* well.
|
||||
*
|
||||
* @param exception
|
||||
* The GuacamoleException from which the details of the new APIError
|
||||
@@ -176,6 +185,14 @@ public class APIError {
|
||||
else
|
||||
this.statusCode = null;
|
||||
|
||||
// Pull translatable message and values if available
|
||||
if (exception instanceof Translatable) {
|
||||
Translatable translatable = (Translatable) exception;
|
||||
this.translatableMessage = translatable.getTranslatableMessage();
|
||||
}
|
||||
else
|
||||
this.translatableMessage = new TranslatableMessage(this.message);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -223,4 +240,16 @@ public class APIError {
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a translatable message describing the error that occurred. If no
|
||||
* translatable message is associated with the error, this will be null.
|
||||
*
|
||||
* @return
|
||||
* A translatable message describing the error that occurred, or null
|
||||
* if there is no such message defined.
|
||||
*/
|
||||
public TranslatableMessage getTranslatableMessage() {
|
||||
return translatableMessage;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -42,6 +42,15 @@ angular.module('rest').factory('Error', [function defineError() {
|
||||
*/
|
||||
this.message = template.message;
|
||||
|
||||
/**
|
||||
* A message which can be translated using the translation service,
|
||||
* consisting of a translation key and optional set of substitution
|
||||
* variables.
|
||||
*
|
||||
* @type TranslatableMessage
|
||||
*/
|
||||
this.translatableMessage = template.translatableMessage;
|
||||
|
||||
/**
|
||||
* The Guacamole protocol status code associated with the error that
|
||||
* occurred. This is only valid for errors of type STREAM_ERROR.
|
||||
|
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Service which defines the TranslatableMessage class.
|
||||
*/
|
||||
angular.module('rest').factory('TranslatableMessage', [function defineTranslatableMessage() {
|
||||
|
||||
/**
|
||||
* The object returned by REST API calls when representing a message which
|
||||
* can be translated using the translation service, providing a translation
|
||||
* key and optional set of values to be substituted into the translation
|
||||
* string associated with that key.
|
||||
*
|
||||
* @constructor
|
||||
* @param {TranslatableMessage|Object} [template={}]
|
||||
* The object whose properties should be copied within the new
|
||||
* TranslatableMessage.
|
||||
*/
|
||||
var TranslatableMessage = function TranslatableMessage(template) {
|
||||
|
||||
// Use empty object by default
|
||||
template = template || {};
|
||||
|
||||
/**
|
||||
* The key associated with the translation string that used when
|
||||
* displaying this message.
|
||||
*
|
||||
* @type String
|
||||
*/
|
||||
this.key = template.key;
|
||||
|
||||
/**
|
||||
* The object which should be passed through to the translation service
|
||||
* for the sake of variable substitution. Each property of the provided
|
||||
* object will be substituted for the variable of the same name within
|
||||
* the translation string.
|
||||
*
|
||||
* @type Object
|
||||
*/
|
||||
this.variables = template.variables;
|
||||
|
||||
};
|
||||
|
||||
return TranslatableMessage;
|
||||
|
||||
}]);
|
Reference in New Issue
Block a user