// 
// Decompiled by Procyon v0.6.0
// 

package com.nimbusds.jose;

import java.text.ParseException;
import com.nimbusds.jose.util.Base64URL;
import java.util.Objects;
import com.nimbusds.jose.shaded.jcip.ThreadSafe;

@ThreadSafe
public class PlainObject extends JOSEObject
{
    private static final long serialVersionUID = 1L;
    private final PlainHeader header;
    
    public PlainObject(final Payload payload) {
        this.setPayload(Objects.requireNonNull(payload));
        this.header = new PlainHeader();
    }
    
    public PlainObject(final PlainHeader header, final Payload payload) {
        this.header = Objects.requireNonNull(header);
        this.setPayload(Objects.requireNonNull(payload));
    }
    
    public PlainObject(final Base64URL firstPart, final Base64URL secondPart) throws ParseException {
        try {
            this.header = PlainHeader.parse(Objects.requireNonNull(firstPart));
        }
        catch (final ParseException e) {
            throw new ParseException("Invalid unsecured header: " + e.getMessage(), 0);
        }
        this.setPayload(new Payload(Objects.requireNonNull(secondPart)));
        this.setParsedParts(firstPart, secondPart, null);
    }
    
    @Override
    public PlainHeader getHeader() {
        return this.header;
    }
    
    @Override
    public String serialize() {
        return this.header.toBase64URL().toString() + '.' + this.getPayload().toBase64URL().toString() + '.';
    }
    
    public static PlainObject parse(final String s) throws ParseException {
        final Base64URL[] parts = JOSEObject.split(s);
        if (!parts[2].toString().isEmpty()) {
            throw new ParseException("Unexpected third Base64URL part", 0);
        }
        return new PlainObject(parts[0], parts[1]);
    }
}
