All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.mmm.util.nls.base.BasicNlsMessage Maven / Gradle / Ivy

/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
 * http://www.apache.org/licenses/LICENSE-2.0 */
package net.sf.mmm.util.nls.base;

import java.util.Collections;
import java.util.Map;

import net.sf.mmm.util.nls.api.NlsAccess;
import net.sf.mmm.util.nls.api.NlsTemplate;
import net.sf.mmm.util.nls.api.NlsTemplateResolver;

/**
 * This is the abstract implementation of {@link net.sf.mmm.util.nls.api.NlsMessage} with the basic features. 
* You should extend this class whenever suitable to implement {@link net.sf.mmm.util.nls.api.NlsMessage}. * * @author Joerg Hohwiller (hohwille at users.sourceforge.net) * @since 2.0.1 */ public abstract class BasicNlsMessage extends AbstractNlsMessage { private static final long serialVersionUID = 7021159510028831610L; /** The {@link #message} as {@link NlsTemplate}. */ private NlsTemplate template; private String message; private Map arguments; /** * The constructor for de-serialization in GWT. */ protected BasicNlsMessage() { super(); } /** * The constructor. * * @param template is the {@link NlsTemplate} for the {@link #getInternationalizedMessage() raw message}. * @param messageArguments are the {@link #getArgument(String) arguments} filled into the message after * nationalization. */ public BasicNlsMessage(NlsTemplate template, Map messageArguments) { this(template, null, messageArguments); assert (template != null); } /** * The constructor. * * @param internationalizedMessage is the {@link #getInternationalizedMessage() internationalized message}. * @param messageArguments are the {@link #getArgument(String) arguments} filled into the message after * nationalization. */ public BasicNlsMessage(String internationalizedMessage, Map messageArguments) { this(null, internationalizedMessage, messageArguments); assert (internationalizedMessage != null); } /** * The constructor. * * @param template is the {@link NlsTemplate} for the {@link #getInternationalizedMessage() raw message}. * @param internationalizedMessage is the {@link #getInternationalizedMessage() internationalized message}. * @param messageArguments are the {@link #getArgument(String) arguments} filled into the message after * nationalization. */ private BasicNlsMessage(NlsTemplate template, String internationalizedMessage, Map messageArguments) { super(); this.template = template; this.message = internationalizedMessage; if (messageArguments == null) { this.arguments = Collections.emptyMap(); } else { this.arguments = messageArguments; } } @Override public Object getArgument(String key) { return this.arguments.get(key); } @Override public String getInternationalizedMessage() { if (this.message == null) { this.message = this.template.translate(LOCALE_ROOT); } return this.message; } /** * This method gets the message {@link #getArgument(String) arguments}. * * @return the {@link Map} with the arguments. */ protected final Map getArguments() { return this.arguments; } /** * This method gets the {@link NlsTemplate} of this message. * * @return the text the {@link NlsTemplate} or {@code null} if NOT yet * {@link NlsTemplateResolver#resolveTemplate(String) resolved}. */ public NlsTemplate getTemplate() { return this.template; } /** * This method gets the {@link NlsTemplate} of this message. * * @param resolver is the {@link NlsTemplateResolver} used to {@link NlsTemplateResolver#resolveTemplate(String) * resolve} the {@link NlsTemplate} if NOT yet available. * @return the text the {@link NlsTemplate}. */ public NlsTemplate getTemplate(NlsTemplateResolver resolver) { if (this.template == null) { synchronized (this) { if (this.template == null) { NlsTemplateResolver templateResolver; if (resolver == null) { templateResolver = NlsAccess.getTemplateResolver(); } else { templateResolver = resolver; } this.template = templateResolver.resolveTemplate(this.message); } } } return this.template; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy