You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by st...@apache.org on 2012/07/07 02:13:34 UTC

[2/3] git commit: DELTASPIKE-225 merge MessageContext and it's config

DELTASPIKE-225 merge MessageContext and it's config


Project: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/f0f8043c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/f0f8043c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/f0f8043c

Branch: refs/heads/master
Commit: f0f8043c5790badf10d9e8130f0dd20e04d06b61
Parents: 4370fbe
Author: Mark Struberg <st...@apache.org>
Authored: Sat Jul 7 02:07:00 2012 +0200
Committer: Mark Struberg <st...@apache.org>
Committed: Sat Jul 7 02:07:00 2012 +0200

----------------------------------------------------------------------
 .../core/api/message/MessageContext.java           |   95 ++----
 .../core/impl/message/DefaultMessage.java          |    8 +-
 .../core/impl/message/DefaultMessageBuilder.java   |    8 +-
 .../core/impl/message/DefaultMessageContext.java   |  110 +++++-
 .../impl/message/DefaultMessageContextConfig.java  |  275 ---------------
 .../message/MessageBundleInvocationHandler.java    |    8 +-
 .../core/impl/message/MessageContextProducer.java  |   10 +-
 .../impl/message/UnmodifiableMessageContext.java   |   39 ++-
 .../message/UnmodifiableMessageContextConfig.java  |   77 ----
 .../test/core/api/message/MessageContextTest.java  |   18 +-
 10 files changed, 187 insertions(+), 461 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/f0f8043c/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/message/MessageContext.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/message/MessageContext.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/message/MessageContext.java
index 6af53ab..7667b6a 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/message/MessageContext.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/message/MessageContext.java
@@ -23,7 +23,7 @@ import java.io.Serializable;
 /**
  * Central context for handling dynamic messages
  */
