Search in sources :

Example 1 with InvalidXmlException

use of org.apache.hadoop.hdfs.util.XMLUtils.InvalidXmlException in project hadoop by apache.

the class OfflineEditsXmlLoader method startElement.

@Override
public void startElement(String uri, String name, String qName, Attributes atts) {
    switch(state) {
        case EXPECT_EDITS_TAG:
            if (!name.equals("EDITS")) {
                throw new InvalidXmlException("you must put " + "<EDITS> at the top of the XML file! " + "Got tag " + name + " instead");
            }
            state = ParseState.EXPECT_VERSION;
            break;
        case EXPECT_VERSION:
            if (!name.equals("EDITS_VERSION")) {
                throw new InvalidXmlException("you must put " + "<EDITS_VERSION> at the top of the XML file! " + "Got tag " + name + " instead");
            }
            break;
        case EXPECT_RECORD:
            if (!name.equals("RECORD")) {
                throw new InvalidXmlException("expected a <RECORD> tag");
            }
            state = ParseState.EXPECT_OPCODE;
            break;
        case EXPECT_OPCODE:
            if (!name.equals("OPCODE")) {
                throw new InvalidXmlException("expected an <OPCODE> tag");
            }
            break;
        case EXPECT_DATA:
            if (!name.equals("DATA")) {
                throw new InvalidXmlException("expected a <DATA> tag");
            }
            stanza = new Stanza();
            state = ParseState.HANDLE_DATA;
            break;
        case HANDLE_DATA:
            Stanza parent = stanza;
            Stanza child = new Stanza();
            stanzaStack.push(parent);
            stanza = child;
            parent.addChild(name, child);
            break;
        case EXPECT_END:
            throw new InvalidXmlException("not expecting anything after </EDITS>");
    }
}
Also used : InvalidXmlException(org.apache.hadoop.hdfs.util.XMLUtils.InvalidXmlException) Stanza(org.apache.hadoop.hdfs.util.XMLUtils.Stanza)

Example 2 with InvalidXmlException

use of org.apache.hadoop.hdfs.util.XMLUtils.InvalidXmlException in project hadoop by apache.

the class FSEditLogOp method delegationTokenFromXml.

public static DelegationTokenIdentifier delegationTokenFromXml(Stanza st) throws InvalidXmlException {
    String kind = st.getValue("KIND");
    if (!kind.equals(DelegationTokenIdentifier.HDFS_DELEGATION_KIND.toString())) {
        throw new InvalidXmlException("can't understand " + "DelegationTokenIdentifier KIND " + kind);
    }
    int seqNum = Integer.parseInt(st.getValue("SEQUENCE_NUMBER"));
    String owner = st.getValue("OWNER");
    String renewer = st.getValue("RENEWER");
    String realuser = st.getValue("REALUSER");
    long issueDate = Long.parseLong(st.getValue("ISSUE_DATE"));
    long maxDate = Long.parseLong(st.getValue("MAX_DATE"));
    int masterKeyId = Integer.parseInt(st.getValue("MASTER_KEY_ID"));
    DelegationTokenIdentifier token = new DelegationTokenIdentifier(new Text(owner), new Text(renewer), new Text(realuser));
    token.setSequenceNumber(seqNum);
    token.setIssueDate(issueDate);
    token.setMaxDate(maxDate);
    token.setMasterKeyId(masterKeyId);
    return token;
}
Also used : InvalidXmlException(org.apache.hadoop.hdfs.util.XMLUtils.InvalidXmlException) DelegationTokenIdentifier(org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier) Text(org.apache.hadoop.io.Text)

Example 3 with InvalidXmlException

use of org.apache.hadoop.hdfs.util.XMLUtils.InvalidXmlException in project hadoop by apache.

the class FSEditLogOp method readXAttrsFromXml.

private static List<XAttr> readXAttrsFromXml(Stanza st) throws InvalidXmlException {
    if (!st.hasChildren("XATTR")) {
        return null;
    }
    List<Stanza> stanzas = st.getChildren("XATTR");
    List<XAttr> xattrs = Lists.newArrayListWithCapacity(stanzas.size());
    for (Stanza a : stanzas) {
        XAttr.Builder builder = new XAttr.Builder();
        builder.setNameSpace(XAttr.NameSpace.valueOf(a.getValue("NAMESPACE"))).setName(a.getValue("NAME"));
        String v = a.getValueOrNull("VALUE");
        if (v != null) {
            try {
                builder.setValue(XAttrCodec.decodeValue(v));
            } catch (IOException e) {
                throw new InvalidXmlException(e.toString());
            }
        }
        xattrs.add(builder.build());
    }
    return xattrs;
}
Also used : InvalidXmlException(org.apache.hadoop.hdfs.util.XMLUtils.InvalidXmlException) Stanza(org.apache.hadoop.hdfs.util.XMLUtils.Stanza) IOException(java.io.IOException) XAttr(org.apache.hadoop.fs.XAttr)

