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 2013/05/11 13:49:03 UTC

git commit: DELTASPIKE-355 add Alternative MessageInterpolator using MessageFormatter

Updated Branches:
  refs/heads/master 709fdb7cd -> 7aea84015


DELTASPIKE-355 add Alternative MessageInterpolator using MessageFormatter

Simple add an <alternative> to your beans.xml where you gonna like to use it.


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

Branch: refs/heads/master
Commit: 7aea840155ec68cb9386b415ca59cfd1c76a62fe
Parents: 709fdb7
Author: Mark Struberg <st...@apache.org>
Authored: Sat May 11 13:47:49 2013 +0200
Committer: Mark Struberg <st...@apache.org>
Committed: Sat May 11 13:47:49 2013 +0200

----------------------------------------------------------------------
 .../message/MessageFormatMessageInterpolator.java  |   50 ++++++++
 .../core/api/message/MessageFormattedMessage.java  |   35 ++++++
 .../api/message/MessageFormattedMessageTest.java   |   92 +++++++++++++++
 .../api/message/MessageFormattedMessage.properties |   19 +++
 4 files changed, 196 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/7aea8401/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageFormatMessageInterpolator.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageFormatMessageInterpolator.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageFormatMessageInterpolator.java
new file mode 100644
index 0000000..4230d4e
--- /dev/null
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/message/MessageFormatMessageInterpolator.java
@@ -0,0 +1,50 @@
+/*
+ * 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 javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Alternative;
+import java.io.Serializable;
+import java.util.Locale;
+import java.text.MessageFormat;
+
+import org.apache.deltaspike.core.api.message.MessageInterpolator;
+
+/**
+ * This is an Alternative implementation of a {@link MessageInterpolator} which
+ * uses java.text.MessageFormat for formatting.
+ *
+ * Please note that for some EE containers you might need to add this &lt;alternative&gt>
+ * to all JARs and classpath entries beanx.xml files.
+ *
+ * {@inheritDoc}
+ */
+@ApplicationScoped
+@Alternative
+public class MessageFormatMessageInterpolator implements MessageInterpolator, Serializable
+{
+    private static final long serialVersionUID = -8854087197813424812L;
+
+    @Override
+    public String interpolate(String messageTemplate, Serializable[] arguments, Locale locale)
+    {
+        MessageFormat messageFormat = new MessageFormat(messageTemplate, locale);
+        return messageFormat.format(arguments);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/7aea8401/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/message/MessageFormattedMessage.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/message/MessageFormattedMessage.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/message/MessageFormattedMessage.java
new file mode 100644
index 0000000..caf90ac
--- /dev/null
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/message/MessageFormattedMessage.java
@@ -0,0 +1,35 @@
+/*
+ * 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.test.core.api.message;
+
+import org.apache.deltaspike.core.api.message.MessageBundle;
+
+/**
+ * This is a test {@link MessageBundle} which uses the
+ * Alternative {@link org.apache.deltaspike.core.impl.message.MessageFormatMessageInterpolator}
+ * for formatting
+ */
+@MessageBundle
+public interface MessageFormattedMessage
+{
+
+    String welcomeTo(String name);
+
+    String incomeSinceDays(int days, float income);
+}

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/7aea8401/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/message/MessageFormattedMessageTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/message/MessageFormattedMessageTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/message/MessageFormattedMessageTest.java
new file mode 100644
index 0000000..be3e69a
--- /dev/null
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/message/MessageFormattedMessageTest.java
@@ -0,0 +1,92 @@
+/*
+ * 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.test.core.api.message;
+
+import javax.enterprise.inject.spi.Extension;
+import javax.inject.Inject;
+
+import org.apache.deltaspike.core.impl.message.MessageBundleExtension;
+import org.apache.deltaspike.core.impl.message.MessageFormatMessageInterpolator;
+import org.apache.deltaspike.test.category.SeCategory;
+import org.apache.deltaspike.test.util.ArchiveUtils;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.Asset;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Test for {@link MessageFormatMessageInterpolator}
+ * formatted messages.
+ */
+@RunWith(Arquillian.class)
+@Category(SeCategory.class)
+public class MessageFormattedMessageTest
+{
+    @Inject
+    private MessageFormattedMessage message;
+
+
+    /**
+     * X TODO creating a WebArchive is only a workaround because JavaArchive
+     * cannot contain other archives.
+     */
+    @Deployment
+    public static WebArchive deploy()
+    {
+        Asset beansXml = new StringAsset(
+                "<beans><alternatives>" +
+                        "<class>" + MessageFormatMessageInterpolator.class.getName() + "</class>" +
+                        "</alternatives></beans>"
+        );
+        JavaArchive testJar = ShrinkWrap
+                .create(JavaArchive.class, "messageFormattedMessageTest.jar")
+                .addPackage(MessageFormattedMessageTest.class.getPackage())
+                .addAsManifestResource(beansXml, "beans.xml");
+
+        return ShrinkWrap
+                .create(WebArchive.class, "messageFormattedMessageTest.war")
+                .addAsLibraries(ArchiveUtils.getDeltaSpikeCoreArchive())
+                .addAsLibraries(testJar)
+                .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
+                .addAsServiceProvider(Extension.class,
+                        MessageBundleExtension.class);
+    }
+
+    @Test
+    public void testSimpleMessage()
+    {
+        assertEquals("Welcome to DeltaSpike", message.welcomeTo("DeltaSpike"));
+        assertEquals("The income since 42 days is 12.34", message.incomeSinceDays(42, 12.34f));
+    }
+
+    @Test
+    public void testNullMessage()
+    {
+        assertEquals("Welcome to 'null'", message.welcomeTo(null));
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/7aea8401/deltaspike/core/impl/src/test/resources/org/apache/deltaspike/test/core/api/message/MessageFormattedMessage.properties
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/test/resources/org/apache/deltaspike/test/core/api/message/MessageFormattedMessage.properties b/deltaspike/core/impl/src/test/resources/org/apache/deltaspike/test/core/api/message/MessageFormattedMessage.properties
new file mode 100644
index 0000000..b6cfa66
--- /dev/null
+++ b/deltaspike/core/impl/src/test/resources/org/apache/deltaspike/test/core/api/message/MessageFormattedMessage.properties
@@ -0,0 +1,19 @@
+#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.
+
+welcomeTo = Welcome to {0}
+incomeSinceDays = The income since {0} days is {1}