com.cloudhopper.sxmp.demo.ParserMain.java Source code

Java tutorial

Introduction

Here is the source code for com.cloudhopper.sxmp.demo.ParserMain.java

Source

package com.cloudhopper.sxmp.demo;

/*
 * #%L
 * ch-sxmp
 * %%
 * Copyright (C) 2012 - 2013 Cloudhopper by Twitter
 * %%
 * Licensed 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
 * 
 * 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.
 * #L%
 */

import com.cloudhopper.commons.util.DecimalUtil;
import com.cloudhopper.sxmp.*;
import java.io.ByteArrayInputStream;
import org.apache.http.HttpVersion;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreProtocolPNames;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * @author joelauer
 */
public class ParserMain {
    private static final Logger logger = LoggerFactory.getLogger(ParserMain.class);

    static public void main(String[] args) throws Exception {
        StringBuilder string0 = new StringBuilder(200).append("<?xml version='1.0' encoding='iso-8859-1'?>\n")
                .append("<!DOCTYPE malicious [\n").append("    <!ENTITY x0 \"\">\n")
                .append("    <!ENTITY x1 \"&x0;&x0;\">\n").append("    <!ENTITY x2 \"&x1;&x1;\">\n")
                .append("    <!ENTITY x3 \"&x2;&x2;\">\n").append("    <!ENTITY x4 \"&x3;&x3;\">\n")
                .append("    <!ENTITY x5 \"&x4;&x4;\">\n").append("    <!ENTITY x6 \"&x5;&x5;\">\n")
                .append("    <!ENTITY x7 \"&x6;&x6;\">\n").append("    <!ENTITY x8 \"&x7;&x7;\">\n")
                .append("    <!ENTITY x9 \"&x8;&x8;\">\n").append("    <!ENTITY x10 \"&x9;&x9;\">\n")
                .append("    <!ENTITY x11 \"&x10;&x10;\">\n").append("    <!ENTITY x12 \"&x11;&x11;\">\n")
                .append("    <!ENTITY x13 \"&x12;&x12;\">\n").append("    <!ENTITY x14 \"&x13;&x13;\">\n")
                .append("    <!ENTITY x15 \"&x14;&x14;\">\n").append("    <!ENTITY x16 \"&x15;&x15;\">\n")
                .append("    <!ENTITY x17 \"&x16;&x16;\">\n").append("    <!ENTITY x18 \"&x17;&x17;\">\n")
                .append("    <!ENTITY x19 \"&x18;&x18;\">\n").append("    <!ENTITY x20 \"&x19;&x19;\">\n")
                .append("]>\n").append("<operation type=\"deliver\">\n")
                .append("<account username=\"test\" password=\"test\"/>\n").append("<deliverRequest>\n")
                .append("<ticketId>&x20;</ticketId>\n").append("</deliverRequest>    \n").append("</operation >\n")
                .append("");

        ByteArrayInputStream is = new ByteArrayInputStream(string0.toString().getBytes());
        SxmpParser parser = new SxmpParser(SxmpParser.VERSION_1_0);

        //try {
        Operation operation = parser.parse(is);
        //Assert.fail();
        //} catch (SxmpParsingException e) {
        // correct behavior
        //Assert.assertEquals(SxmpErrorCode.MISSING_REQUIRED_ATTRIBUTE, e.getErrorCode());
        //Assert.assertThat(e.getMessage(), JUnitMatchers.containsString("The attribute [username] is required with the [account] element"));
        //Assert.assertNotNull(e.getOperation());
        //   PartialOperation partial = (PartialOperation)e.getOperation();
        //Assert.assertEquals(Operation.Type.SUBMIT, partial.getType());
        //}

        logger.debug("done!");
    }
}