Example 4 with InvalidXmlException

use of org.apache.hadoop.hdfs.util.XMLUtils.InvalidXmlException in project hadoop by apache.

the class FSEditLogOp method delegationKeyFromXml.

public static DelegationKey delegationKeyFromXml(Stanza st) throws InvalidXmlException {
    int keyId = Integer.parseInt(st.getValue("KEY_ID"));
    long expiryDate = Long.parseLong(st.getValue("EXPIRY_DATE"));
    byte[] key = null;
    try {
        key = Hex.decodeHex(st.getValue("KEY").toCharArray());
    } catch (DecoderException e) {
        throw new InvalidXmlException(e.toString());
    } catch (InvalidXmlException e) {
    }
    return new DelegationKey(keyId, expiryDate, key);
}
Also used : DecoderException(org.apache.commons.codec.DecoderException) InvalidXmlException(org.apache.hadoop.hdfs.util.XMLUtils.InvalidXmlException) DelegationKey(org.apache.hadoop.security.token.delegation.DelegationKey)

Example 5 with InvalidXmlException

use of org.apache.hadoop.hdfs.util.XMLUtils.InvalidXmlException in project hadoop by apache.

the class OfflineEditsXmlLoader method endElement.

@Override
public void endElement(String uri, String name, String qName) {
    String str = XMLUtils.unmangleXmlString(cbuf.toString(), false).trim();
    cbuf = new StringBuffer();
    switch(state) {
        case EXPECT_EDITS_TAG:
            throw new InvalidXmlException("expected <EDITS/>");
        case EXPECT_VERSION:
            if (!name.equals("EDITS_VERSION")) {
                throw new InvalidXmlException("expected </EDITS_VERSION>");
            }
            try {
                int version = Integer.parseInt(str);
                visitor.start(version);
            } catch (IOException e) {
                // Can't throw IOException from a SAX method, sigh.
                throw new RuntimeException(e);
            }
            state = ParseState.EXPECT_RECORD;
            break;
        case EXPECT_RECORD:
            if (name.equals("EDITS")) {
                state = ParseState.EXPECT_END;
            } else if (!name.equals("RECORD")) {
                throw new InvalidXmlException("expected </EDITS> or </RECORD>");
            }
            break;
        case EXPECT_OPCODE:
            if (!name.equals("OPCODE")) {
                throw new InvalidXmlException("expected </OPCODE>");
            }
            opCode = FSEditLogOpCodes.valueOf(str);
            state = ParseState.EXPECT_DATA;
            break;
        case EXPECT_DATA:
            throw new InvalidXmlException("expected <DATA/>");
        case HANDLE_DATA:
            stanza.setValue(str);
            if (stanzaStack.empty()) {
                if (!name.equals("DATA")) {
                    throw new InvalidXmlException("expected </DATA>");
                }
                state = ParseState.EXPECT_RECORD;
                FSEditLogOp op = opCache.get(opCode);
                opCode = null;
                try {
                    op.decodeXml(stanza);
                    stanza = null;
                } finally {
                    if (stanza != null) {
                        System.err.println("fromXml error decoding opcode " + opCode + "\n" + stanza.toString());
                        stanza = null;
                    }
                }
                if (fixTxIds) {
                    if (nextTxId <= 0) {
                        nextTxId = op.getTransactionId();
                        if (nextTxId <= 0) {
                            nextTxId = 1;
                        }
                    }
                    op.setTransactionId(nextTxId);
                    nextTxId++;
                }
                try {
                    visitor.visitOp(op);
                } catch (IOException e) {
                    // Can't throw IOException from a SAX method, sigh.
                    throw new RuntimeException(e);
                }
                state = ParseState.EXPECT_RECORD;
            } else {
                stanza = stanzaStack.pop();
            }
            break;
        case EXPECT_END:
            throw new InvalidXmlException("not expecting anything after </EDITS>");
    }
}
Also used : InvalidXmlException(org.apache.hadoop.hdfs.util.XMLUtils.InvalidXmlException) IOException(java.io.IOException) FSEditLogOp(org.apache.hadoop.hdfs.server.namenode.FSEditLogOp)

Aggregations

InvalidXmlException (org.apache.hadoop.hdfs.util.XMLUtils.InvalidXmlException)5 IOException (java.io.IOException)2 Stanza (org.apache.hadoop.hdfs.util.XMLUtils.Stanza)2 DecoderException (org.apache.commons.codec.DecoderException)1 XAttr (org.apache.hadoop.fs.XAttr)1 DelegationTokenIdentifier (org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier)1 FSEditLogOp (org.apache.hadoop.hdfs.server.namenode.FSEditLogOp)1 Text (org.apache.hadoop.io.Text)1 DelegationKey (org.apache.hadoop.security.token.delegation.DelegationKey)1