-public interface MessageContext extends LocaleResolver
+public interface MessageContext extends LocaleResolver, Serializable
 {
     /**
      * @return message builder to add and/or create a new message based on the current context via a fluent api
@@ -31,9 +31,38 @@ public interface MessageContext extends LocaleResolver
     MessageBuilder message();
 
     /**
-     * @return the current config to change it or create a new one base on the current config
+     * @return the current message interpolator
      */
-    Config config();
+    MessageInterpolator getMessageInterpolator();
+
+    /**
+     * @return the current message resolver
+     */
+    MessageResolver getMessageResolver();
+
+    /**
+     * @return the current locale resolver
+     */
+    LocaleResolver getLocaleResolver();
+
+    /**
+     * @param messageInterpolator a new message interpolator
+     * @return the instance of the current message context builder
+     */
+    MessageContext setMessageInterpolator(MessageInterpolator messageInterpolator);
+
+    /**
+     * @param messageResolver a new message resolver
+     * @return the instance of the current message context builder
+     */
+    MessageContext setMessageResolver(MessageResolver messageResolver);
+
+    /**
+     * @param localeResolver a new locale resolver
+     * @return the instance of the current message context builder
+     */
+    MessageContext setLocaleResolver(LocaleResolver localeResolver);
+
 
     /**
      * Helper for building instances of {@link Message}
@@ -63,64 +92,4 @@ public interface MessageContext extends LocaleResolver
         String toText();
     }
 
-    /**
-     * Config for customizing a {@link MessageContext}
-     */
-    interface Config extends Serializable
-    {
-        /**
-         * create a new context based on the default context - the default context won't get modified
-         *
-         * @return a message context builder based on the current config
-         */
-        MessageContextBuilder use();
-
-        /**
-         * change the default context
-         *
-         * @return a message context builder to change the current config
-         */
-        MessageContextBuilder change();
-
-        /**
-         * @return the current message interpolator
-         */
-        MessageInterpolator getMessageInterpolator();
-
-        /**
-         * @return the current message resolver
-         */
-        MessageResolver getMessageResolver();
-
-        /**
-         * @return the current locale resolver
-         */
-        LocaleResolver getLocaleResolver();
-
-        interface MessageContextBuilder
-        {
-            /**
-             * @param messageInterpolator a new message interpolator
-             * @return the instance of the current message context builder
-             */
-            MessageContextBuilder messageInterpolator(MessageInterpolator messageInterpolator);
-
-            /**
-             * @param messageResolver a new message resolver
-             * @return the instance of the current message context builder
-             */
-            MessageContextBuilder messageResolver(MessageResolver messageResolver);
-
-            /**
-             * @param localeResolver a new locale resolver
-             * @return the instance of the current message context builder
-             */
-            MessageContextBuilder localeResolver(LocaleResolver localeResolver);
-
-            /**
-             * @return a new message context based on the current config
-             */
-            MessageContext create();
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/f0f8043c/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessage.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessage.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessage.java
index f4a2212..a53f7db 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessage.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessage.java
@@ -36,13 +36,13 @@ class DefaultMessage implements Message
     protected String messageTemplate;
     protected List<Object> arguments = new ArrayList<Object>();
 
-    private MessageContext.Config messageContextConfig;
+    private MessageContext messageContext;
 
-    DefaultMessage(MessageContext.Config messageContextConfig,
+    DefaultMessage(MessageContext messageContext,
                    String messageTemplate,
                    Object... arguments)
     {
-        this.messageContextConfig = messageContextConfig;
+        this.messageContext = messageContext;
         this.messageTemplate = messageTemplate;
         this.arguments.addAll(Arrays.asList(arguments));
     }
@@ -126,7 +126,7 @@ class DefaultMessage implements Message
     @Override
     public String toString()
     {
-        return toString(new DefaultMessageContext(messageContextConfig));
+        return toString(new DefaultMessageContext(messageContext));
     }
 
     public String toString(MessageContext messageContext)

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/f0f8043c/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageBuilder.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageBuilder.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageBuilder.java
index f561552..575dd9d 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageBuilder.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageBuilder.java
@@ -47,7 +47,7 @@ class DefaultMessageBuilder implements MessageContext.MessageBuilder
     public DefaultMessageBuilder(MessageContext messageContext)
     {
         reset();
-        this.messageContext = new UnmodifiableMessageContext(messageContext.config().use().create() /*== clone*/);
+        this.messageContext = new UnmodifiableMessageContext(messageContext);
     }
 
     @Override
@@ -72,7 +72,7 @@ class DefaultMessageBuilder implements MessageContext.MessageBuilder
             throw new IllegalStateException("messageTemplate is missing");
         }
 
-        return new DefaultMessage(messageContext.config(), messageTemplate,
+        return new DefaultMessage(messageContext, messageTemplate,
                 argumentList.toArray(new Object[argumentList.size()]));
     }
 
@@ -102,13 +102,13 @@ class DefaultMessageBuilder implements MessageContext.MessageBuilder
     {
         String messageTemplate = baseMessage.getMessageTemplate();
 
-        MessageResolver messageResolver = messageContext.config().getMessageResolver();
+        MessageResolver messageResolver = messageContext.getMessageResolver();
         if (messageResolver != null)
         {
             messageTemplate = resolveMessage(messageResolver, baseMessage);
         }
 
-        MessageInterpolator messageInterpolator = messageContext.config().getMessageInterpolator();
+        MessageInterpolator messageInterpolator = messageContext.getMessageInterpolator();
 
         //X TODO: this logic is odd. It's completely out of the standard flow
         //X TODO: handling is different based on where the interpolator gets configured :(

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/f0f8043c/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageContext.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageContext.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageContext.java
index 01a89cd..29a3cce 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageContext.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageContext.java
@@ -18,7 +18,14 @@
  */
 package org.apache.deltaspike.core.impl.message;
 
+import org.apache.deltaspike.core.api.literal.AnyLiteral;
+import org.apache.deltaspike.core.api.message.LocaleResolver;
 import org.apache.deltaspike.core.api.message.MessageContext;
+import org.apache.deltaspike.core.api.message.MessageInterpolator;
+import org.apache.deltaspike.core.api.message.MessageResolver;
+import org.apache.deltaspike.core.api.message.annotation.MessageContextConfig;
+import org.apache.deltaspike.core.api.provider.BeanProvider;
+import org.apache.deltaspike.core.util.ClassUtils;
 
 import javax.enterprise.inject.Typed;
 import java.util.Locale;
@@ -28,18 +35,49 @@ class DefaultMessageContext implements MessageContext
 {
     private static final long serialVersionUID = -110779217295211303L;
 
-    private Config config = null;
+    private MessageInterpolator messageInterpolator = null;
+    private MessageResolver messageResolver = null;
+    private LocaleResolver localeResolver = null;
 
     DefaultMessageContext()
     {
-        config = new DefaultMessageContextConfig();
     }
 
-    DefaultMessageContext(Config config)
+    DefaultMessageContext(MessageContext otherMessageContext)
     {
-        this.config = config;
+        setMessageInterpolator(otherMessageContext.getMessageInterpolator());
+        setLocaleResolver(otherMessageContext.getLocaleResolver());
+        setMessageResolver(otherMessageContext.getMessageResolver()) ;
     }
 
+    DefaultMessageContext(MessageContextConfig messageContextConfig)
+    {
+        if (!MessageResolver.class.equals(messageContextConfig.messageResolver()))
+        {
+            Class<? extends MessageResolver> messageResolverClass =
+                    ClassUtils.tryToLoadClassForName(messageContextConfig.messageResolver().getName());
+
+            messageResolver = BeanProvider.getContextualReference(messageResolverClass, new AnyLiteral());
+        }
+
+        if (!MessageInterpolator.class.equals(messageContextConfig.messageInterpolator()))
+        {
+            Class<? extends MessageInterpolator> messageInterpolatorClass =
+                    ClassUtils.tryToLoadClassForName(messageContextConfig.messageInterpolator().getName());
+
+            messageInterpolator = BeanProvider.getContextualReference(messageInterpolatorClass, new AnyLiteral());
+        }
+
+        if (!LocaleResolver.class.equals(messageContextConfig.localeResolver()))
+        {
+            Class<? extends LocaleResolver> localeResolverClass =
+                    ClassUtils.tryToLoadClassForName(messageContextConfig.localeResolver().getName());
+
+            localeResolver = BeanProvider.getContextualReference(localeResolverClass, new AnyLiteral());
+        }
+    }
+
+
     @Override
     public MessageBuilder message()
     {
@@ -47,20 +85,52 @@ class DefaultMessageContext implements MessageContext
     }
 
     @Override
-    public Config config()
+    public Locale getLocale()
     {
-        return config;
+        if (getLocaleResolver() == null)
+        {
+            return null;
+        }
+
+        return getLocaleResolver().getLocale();
     }
 
-    @Override
-    public Locale getLocale()
+    public LocaleResolver getLocaleResolver()
     {
-        return config().getLocaleResolver().getLocale();
+        return localeResolver;
     }
 
-    /*
-     * generated
-     */
+    public MessageContext setLocaleResolver(LocaleResolver localeResolver)
+    {
+        this.localeResolver = localeResolver;
+        return this;
+    }
+
+    public MessageInterpolator getMessageInterpolator()
+    {
+        return messageInterpolator;
+    }
+
+    public MessageContext setMessageInterpolator(MessageInterpolator messageInterpolator)
+    {
+        this.messageInterpolator = messageInterpolator;
+        return this;
+    }
+
+    public MessageResolver getMessageResolver()
+    {
+        return messageResolver;
+    }
+
+    public MessageContext setMessageResolver(MessageResolver messageResolver)
+    {
+        this.messageResolver = messageResolver;
+        return this;
+    }
+
+/*
+    * generated
+    */
 
     @Override
     public boolean equals(Object o)
@@ -76,8 +146,17 @@ class DefaultMessageContext implements MessageContext
 
         DefaultMessageContext that = (DefaultMessageContext) o;
 
+        if (!localeResolver.equals(that.localeResolver))
+        {
+            return false;
+        }
+        if (messageInterpolator != null
+                ? !messageInterpolator.equals(that.messageInterpolator) : that.messageInterpolator != null)
+        {
+            return false;
+        }
         //noinspection RedundantIfStatement
-        if (!config.equals(that.config))
+        if (messageResolver != null ? !messageResolver.equals(that.messageResolver) : that.messageResolver != null)
         {
             return false;
         }
@@ -88,6 +167,9 @@ class DefaultMessageContext implements MessageContext
     @Override
     public int hashCode()
     {
-        return config.hashCode();
+        int result = messageInterpolator != null ? messageInterpolator.hashCode() : 0;
+        result = 31 * result + (messageResolver != null ? messageResolver.hashCode() : 0);
+        result = 31 * result + localeResolver.hashCode();
+        return result;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/f0f8043c/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageContextConfig.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageContextConfig.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageContextConfig.java
deleted file mode 100644
index b67b14b..0000000
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/DefaultMessageContextConfig.java
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * 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.
- */
-package org.apache.deltaspike.core.impl.message;
-
-import org.apache.deltaspike.core.api.literal.AnyLiteral;
-import org.apache.deltaspike.core.api.message.LocaleResolver;
-import org.apache.deltaspike.core.api.message.MessageContext;
-import org.apache.deltaspike.core.api.message.MessageInterpolator;
-import org.apache.deltaspike.core.api.message.MessageResolver;
-import org.apache.deltaspike.core.api.message.annotation.MessageContextConfig;
-import org.apache.deltaspike.core.api.provider.BeanProvider;
-import org.apache.deltaspike.core.util.ClassUtils;
-
-import javax.enterprise.inject.Typed;
-
-/**
- * {@inheritDoc}
- */
-@Typed()
-class DefaultMessageContextConfig implements MessageContext.Config
-{
-    private static final long serialVersionUID = 2919944628020782545L;
-
-    private MessageInterpolator messageInterpolator = null;
-    private MessageResolver messageResolver = null;
-    private LocaleResolver localeResolver = null;
-
-    DefaultMessageContextConfig()
-    {
-    }
-
-    DefaultMessageContextConfig(MessageContextConfig messageContextConfig)
-    {
-        if (!MessageResolver.class.equals(messageContextConfig.messageResolver()))
-        {
-            Class<? extends MessageResolver> messageResolverClass =
-                    ClassUtils.tryToLoadClassForName(messageContextConfig.messageResolver().getName());
-
-            messageResolver = BeanProvider.getContextualReference(messageResolverClass, new AnyLiteral());
-        }
-
-        if (!MessageInterpolator.class.equals(messageContextConfig.messageInterpolator()))
-        {
-            Class<? extends MessageInterpolator> messageInterpolatorClass =
-                    ClassUtils.tryToLoadClassForName(messageContextConfig.messageInterpolator().getName());
-
-            messageInterpolator = BeanProvider.getContextualReference(messageInterpolatorClass, new AnyLiteral());
-        }
-
-        if (!LocaleResolver.class.equals(messageContextConfig.localeResolver()))
-        {
-            Class<? extends LocaleResolver> localeResolverClass =
-                    ClassUtils.tryToLoadClassForName(messageContextConfig.localeResolver().getName());
-
-            localeResolver = BeanProvider.getContextualReference(localeResolverClass, new AnyLiteral());
-        }
-    }
-
-    private DefaultMessageContextConfig(MessageContext.Config messageContextConfigTemplate)
-    {
-        this();
-        messageInterpolator = messageContextConfigTemplate.getMessageInterpolator();
-        messageResolver = messageContextConfigTemplate.getMessageResolver();
-        localeResolver = messageContextConfigTemplate.getLocaleResolver();
-    }
-
-    @Override
-    public MessageContextBuilder use()
-    {
-        return new MessageContextBuilder()
-        {
-            private DefaultMessageContextConfig newMessageContextConfig =
-                    new DefaultMessageContextConfig(DefaultMessageContextConfig.this);
-
-            @Override
-            public MessageContextBuilder messageInterpolator(MessageInterpolator messageInterpolator)
-            {
-                newMessageContextConfig.setMessageInterpolator(messageInterpolator);
-                return this;
-            }
-
-            @Override
-            public MessageContextBuilder messageResolver(MessageResolver messageResolver)
-            {
-                newMessageContextConfig.setMessageResolver(messageResolver);
-                return this;
-            }
-
-            @Override
-            public MessageContextBuilder localeResolver(LocaleResolver localeResolver)
-            {
-                newMessageContextConfig.setLocaleResolver(localeResolver);
-                return this;
-            }
-
-            @Override
-            public MessageContext create()
-            {
-                return new DefaultMessageContext(newMessageContextConfig);
-            }
-        };
-    }
-
-    @Override
-    public MessageContextBuilder change()
-    {
-        return new MessageContextBuilder()
-        {
-            @Override
-            public MessageContextBuilder messageInterpolator(MessageInterpolator messageInterpolator)
-            {
-                setMessageInterpolator(messageInterpolator);
-                return this;
-            }
-
-            @Override
-            public MessageContextBuilder messageResolver(MessageResolver messageResolver)
-            {
-                setMessageResolver(messageResolver);
-                return this;
-            }
-
-            @Override
-            public MessageContextBuilder localeResolver(LocaleResolver localeResolver)
-            {
-                setLocaleResolver(localeResolver);
-                return this;
-            }
-
-            @Override
-            public MessageContext create()
-            {
-                return new DefaultMessageContext(DefaultMessageContextConfig.this);
-            }
-        };
-    }
-
-    @Override
-    public MessageInterpolator getMessageInterpolator()
-    {
-        return messageInterpolator;
-    }
-
-    @Override
-    public MessageResolver getMessageResolver()
-    {
-        return messageResolver;
-    }
-
-    @Override
-    public LocaleResolver getLocaleResolver()
-    {
-        return localeResolver;
-    }
-
-    private void setMessageInterpolator(MessageInterpolator messageInterpolator)
-    {
-        this.messageInterpolator = messageInterpolator;
-    }
-
-    private void setMessageResolver(MessageResolver messageResolver)
-    {
-        this.messageResolver = messageResolver;
-    }
-
-    private void setLocaleResolver(LocaleResolver localeResolver)
-    {
-        this.localeResolver = localeResolver;
-    }
-
-    @Override
-    public String toString()
-    {
-        String newLine = System.getProperty("line.separator");
-
-        StringBuilder configInfo = new StringBuilder("MessageContextConfig class: ");
-        configInfo.append(getClass().getName());
-        configInfo.append(newLine);
-
-        if (messageInterpolator != null)
-        {
-            configInfo.append("   MessageInterpolator class: ").append(messageInterpolator.getClass());
-        }
-        else
-        {
-            configInfo.append("   no MessageInterpolator");
-        }
-        configInfo.append(newLine);
-
-        if (messageResolver != null)
-        {
-            configInfo.append("   MessageResolver class: ").append(messageResolver.getClass());
-        }
-        else
-        {
-            configInfo.append("   no MessageResolver");
-        }
-        configInfo.append(newLine);
-
-        configInfo.append(newLine);
-
-        if (localeResolver != null)
-        {
-            configInfo.append("   LocaleResolver class: ").append(localeResolver.getClass());
-        }
-        else
-        {
-            configInfo.append("   no LocaleResolver");
-        }
-        configInfo.append(newLine);
-
-        return configInfo.toString();
-    }
-
-    /*
-     * generated
-     */
-
-    @Override
-    public boolean equals(Object o)
-    {
-        if (this == o)
-        {
-            return true;
-        }
-        if (!(o instanceof DefaultMessageContextConfig))
-        {
-            return false;
-        }
-
-        DefaultMessageContextConfig that = (DefaultMessageContextConfig) o;
-
-        if (!localeResolver.equals(that.localeResolver))
-        {
-            return false;
-        }
-        if (messageInterpolator != null
-                ? !messageInterpolator.equals(that.messageInterpolator) : that.messageInterpolator != null)
-        {
-            return false;
-        }
-        //noinspection RedundantIfStatement
-        if (messageResolver != null ? !messageResolver.equals(that.messageResolver) : that.messageResolver != null)
-        {
-            return false;
-        }
-
-        return true;
-    }
-
-    @Override
-    public int hashCode()
-    {
-        int result = messageInterpolator != null ? messageInterpolator.hashCode() : 0;
-        result = 31 * result + (messageResolver != null ? messageResolver.hashCode() : 0);
-        result = 31 * result + localeResolver.hashCode();
-        return result;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/f0f8043c/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageBundleInvocationHandler.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageBundleInvocationHandler.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageBundleInvocationHandler.java
index 3c73b75..83f6e28 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageBundleInvocationHandler.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageBundleInvocationHandler.java
@@ -86,17 +86,17 @@ class MessageBundleInvocationHandler implements InvocationHandler
     private MessageContext applyMessageContextConfig(MessageContextConfig messageContextConfigLiteral,
                                                      String messageBundleName)
     {
-        MessageContext.Config config = new DefaultMessageContextConfig(messageContextConfigLiteral);
+        MessageContext messageContext = new DefaultMessageContext(messageContextConfigLiteral);
 
         if (MessageResolver.class.equals(messageContextConfigLiteral.messageResolver()))
         {
             MessageResolver messageResolver = new DefaultMessageResolver();
 
-            messageResolver.initialize(messageBundleName, config.getLocaleResolver().getLocale());
-            config.change().messageResolver(messageResolver);
+            messageResolver.initialize(messageBundleName, messageContext.getLocaleResolver().getLocale());
+            messageContext.setMessageResolver(messageResolver);
         }
 
-        return config.use().create();
+        return messageContext;
     }
 
     private List<Object> resolveMessageArguments(Object[] args)

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/f0f8043c/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageContextProducer.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageContextProducer.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageContextProducer.java
index 16ce572..abfc2f7 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageContextProducer.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageContextProducer.java
@@ -47,12 +47,12 @@ public class MessageContextProducer
     @Dependent
     protected MessageContext createDefaultMessageContext()
     {
-        MessageContext.Config messageContextConfig = new DefaultMessageContext().config();
+        MessageContext messageContext = new DefaultMessageContext();
 
-        messageContextConfig.change().messageInterpolator(messageInterpolator);
-        messageContextConfig.change().localeResolver(localeResolver);
-        messageContextConfig.change().messageResolver(messageResolver);
+        messageContext.setMessageInterpolator(messageInterpolator);
+        messageContext.setLocaleResolver(localeResolver);
+        messageContext.setMessageResolver(messageResolver);
 
-        return messageContextConfig.use().create();
+        return messageContext;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/f0f8043c/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/UnmodifiableMessageContext.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/UnmodifiableMessageContext.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/UnmodifiableMessageContext.java
index 859e4c5..b07e571 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/UnmodifiableMessageContext.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/UnmodifiableMessageContext.java
@@ -18,7 +18,10 @@
  */
 package org.apache.deltaspike.core.impl.message;
 
+import org.apache.deltaspike.core.api.message.LocaleResolver;
 import org.apache.deltaspike.core.api.message.MessageContext;
+import org.apache.deltaspike.core.api.message.MessageInterpolator;
+import org.apache.deltaspike.core.api.message.MessageResolver;
 
 import javax.enterprise.inject.Typed;
 import java.util.Locale;
@@ -38,14 +41,22 @@ class UnmodifiableMessageContext implements MessageContext
     }
 
     @Override
-    public MessageContext.Config config()
+    public LocaleResolver getLocaleResolver()
     {
-        return new UnmodifiableMessageContextConfig(messageContext.config());
+        return messageContext.getLocaleResolver();
     }
 
-    /*
-     * generated
-     */
+    @Override
+    public MessageInterpolator getMessageInterpolator()
+    {
+        return messageContext.getMessageInterpolator();
+    }
+
+    @Override
+    public MessageResolver getMessageResolver()
+    {
+        return messageContext.getMessageResolver();
+    }
 
     @Override
     public MessageBuilder message()
@@ -54,6 +65,24 @@ class UnmodifiableMessageContext implements MessageContext
     }
 
     @Override
+    public MessageContext setLocaleResolver(LocaleResolver localeResolver)
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public MessageContext setMessageInterpolator(MessageInterpolator messageInterpolator)
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public MessageContext setMessageResolver(MessageResolver messageResolver)
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
     public Locale getLocale()
     {
         return messageContext.getLocale();

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/f0f8043c/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/UnmodifiableMessageContextConfig.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/UnmodifiableMessageContextConfig.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/UnmodifiableMessageContextConfig.java
deleted file mode 100644
index e776c6b..0000000
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/UnmodifiableMessageContextConfig.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.
- */
-package org.apache.deltaspike.core.impl.message;
-
-import org.apache.deltaspike.core.api.message.LocaleResolver;
-import org.apache.deltaspike.core.api.message.MessageContext;
-import org.apache.deltaspike.core.api.message.MessageInterpolator;
-import org.apache.deltaspike.core.api.message.MessageResolver;
-
-import javax.enterprise.inject.Typed;
-
-/**
- * generated
- */
-@Typed()
-class UnmodifiableMessageContextConfig implements MessageContext.Config
-{
-    private MessageContext.Config messageContextConfig;
-
-    UnmodifiableMessageContextConfig(MessageContext.Config messageContextConfig)
-    {
-        this.messageContextConfig = messageContextConfig;
-    }
-
-    @Override
-    public MessageContextBuilder use()
-    {
-        //it's ok to delegate - the call of #use creates a new instance of the context - the old context is untouched
-        return messageContextConfig.use();
-    }
-
-
-    @Override
-    public MessageContextBuilder change()
-    {
-        throw new IllegalStateException(MessageContext.Config.class.getName() +
-                "is readonly after the call of MessageContext#message");
-    }
-
-    /*
-     * generated
-     */
-
-    @Override
-    public MessageInterpolator getMessageInterpolator()
-    {
-        return messageContextConfig.getMessageInterpolator();
-    }
-
-    @Override
-    public MessageResolver getMessageResolver()
-    {
-        return messageContextConfig.getMessageResolver();
-    }
-
-    @Override
-    public LocaleResolver getLocaleResolver()
-    {
-        return messageContextConfig.getLocaleResolver();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/f0f8043c/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/message/MessageContextTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/message/MessageContextTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/message/MessageContextTest.java
index 7a056c2..0b508a1 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/message/MessageContextTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/message/MessageContextTest.java
@@ -84,11 +84,10 @@ public class MessageContextTest
     {
         LocaleResolver localeResolver = new FixedEnglishLocalResolver();
 
-        String messageText = messageContext.config()
-                .use()
-                .localeResolver(localeResolver)
-                .messageResolver(new TestMessageResolver(localeResolver))
-                .create().message().text("{hello}").argument("hans").toText();
+        String messageText = messageContext
+                .setLocaleResolver(localeResolver)
+                .setMessageResolver(new TestMessageResolver(localeResolver))
+                .message().text("{hello}").argument("hans").toText();
 
         assertEquals("test message to hans", messageText);
     }
@@ -97,11 +96,10 @@ public class MessageContextTest
     public void resolveGermanMessageTextTest()
     {
         LocaleResolver localeResolver = new FixedGermanLocaleResolver();
-        String messageText = messageContext.config()
-                .use()
-                .localeResolver(localeResolver)
-                .messageResolver(new TestMessageResolver(localeResolver))
-                .create().message().text("{hello}").argument("hans").toText();
+        String messageText = messageContext
+                .setLocaleResolver(localeResolver)
+                .setMessageResolver(new TestMessageResolver(localeResolver))
+                .message().text("{hello}").argument("hans").toText();
 
         assertEquals("Test Nachricht an hans", messageText);
     }