You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2017/06/19 09:29:11 UTC
[2/6] incubator-freemarker git commit: FREEMARKER-54: Support Version
convertion editor between string and Version object for spring community
FREEMARKER-54: Support Version convertion editor between string and Version object for spring community
Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/cb43725a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/cb43725a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/cb43725a
Branch: refs/heads/3
Commit: cb43725a79e851c11d4552d3a5ab0b6d70d43e9d
Parents: 9482852
Author: Woonsan Ko <wo...@apache.org>
Authored: Sun Jun 18 23:13:56 2017 -0400
Committer: Woonsan Ko <wo...@apache.org>
Committed: Sun Jun 18 23:13:56 2017 -0400
----------------------------------------------------------------------
.../freemarker/core/VersionEditorTest.java | 119 +++++++++++++++++++
.../apache/freemarker/core/VersionEditor.java | 53 +++++++++
.../spring/ConfigurationFactoryBeanTest.java | 2 +-
.../freemarker/spring/VersionPropertyTest.java | 76 ++++++++++++
4 files changed, 249 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cb43725a/freemarker-core-test/src/test/java/org/apache/freemarker/core/VersionEditorTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/VersionEditorTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/VersionEditorTest.java
new file mode 100644
index 0000000..60c4746
--- /dev/null
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/VersionEditorTest.java
@@ -0,0 +1,119 @@
+/*
+ * 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.freemarker.core;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import org.junit.Test;
+
+public class VersionEditorTest {
+
+ @Test
+ public void testFromString() {
+ VersionEditor editor = new VersionEditor();
+ editor.setAsText("1.2.3-beta2");
+ Version v = (Version) editor.getValue();
+ assertEquals("1.2.3-beta2", v.toString());
+ assertEquals("1.2.3-beta2", editor.getAsText());
+ }
+
+ @Test
+ public void testFromString2() {
+ VersionEditor editor = new VersionEditor();
+ editor.setAsText("01.002.0003-20130524");
+ Version v = (Version) editor.getValue();
+ assertEquals("01.002.0003-20130524", v.toString());
+ assertEquals("01.002.0003-20130524", editor.getAsText());
+
+ editor.setAsText("01.002.0003.4");
+ v = (Version) editor.getValue();
+ assertEquals("01.002.0003.4", v.toString());
+ assertEquals("01.002.0003.4", editor.getAsText());
+
+ editor.setAsText("1.2.3.FC");
+ v = (Version) editor.getValue();
+ assertEquals("1.2.3.FC", v.toString());
+ assertEquals("1.2.3.FC", editor.getAsText());
+
+ editor.setAsText("1.2.3mod");
+ v = (Version) editor.getValue();
+ assertEquals("1.2.3mod", v.toString());
+ assertEquals("1.2.3mod", editor.getAsText());
+
+ }
+
+ @Test
+ public void testFromStringIncubating() {
+ VersionEditor editor = new VersionEditor();
+ editor.setAsText("2.3.24-rc01-incubating");
+ Version v = (Version) editor.getValue();
+ assertEquals("2.3.24-rc01-incubating", v.toString());
+ assertEquals("2.3.24-rc01-incubating", editor.getAsText());
+ }
+
+ @Test
+ public void testMalformed() {
+ VersionEditor editor = new VersionEditor();
+
+ try {
+ editor.setAsText("1.2.");
+ fail();
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+
+ try {
+ editor.setAsText("1.2.3.");
+ fail();
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+
+ try {
+ editor.setAsText("1..3");
+ fail();
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+
+ try {
+ editor.setAsText(".2");
+ fail();
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+
+ try {
+ editor.setAsText("a");
+ fail();
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+
+ try {
+ editor.setAsText("-a");
+ fail();
+ } catch (IllegalArgumentException e) {
+ // expected
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cb43725a/freemarker-core/src/main/java/org/apache/freemarker/core/VersionEditor.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/VersionEditor.java b/freemarker-core/src/main/java/org/apache/freemarker/core/VersionEditor.java
new file mode 100644
index 0000000..7b17ae9
--- /dev/null
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/VersionEditor.java
@@ -0,0 +1,53 @@
+/*
+ * 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.freemarker.core;
+
+import java.beans.PropertyEditor;
+import java.beans.PropertyEditorSupport;
+
+/**
+ * {@link PropertyEditor} for {@link Version}, to directly populate a <code>Version</code> property
+ * instead of using a String property as bridge.
+ */
+public class VersionEditor extends PropertyEditorSupport {
+
+ /**
+ * Create a new VersionEditor.
+ */
+ public VersionEditor() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setAsText(String versionString) throws IllegalArgumentException {
+ setValue(new Version(versionString));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getAsText() {
+ Version version = (Version) getValue();
+ return (version != null ? version.toString() : null);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cb43725a/freemarker-spring/src/test/java/org/apache/freemarker/spring/ConfigurationFactoryBeanTest.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/ConfigurationFactoryBeanTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/ConfigurationFactoryBeanTest.java
index ddfd320..a77e944 100644
--- a/freemarker-spring/src/test/java/org/apache/freemarker/spring/ConfigurationFactoryBeanTest.java
+++ b/freemarker-spring/src/test/java/org/apache/freemarker/spring/ConfigurationFactoryBeanTest.java
@@ -106,7 +106,7 @@ public class ConfigurationFactoryBeanTest {
// </bean>
BeanDefinition beanDef =
BeanDefinitionBuilder.genericBeanDefinition(ConfigurationFactoryBean.class.getName())
- .addPropertyValue("incompatibleImprovements", new Version(3, 0, 0))
+ .addPropertyValue("incompatibleImprovements", "3.0.0")
.addPropertyValue("settings", settings)
.addPropertyValue("sharedVariables", sharedVars)
.addPropertyValue("templateUpdateDelayMilliseconds", 60000)
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cb43725a/freemarker-spring/src/test/java/org/apache/freemarker/spring/VersionPropertyTest.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/VersionPropertyTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/VersionPropertyTest.java
new file mode 100644
index 0000000..ff69a75
--- /dev/null
+++ b/freemarker-spring/src/test/java/org/apache/freemarker/spring/VersionPropertyTest.java
@@ -0,0 +1,76 @@
+/*
+ * 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.freemarker.spring;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.freemarker.core.Version;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.context.support.GenericApplicationContext;
+
+public class VersionPropertyTest {
+
+ private GenericApplicationContext appContext;
+
+ @Before
+ public void setUp() throws Exception {
+ appContext = new GenericApplicationContext();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ if (appContext.isActive()) {
+ appContext.stop();
+ appContext.destroy();
+ appContext.close();
+ }
+ }
+
+ @Test
+ public void testVersionPropertySettingByString() throws Exception {
+ BeanDefinition beanDef =
+ BeanDefinitionBuilder.genericBeanDefinition(VersionHolder.class.getName())
+ .addPropertyValue("version", "3.1.4-beta1592")
+ .getBeanDefinition();
+
+ appContext.registerBeanDefinition("versionHolder", beanDef);
+ appContext.refresh();
+ appContext.start();
+
+ VersionHolder versionHolder = appContext.getBean("versionHolder", VersionHolder.class);
+ assertEquals(new Version("3.1.4-beta1592"), versionHolder.getVersion());
+ }
+
+ public static class VersionHolder {
+
+ private Version version;
+
+ public Version getVersion() {
+ return version;
+ }
+
+ public void setVersion(Version version) {
+ this.version = version;
+ }
+ }
+}