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

package com.nimbusds.jose;

import com.nimbusds.jose.util.JSONStringUtils;
import java.util.Objects;
import com.nimbusds.jose.shaded.jcip.Immutable;
import java.io.Serializable;

@Immutable
public class Algorithm implements Serializable
{
    private static final long serialVersionUID = 1L;
    public static final Algorithm NONE;
    private final String name;
    private final Requirement requirement;
    
    public Algorithm(final String name, final Requirement req) {
        this.name = Objects.requireNonNull(name);
        this.requirement = req;
    }
    
    public Algorithm(final String name) {
        this(name, null);
    }
    
    public final String getName() {
        return this.name;
    }
    
    public final Requirement getRequirement() {
        return this.requirement;
    }
    
    @Override
    public final int hashCode() {
        return this.name.hashCode();
    }
    
    @Override
    public boolean equals(final Object object) {
        return object instanceof Algorithm && this.toString().equals(object.toString());
    }
    
    @Override
    public final String toString() {
        return this.name;
    }
    
    public final String toJSONString() {
        return JSONStringUtils.toJSONString(this.name);
    }
    
    public static Algorithm parse(final String s) {
        if (s == null) {
            return null;
        }
        return new Algorithm(s);
    }
    
    static {
        NONE = new Algorithm("none", Requirement.REQUIRED);
    }
}
