Debugging this and InetAddress.getByName is returning an InetAddress object. The value is Host: dcc071ab-bc05-46ed-bfc0-be5fe876f6ea Address: 92.242.140.2
Ralph > On Jan 9, 2017, at 7:12 PM, Matt Sicker <boa...@gmail.com> wrote: > > Not sure how that's possible, but I added a better assert message. Let me > know if you're still having an issue with it. Is it a failure from IntelliJ > or Maven? > > On 9 January 2017 at 19:47, Apache <ralph.go...@dslextreme.com > <mailto:ralph.go...@dslextreme.com>> wrote: > This commit appears to be failing for me. The testInvalidIpAddress method is > failing on the assert. > > Ralph > > > On Dec 30, 2016, at 2:01 PM, mattsic...@apache.org > > <mailto:mattsic...@apache.org> wrote: > > > > Repository: logging-log4j2 > > Updated Branches: > > refs/heads/master 367d26b09 -> 4254e2558 > > > > > > [LOG4J2-1755]: Add converters and validators for hostnames/ports > > > > > > Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo > > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo> > > Commit: > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/4254e255 > > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/4254e255> > > Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/4254e255 > > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/4254e255> > > Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/4254e255 > > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/4254e255> > > > > Branch: refs/heads/master > > Commit: 4254e2558d27351774c4bf2ad24471ca05e00018 > > Parents: 367d26b > > Author: Matt Sicker <matt.sic...@spr.com <mailto:matt.sic...@spr.com>> > > Authored: Fri Dec 30 15:00:17 2016 -0600 > > Committer: Matt Sicker <matt.sic...@spr.com <mailto:matt.sic...@spr.com>> > > Committed: Fri Dec 30 15:01:26 2016 -0600 > > > > ---------------------------------------------------------------------- > > .../config/plugins/convert/TypeConverters.java | 13 +++- > > .../validation/constraints/ValidHost.java | 41 +++++++++++ > > .../validation/constraints/ValidPort.java | 44 ++++++++++++ > > .../validators/ValidHostValidator.java | 58 +++++++++++++++ > > .../validators/ValidPortValidator.java | 53 ++++++++++++++ > > .../config/plugins/validation/HostAndPort.java | 46 ++++++++++++ > > .../validators/ValidHostValidatorTest.java | 74 ++++++++++++++++++++ > > .../validators/ValidPortValidatorTest.java | 70 ++++++++++++++++++ > > src/changes/changes.xml | 3 + > > 9 files changed, 401 insertions(+), 1 deletion(-) > > ---------------------------------------------------------------------- > > > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java > > > > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java> > > ---------------------------------------------------------------------- > > diff --git > > a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java > > > > b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java > > index 2895e52..421d711 100644 > > --- > > a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java > > +++ > > b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/convert/TypeConverters.java > > @@ -20,6 +20,7 @@ package > > org.apache.logging.log4j.core.config.plugins.convert; > > import java.io.File; > > import java.math.BigDecimal; > > import java.math.BigInteger; > > +import java.net.InetAddress; > > import java.net <http://java.net/>.MalformedURLException; > > import java.net.URI; > > import java.net.URISyntaxException; > > @@ -28,7 +29,6 @@ import java.nio.charset.Charset; > > import java.security.Provider; > > import java.security.Security; > > import java.util.regex.Pattern; > > - > > import javax.xml.bind.DatatypeConverter; > > > > import org.apache.logging.log4j.Level; > > @@ -233,6 +233,17 @@ public final class TypeConverters { > > } > > > > /** > > + * Converts a {@link String} into an {@link InetAddress}. > > + */ > > + @Plugin(name = "InetAddress", category = CATEGORY) > > + public static class InetAddressConverter implements > > TypeConverter<InetAddress> { > > + @Override > > + public InetAddress convert(final String s) throws Exception { > > + return InetAddress.getByName(s); > > + } > > + } > > + > > + /** > > * Converts a {@link String} into a {@link Integer}. > > */ > > @Plugin(name = "Integer", category = CATEGORY) > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/ValidHost.java > > > > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/ValidHost.java> > > ---------------------------------------------------------------------- > > diff --git > > a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/ValidHost.java > > > > b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/ValidHost.java > > new file mode 100644 > > index 0000000..c652d40 > > --- /dev/null > > +++ > > b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/ValidHost.java > > @@ -0,0 +1,41 @@ > > +/* > > + * 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 > > <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.logging.log4j.core.config.plugins.validation.constraints; > > + > > +import org.apache.logging.log4j.core.config.plugins.validation.Constraint; > > +import > > org.apache.logging.log4j.core.config.plugins.validation.validators.ValidHostValidator; > > + > > +import java.lang.annotation.*; > > +import java.net.InetAddress; > > + > > +/** > > + * Indicates that a plugin attribute must be a valid host. This relies on > > the same validation rules as > > + * {@link InetAddress#getByName(String)}. > > + * > > + * @since 2.8 > > + */ > > +@Documented > > +@Retention(RetentionPolicy.RUNTIME) > > +@Target({ElementType.FIELD, ElementType.PARAMETER}) > > +@Constraint(ValidHostValidator.class) > > +public @interface ValidHost { > > + > > + /** > > + * The message to be logged if this constraint is violated. This > > should normally be overridden. > > + */ > > + String message() default "The hostname is invalid"; > > +} > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/ValidPort.java > > > > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/ValidPort.java> > > ---------------------------------------------------------------------- > > diff --git > > a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/ValidPort.java > > > > b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/ValidPort.java > > new file mode 100644 > > index 0000000..a7c68b1 > > --- /dev/null > > +++ > > b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/constraints/ValidPort.java > > @@ -0,0 +1,44 @@ > > +/* > > + * 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 > > <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.logging.log4j.core.config.plugins.validation.constraints; > > + > > +import java.lang.annotation.Documented; > > +import java.lang.annotation.ElementType; > > +import java.lang.annotation.Retention; > > +import java.lang.annotation.RetentionPolicy; > > +import java.lang.annotation.Target; > > + > > +import org.apache.logging.log4j.core.config.plugins.validation.Constraint; > > +import > > org.apache.logging.log4j.core.config.plugins.validation.validators.ValidPortValidator; > > + > > +/** > > + * Indicates that a plugin attribute must be a valid port number. A valid > > port number is an integer between 0 and > > + * 65535. > > + * > > + * @since 2.8 > > + */ > > +@Documented > > +@Retention(RetentionPolicy.RUNTIME) > > +@Target({ElementType.FIELD, ElementType.PARAMETER}) > > +@Constraint(ValidPortValidator.class) > > +public @interface ValidPort { > > + > > + /** > > + * The message to be logged if this constraint is violated. This > > should normally be overridden. > > + */ > > + String message() default "The port number is invalid"; > > +} > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidator.java > > > > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidator.java> > > ---------------------------------------------------------------------- > > diff --git > > a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidator.java > > > > b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidator.java > > new file mode 100644 > > index 0000000..3669915 > > --- /dev/null > > +++ > > b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidator.java > > @@ -0,0 +1,58 @@ > > +/* > > + * 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 > > <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.logging.log4j.core.config.plugins.validation.validators; > > + > > +import org.apache.logging.log4j.Logger; > > +import > > org.apache.logging.log4j.core.config.plugins.validation.ConstraintValidator; > > +import > > org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidHost; > > +import org.apache.logging.log4j.status.StatusLogger; > > + > > +import java.net.InetAddress; > > +import java.net.UnknownHostException; > > + > > +/** > > + * Validator that checks an object to verify it is a valid hostname or IP > > address. Validation rules follow the same > > + * logic as in {@link InetAddress#getByName(String)}. > > + * > > + * @since 2.8 > > + */ > > +public class ValidHostValidator implements ConstraintValidator<ValidHost> { > > + > > + private static final Logger LOGGER = StatusLogger.getLogger(); > > + > > + private ValidHost annotation; > > + > > + @Override > > + public void initialize(ValidHost annotation) { > > + this.annotation = annotation; > > + } > > + > > + @Override > > + public boolean isValid(String name, Object value) { > > + if (value == null) { > > + LOGGER.error(annotation.message()); > > + return false; > > + } > > + try { > > + InetAddress.getByName(value.toString()); > > + return true; > > + } catch (final UnknownHostException e) { > > + LOGGER.error(annotation.message(), e); > > + return false; > > + } > > + } > > +} > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidator.java > > > > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidator.java> > > ---------------------------------------------------------------------- > > diff --git > > a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidator.java > > > > b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidator.java > > new file mode 100644 > > index 0000000..f18f8fc > > --- /dev/null > > +++ > > b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidator.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 > > <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.logging.log4j.core.config.plugins.validation.validators; > > + > > +import org.apache.logging.log4j.Logger; > > +import > > org.apache.logging.log4j.core.config.plugins.validation.ConstraintValidator; > > +import > > org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidPort; > > +import org.apache.logging.log4j.status.StatusLogger; > > + > > +/** > > + * Validator that checks an object to verify it is a valid port number (an > > integer between 0 and 65535). > > + * > > + * @since 2.8 > > + */ > > +public class ValidPortValidator implements ConstraintValidator<ValidPort> { > > + > > + private static final Logger LOGGER = StatusLogger.getLogger(); > > + > > + private ValidPort annotation; > > + > > + @Override > > + public void initialize(final ValidPort annotation) { > > + this.annotation = annotation; > > + } > > + > > + @Override > > + public boolean isValid(final String name, final Object value) { > > + if (!Integer.class.isInstance(value)) { > > + LOGGER.error(annotation.message()); > > + return false; > > + } > > + int port = (int) value; > > + if (port < 0 || port > 65535) { > > + LOGGER.error(annotation.message()); > > + return false; > > + } > > + return true; > > + } > > +} > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/HostAndPort.java > > > > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/HostAndPort.java> > > ---------------------------------------------------------------------- > > diff --git > > a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/HostAndPort.java > > > > b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/HostAndPort.java > > new file mode 100644 > > index 0000000..4f05d68 > > --- /dev/null > > +++ > > b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/HostAndPort.java > > @@ -0,0 +1,46 @@ > > +/* > > + * 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 > > <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.logging.log4j.core.config.plugins.validation; > > + > > +import java.net.InetSocketAddress; > > + > > +import org.apache.logging.log4j.core.config.plugins.Plugin; > > +import org.apache.logging.log4j.core.config.plugins.PluginAttribute; > > +import org.apache.logging.log4j.core.config.plugins.PluginFactory; > > +import > > org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidHost; > > +import > > org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidPort; > > + > > +@Plugin(name = "HostAndPort", category = "Test") > > +public class HostAndPort { > > + > > + private final InetSocketAddress address; > > + > > + private HostAndPort(final InetSocketAddress address) { > > + this.address = address; > > + } > > + > > + public boolean isValid() { > > + return !address.isUnresolved(); > > + } > > + > > + @PluginFactory > > + public static HostAndPort createPlugin( > > + @ValidHost(message = "Unit test (host)") @PluginAttribute("host") > > final String host, > > + @ValidPort(message = "Unit test (port)") @PluginAttribute("port") > > final int port) { > > + return new HostAndPort(new InetSocketAddress(host, port)); > > + } > > +} > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java > > > > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java> > > ---------------------------------------------------------------------- > > diff --git > > a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java > > > > b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java > > new file mode 100644 > > index 0000000..3b0480d > > --- /dev/null > > +++ > > b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java > > @@ -0,0 +1,74 @@ > > +/* > > + * 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 > > <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.logging.log4j.core.config.plugins.validation.validators; > > + > > +import java.util.UUID; > > + > > +import org.apache.logging.log4j.core.config.Node; > > +import org.apache.logging.log4j.core.config.NullConfiguration; > > +import org.apache.logging.log4j.core.config.plugins.util.PluginBuilder; > > +import org.apache.logging.log4j.core.config.plugins.util.PluginManager; > > +import org.apache.logging.log4j.core.config.plugins.util.PluginType; > > +import org.apache.logging.log4j.core.config.plugins.validation.HostAndPort; > > +import org.junit.Before; > > +import org.junit.Test; > > + > > +import static org.junit.Assert.*; > > + > > +public class ValidHostValidatorTest { > > + > > + private PluginType<HostAndPort> plugin; > > + private Node node; > > + > > + @SuppressWarnings("unchecked") > > + @Before > > + public void setUp() throws Exception { > > + final PluginManager manager = new PluginManager("Test"); > > + manager.collectPlugins(); > > + plugin = (PluginType<HostAndPort>) > > manager.getPluginType("HostAndPort"); > > + assertNotNull("Rebuild this module to ensure annotation processing > > has been done.", plugin); > > + node = new Node(null, "HostAndPort", plugin); > > + } > > + > > + @Test > > + public void testNullHost() throws Exception { > > + assertNull(buildPlugin()); > > + } > > + > > + @Test > > + public void testInvalidIpAddress() throws Exception { > > + node.getAttributes().put("host", UUID.randomUUID().toString()); > > + node.getAttributes().put("port", "1"); > > + assertNull(buildPlugin()); > > + } > > + > > + @Test > > + public void testLocalhost() throws Exception { > > + node.getAttributes().put("host", "localhost"); > > + node.getAttributes().put("port", "1"); > > + final HostAndPort hostAndPort = buildPlugin(); > > + assertNotNull(hostAndPort); > > + assertTrue(hostAndPort.isValid()); > > + } > > + > > + private HostAndPort buildPlugin() { > > + return (HostAndPort) new PluginBuilder(plugin) > > + .withConfiguration(new NullConfiguration()) > > + .withConfigurationNode(node) > > + .build(); > > + } > > +} > > \ No newline at end of file > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidatorTest.java > > > > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidatorTest.java> > > ---------------------------------------------------------------------- > > diff --git > > a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidatorTest.java > > > > b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidatorTest.java > > new file mode 100644 > > index 0000000..3aab08d > > --- /dev/null > > +++ > > b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidPortValidatorTest.java > > @@ -0,0 +1,70 @@ > > +/* > > + * 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 > > <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.logging.log4j.core.config.plugins.validation.validators; > > + > > +import org.apache.logging.log4j.core.config.Node; > > +import org.apache.logging.log4j.core.config.NullConfiguration; > > +import org.apache.logging.log4j.core.config.plugins.util.PluginBuilder; > > +import org.apache.logging.log4j.core.config.plugins.util.PluginManager; > > +import org.apache.logging.log4j.core.config.plugins.util.PluginType; > > +import org.apache.logging.log4j.core.config.plugins.validation.HostAndPort; > > +import org.junit.Before; > > +import org.junit.Test; > > + > > +import static org.junit.Assert.*; > > + > > +public class ValidPortValidatorTest { > > + private PluginType<HostAndPort> plugin; > > + private Node node; > > + > > + @SuppressWarnings("unchecked") > > + @Before > > + public void setUp() throws Exception { > > + final PluginManager manager = new PluginManager("Test"); > > + manager.collectPlugins(); > > + plugin = (PluginType<HostAndPort>) > > manager.getPluginType("HostAndPort"); > > + assertNotNull("Rebuild this module to ensure annotation processing > > has been done.", plugin); > > + node = new Node(null, "HostAndPort", plugin); > > + node.getAttributes().put("host", "localhost"); > > + } > > + > > + @Test > > + public void testNegativePort() throws Exception { > > + node.getAttributes().put("port", "-1"); > > + assertNull(buildPlugin()); > > + } > > + > > + @Test > > + public void testValidPort() throws Exception { > > + node.getAttributes().put("port", "10"); > > + assertNotNull(buildPlugin()); > > + } > > + > > + @Test > > + public void testInvalidPort() throws Exception { > > + node.getAttributes().put("port", "1234567890"); > > + assertNull(buildPlugin()); > > + } > > + > > + private HostAndPort buildPlugin() { > > + return (HostAndPort) new PluginBuilder(plugin) > > + .withConfiguration(new NullConfiguration()) > > + .withConfigurationNode(node) > > + .build(); > > + } > > + > > +} > > \ No newline at end of file > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/src/changes/changes.xml > > > > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4254e255/src/changes/changes.xml> > > ---------------------------------------------------------------------- > > diff --git a/src/changes/changes.xml b/src/changes/changes.xml > > index c05de09..bc08dbb 100644 > > --- a/src/changes/changes.xml > > +++ b/src/changes/changes.xml > > @@ -213,6 +213,9 @@ > > <action issue="LOG4J2-1302" dev="rpopma" type="update"> > > The log4j-slf4j-impl module now declares a runtime dependency on > > log4j-core. While not technically required, this makes the log4j-slf4j-impl > > module behave similarly to slf4j-log4j12, and facilitates migration to > > Log4j 2. > > </action> > > + <action issue="LOG4J2-1755" dev="mattsicker" type="add"> > > + Add converters and validators related to hostnames and ports. > > + </action> > > <action issue="LOG4J2-969" dev="ggregory" type="add"> > > Refactor SyslogAppender so that Layout is a Plugin element. > > </action> > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org > <mailto:log4j-dev-unsubscr...@logging.apache.org> > For additional commands, e-mail: log4j-dev-h...@logging.apache.org > <mailto:log4j-dev-h...@logging.apache.org> > > > > > -- > Matt Sicker <boa...@gmail.com <mailto:boa...@gmail.com>>