org.mitre.stix.examples.CreationToolMetadata.java Source code

Java tutorial

Introduction

Here is the source code for org.mitre.stix.examples.CreationToolMetadata.java

Source

/**
 * Copyright (c) 2015, The MITRE Corporation. All rights reserved.
 * See LICENSE for complete terms.
 */
package org.mitre.stix.examples;

import java.util.GregorianCalendar;
import java.util.TimeZone;
import java.util.UUID;

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;

import org.apache.commons.lang.StringUtils;
import org.mitre.cybox.common_2.ToolInformationType;
import org.mitre.cybox.common_2.ToolsInformationType;
import org.mitre.stix.common_1.InformationSourceType;
import org.mitre.stix.common_1.StructuredTextType;
import org.mitre.stix.stix_1.STIXHeaderType;
import org.mitre.stix.stix_1.STIXPackage;
import org.xml.sax.SAXException;

/**
 * Build a STIX Document with Tool Information
 * 
 * See <a href=
 * "https://raw.githubusercontent.com/STIXProject/python-stix/master/examples/creation_tool_metadata.py"
 * >https://raw.githubusercontent.com/STIXProject/python-stix/master/examples/
 * creation_tool_metadata.py</a>
 * 
 * @author nemonik (Michael Joseph Walsh <github.com@nemonik.com>)
 *
 */
public class CreationToolMetadata {

    public CreationToolMetadata() {
    }

    public static void main(String[] args) {

        try {
            // Get time for now.
            XMLGregorianCalendar now = DatatypeFactory.newInstance()
                    .newXMLGregorianCalendar(new GregorianCalendar(TimeZone.getTimeZone("UTC")));

            STIXHeaderType header = new STIXHeaderType()
                    .withDescriptions(new StructuredTextType().withValue("Example"))
                    .withInformationSource(new InformationSourceType()
                            .withTools(new ToolsInformationType().withTools(new ToolInformationType()
                                    .withName("org.mitre.stix.examples.CreationToolMetadata")
                                    .withVendor("The MITRE Corporation"))));

            STIXPackage stixPackage = new STIXPackage().withSTIXHeader(header).withVersion("1.2").withTimestamp(now)
                    .withId(new QName("http://example.com/", "package-" + UUID.randomUUID().toString(), "example"));

            System.out.println(stixPackage.toXMLString(true));

            System.out.println(StringUtils.repeat("-", 120));

            System.out.println("Validates: " + stixPackage.validate());

        } catch (DatatypeConfigurationException e) {
            throw new RuntimeException(e);
        } catch (SAXException e) {
            e.printStackTrace();
        }
    }
}