I suspect this is my ISP at work. When I enter an invalid domain I get a web site from cox.net <http://cox.net/> saying it can’t find the domain and it offers suggestions for other sites.
I think this test has to be removed. Ralph > On Jan 9, 2017, at 7:28 PM, Matt Sicker <boa...@gmail.com> wrote: > > Well technically a UUID can be a valid hostname itself besides being > interpreted as a hex-encoded IP address (if the rest of it gets chopped off). > I've updated the test to use a jumble of invalid hostname characters instead. > > On 9 January 2017 at 20:26, Apache <ralph.go...@dslextreme.com > <mailto:ralph.go...@dslextreme.com>> wrote: > nslookup dcc071ab-bc05-46ed-bfc0-be5fe876f6ea > Server: 2001:578:3f::30 > Address: 2001:578:3f::30#53 > > Non-authoritative answer: > Name: dcc071ab-bc05-46ed-bfc0-be5fe876f6ea > Address: 92.242.140.2 > > > >> On Jan 9, 2017, at 7:24 PM, Matt Sicker <boa...@gmail.com >> <mailto:boa...@gmail.com>> wrote: >> >> I suppose technically the first part of a UUID can be an IPv4 address >> encoded in hex. I'll make a better invalid value. >> >> On 9 January 2017 at 20:20, Apache <ralph.go...@dslextreme.com >> <mailto:ralph.go...@dslextreme.com>> wrote: >> 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 >>> <mailto: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.to <http://value.to/>String()); >>> > + 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>> >> >> >> >> >> -- >> Matt Sicker <boa...@gmail.com <mailto:boa...@gmail.com>> > > > > > -- > Matt Sicker <boa...@gmail.com <mailto:boa...@gmail.com>>