Package org.custommonkey.xmlunit.util

Examples of org.custommonkey.xmlunit.util.IntegerBuffer


        StringBuffer sb = new StringBuffer(DOCTYPE_OPEN_DECL);
        sb.append(DOCTYPE).append(name).append(SYSTEM)
            .append(systemId).append('\"').append(DOCTYPE_CLOSE_DECL);
        String s = sb.toString();
        IntegerBuffer buf =
            new IntegerBuffer(s.length() * (characters ? 1 : 2));

        if (characters) {
            char[] c = s.toCharArray();
            for (int i = 0; i < c.length; i++) {
                buf.append(c[i]);
            }
        } else {
            try {
                byte[] b = encoding == null
                    ? s.getBytes() : s.getBytes(encoding);
                for (int i = 0; i < b.length; i++) {
                    buf.append(b[i] & 0xFF);
                }
            } catch (java.io.UnsupportedEncodingException use) {
                throw new XMLUnitRuntimeException("Unsupported encoding", use);
            }
        }
View Full Code Here


     * the declaration.  Fills beforeDecl and afterDecl from the data
     * read ahead.  Swallows the original DOCTYPE if there is one.
     */
    private void split() throws IOException {
        hasSplit = true;
        IntegerBuffer before = new IntegerBuffer();
        IntegerBuffer after = new IntegerBuffer();

        int current;
        boolean ready = false;
        boolean stillNeedToSeeDoctype = true;
        while (!ready && (current = original.read()) != -1) {
            if (Character.isWhitespace((char) current)) {
                before.append(current);
            } else if (current == '<') {
                // could be XML declaration, comment, PI, DOCTYPE
                // or the first element
                int[] elementOrDeclOr = readUntilCloseCharIsReached();
                if (elementOrDeclOr.length > 0) {
                    if (elementOrDeclOr[0] == '?') {
                        // XML declaration or PI
                        before.append('<');
                        before.append(elementOrDeclOr);
                    } else if (elementOrDeclOr[0] != '!') {
                        // first element
                        after.append('<');
                        after.append(elementOrDeclOr);
                        stillNeedToSeeDoctype = false;
                        ready = true;
                    } else {
                        // comment or doctype
                        IntegerBuffer b =
                            new IntegerBuffer(elementOrDeclOr.length);
                        b.append(elementOrDeclOr);
                        if (b.indexOf(DOCTYPE_INTS) == -1) {
                            after.append('<');
                            after.append(elementOrDeclOr);
                        } else {
                            // swallow old declaration
                            stillNeedToSeeDoctype = false;
                        }
                        ready = true;
                    }
                } else {
                    after.append('<');
                    stillNeedToSeeDoctype = false;
                    ready = true;
                }
            } else {
                after.append(current);
                stillNeedToSeeDoctype = false;
                ready = true;
            }
        }

        // need to eliminate original DOCTYPE if it exists
        while (stillNeedToSeeDoctype && (current = original.read()) != -1) {
            if (Character.isWhitespace((char) current)) {
                after.append(current);
            } else if (current == '<') {
                int[] elementOrDeclOr = readUntilCloseCharIsReached();
                if (elementOrDeclOr.length > 0) {
                    if (elementOrDeclOr[0] == '?') {
                        // PI
                        after.append('<');
                        after.append(elementOrDeclOr);
                    } else if (elementOrDeclOr[0] != '!') {
                        // first element
                        after.append('<');
                        after.append(elementOrDeclOr);
                        stillNeedToSeeDoctype = false;
                    } else {
                        // comment or doctype
                        IntegerBuffer b =
                            new IntegerBuffer(elementOrDeclOr.length);
                        b.append(elementOrDeclOr);
                        if (b.indexOf(DOCTYPE_INTS) == -1) {
                            after.append('<');
                            after.append(elementOrDeclOr);
                        } else {
                            // swallow old declaration
                            stillNeedToSeeDoctype = false;
View Full Code Here

        afterDoctype = after.size() > 0
            ? new IntBufferReadable(after) : null;
    }

    private int[] readUntilCloseCharIsReached() throws IOException {
        IntegerBuffer i = new IntegerBuffer();
        int intRead = -1;
        int openCount = 1;
        while (openCount > 0 && (intRead = original.read()) != -1) {
            i.append(intRead);
            if (intRead == '<') {
                openCount++;
            }
            if (intRead == '>') {
                openCount--;
            }
        }
        return i.toIntArray();
    }
View Full Code Here

TOP

Related Classes of org.custommonkey.xmlunit.util.IntegerBuffer

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.