mirror of https://github.com/apache/archiva.git
add rest method to load i18n from redback and archiva in one call
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1228021 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
293efa4329
commit
bcf944afb6
|
@ -46,4 +46,17 @@ public interface CommonServices
|
||||||
*/
|
*/
|
||||||
String getI18nResources( @QueryParam( "locale" ) String locale )
|
String getI18nResources( @QueryParam( "locale" ) String locale )
|
||||||
throws ArchivaRestServiceException;
|
throws ArchivaRestServiceException;
|
||||||
|
|
||||||
|
@Path( "getAllI18nResources" )
|
||||||
|
@GET
|
||||||
|
@Produces( { MediaType.TEXT_PLAIN } )
|
||||||
|
@RedbackAuthorization( noRestriction = true )
|
||||||
|
/**
|
||||||
|
* will return properties available in org/apache/archiva/i18n/default.properties
|
||||||
|
* load default (en) then override with locale used so at least en are returned if no
|
||||||
|
* translation in the locale asked.
|
||||||
|
* This method will add redback resources too. note Archva wins
|
||||||
|
*/
|
||||||
|
String getAllI18nResources( @QueryParam( "locale" ) String locale )
|
||||||
|
throws ArchivaRestServiceException;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,12 +22,18 @@ import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
|
||||||
import org.apache.archiva.rest.api.services.CommonServices;
|
import org.apache.archiva.rest.api.services.CommonServices;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.codehaus.redback.rest.api.services.RedbackServiceException;
|
||||||
|
import org.codehaus.redback.rest.api.services.UtilServices;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.ws.rs.QueryParam;
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.StringReader;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
|
@ -41,6 +47,9 @@ public class DefaultCommonServices
|
||||||
|
|
||||||
private Logger log = LoggerFactory.getLogger( getClass() );
|
private Logger log = LoggerFactory.getLogger( getClass() );
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private UtilServices utilServices;
|
||||||
|
|
||||||
public String getI18nResources( String locale )
|
public String getI18nResources( String locale )
|
||||||
throws ArchivaRestServiceException
|
throws ArchivaRestServiceException
|
||||||
{
|
{
|
||||||
|
@ -58,15 +67,7 @@ public class DefaultCommonServices
|
||||||
log.warn( "skip error loading properties {}", resourceName.toString() );
|
log.warn( "skip error loading properties {}", resourceName.toString() );
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder output = new StringBuilder();
|
return fromProperties( properties );
|
||||||
|
|
||||||
for ( Map.Entry<Object, Object> entry : properties.entrySet() )
|
|
||||||
{
|
|
||||||
output.append( (String) entry.getKey() ).append( '=' ).append( (String) entry.getValue() );
|
|
||||||
output.append( '\n' );
|
|
||||||
}
|
|
||||||
|
|
||||||
return output.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadResource( Properties properties, StringBuilder resourceName, String locale )
|
private void loadResource( Properties properties, StringBuilder resourceName, String locale )
|
||||||
|
@ -83,6 +84,19 @@ public class DefaultCommonServices
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String fromProperties( Properties properties )
|
||||||
|
{
|
||||||
|
StringBuilder output = new StringBuilder();
|
||||||
|
|
||||||
|
for ( Map.Entry<Object, Object> entry : properties.entrySet() )
|
||||||
|
{
|
||||||
|
output.append( (String) entry.getKey() ).append( '=' ).append( (String) entry.getValue() );
|
||||||
|
output.append( '\n' );
|
||||||
|
}
|
||||||
|
|
||||||
|
return output.toString();
|
||||||
|
}
|
||||||
|
|
||||||
private void loadResource( Properties properties, String resourceName )
|
private void loadResource( Properties properties, String resourceName )
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
|
@ -101,4 +115,27 @@ public class DefaultCommonServices
|
||||||
IOUtils.closeQuietly( is );
|
IOUtils.closeQuietly( is );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getAllI18nResources( String locale )
|
||||||
|
throws ArchivaRestServiceException
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
String redbackProps = utilServices.getI18nResources( locale );
|
||||||
|
String archivaProps = getI18nResources( locale );
|
||||||
|
Properties properties = new Properties();
|
||||||
|
properties.load( new StringReader( redbackProps ) );
|
||||||
|
properties.load( new StringReader( archivaProps ) );
|
||||||
|
return fromProperties( properties );
|
||||||
|
}
|
||||||
|
catch ( RedbackServiceException e )
|
||||||
|
{
|
||||||
|
throw new ArchivaRestServiceException( e.getMessage(), e.getHttpErrorCode() );
|
||||||
|
}
|
||||||
|
catch ( IOException e )
|
||||||
|
{
|
||||||
|
throw new ArchivaRestServiceException( e.getMessage(),
|
||||||
|
Response.Status.INTERNAL_SERVER_ERROR.getStatusCode() );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,22 +19,17 @@
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
// load i18n resources from rest call
|
// load i18n resources from rest call
|
||||||
// first redback then archiva
|
|
||||||
// -- redback
|
|
||||||
// load default
|
|
||||||
loadAndParseFile("restServices/redbackServices/utilServices/getBundleResources", {cache:false, mode: 'map',encoding:'utf-8'});
|
|
||||||
// load browser locale
|
|
||||||
var browserLang = $.i18n.browserLang();
|
var browserLang = $.i18n.browserLang();
|
||||||
var requestLang = $.urlParam('request_lang');
|
var requestLang = $.urlParam('request_lang');
|
||||||
if (requestLang) {
|
if (requestLang) {
|
||||||
browserLang=requestLang;
|
browserLang=requestLang;
|
||||||
}
|
}
|
||||||
$.log("use browserLang:"+browserLang);
|
$.log("use browserLang:"+browserLang);
|
||||||
loadAndParseFile("restServices/redbackServices/utilServices/getBundleResources?locale="+browserLang, {cache:false, mode: 'map',encoding:'utf-8'});
|
|
||||||
// -- archiva
|
// -- archiva
|
||||||
// load default
|
// load default
|
||||||
loadAndParseFile("restServices/archivaServices/commonServices/getI18nResources", {cache:false, mode: 'map',encoding:'utf-8'});
|
loadAndParseFile("restServices/archivaServices/commonServices/getAllI18nResources", {cache:false, mode: 'map',encoding:'utf-8'});
|
||||||
// load browser locale
|
// load browser locale
|
||||||
var browserLang = $.i18n.browserLang();
|
var browserLang = $.i18n.browserLang();
|
||||||
loadAndParseFile("restServices/archivaServices/commonServices/getI18nResources?locale="+browserLang, {cache:false, mode: 'map',encoding:'utf-8'});
|
loadAndParseFile("restServices/archivaServices/commonServices/getAllI18nResources?locale="+browserLang, {cache:false, mode: 'map',encoding:'utf-8'});
|
||||||
});
|
});
|
Loading…
Reference in New Issue