Home / Class/ UrlDecoder Class — netty Architecture

UrlDecoder Class — netty Architecture

Architecture documentation for the UrlDecoder class in HttpPostStandardRequestDecoder.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  9b054005_526c_b786_7ba7_c57595aa32ad["UrlDecoder"]
  aef5f11a_4b54_0423_5943_aa0ce050ca0a["HttpPostStandardRequestDecoder.java"]
  9b054005_526c_b786_7ba7_c57595aa32ad -->|defined in| aef5f11a_4b54_0423_5943_aa0ce050ca0a
  183a8c5f_e92a_096c_ee5a_bc86d5677d66["UrlDecoder()"]
  9b054005_526c_b786_7ba7_c57595aa32ad -->|method| 183a8c5f_e92a_096c_ee5a_bc86d5677d66
  f14266b0_69f9_4dca_8926_045fa8ecf4bb["process()"]
  9b054005_526c_b786_7ba7_c57595aa32ad -->|method| f14266b0_69f9_4dca_8926_045fa8ecf4bb

Relationship Graph

Source Code

codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostStandardRequestDecoder.java lines 683–718

    private static final class UrlDecoder implements ByteProcessor {

        private final ByteBuf output;
        private int nextEscapedIdx;
        private byte hiByte;

        UrlDecoder(ByteBuf output) {
            this.output = output;
        }

        @Override
        public boolean process(byte value) {
            if (nextEscapedIdx != 0) {
                if (nextEscapedIdx == 1) {
                    hiByte = value;
                    ++nextEscapedIdx;
                } else {
                    int hi = StringUtil.decodeHexNibble((char) hiByte);
                    int lo = StringUtil.decodeHexNibble((char) value);
                    if (hi == -1 || lo == -1) {
                        ++nextEscapedIdx;
                        return false;
                    }
                    output.writeByte((hi << 4) + lo);
                    nextEscapedIdx = 0;
                }
            } else if (value == '%') {
                nextEscapedIdx = 1;
            } else if (value == '+') {
                output.writeByte(' ');
            } else {
                output.writeByte(value);
            }
            return true;
        }
    }

Frequently Asked Questions

What is the UrlDecoder class?
UrlDecoder is a class in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostStandardRequestDecoder.java.
Where is UrlDecoder defined?
UrlDecoder is defined in codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostStandardRequestDecoder.java at line 683.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free