PropKey.java 1.95 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.scene7.is.util.callbacks.Option
 *  com.scene7.is.util.text.Parser
 *  javax.jcr.Property
 *  javax.jcr.RepositoryException
 */
package com.adobe.cq.dam.s7imaging.impl.jcr.props;

import com.adobe.cq.dam.s7imaging.impl.jcr.props.OptionalPropKey;
import com.adobe.cq.dam.s7imaging.impl.jcr.props.PropExtractor;
import com.adobe.cq.dam.s7imaging.impl.jcr.props.RequiredPropKey;
import com.adobe.cq.dam.s7imaging.impl.jcr.props.StandardExtractors;
import com.scene7.is.util.callbacks.Option;
import com.scene7.is.util.text.Parser;
import javax.jcr.Property;
import javax.jcr.RepositoryException;

public abstract class PropKey<T> {
    public final String name;

    public static <T> PropKey<Option<T>> optional(String name, PropExtractor<T> extractor) {
        return OptionalPropKey.optionalPropKey(name, extractor);
    }

    public static <T> PropKey<Option<T>> optional(String name, Parser<T> parser) {
        return PropKey.optional(name, StandardExtractors.parsingExtractor(parser));
    }

    public static <T> PropKey<T> required(String name, PropExtractor<T> extractor) {
        return RequiredPropKey.requiredPropKey(PropKey.optional(name, extractor), Option.none());
    }

    public static <T> PropKey<T> required(String name, Parser<T> parser) {
        return PropKey.required(name, StandardExtractors.parsingExtractor(parser));
    }

    public static <T> PropKey<T> optional(String name, T defaultValue, PropExtractor<T> extractor) {
        return RequiredPropKey.requiredPropKey(PropKey.optional(name, extractor), Option.some(defaultValue));
    }

    public static <T> PropKey<T> optional(String name, T defaultValue, Parser<T> parser) {
        return PropKey.optional(name, defaultValue, StandardExtractors.parsingExtractor(parser));
    }

    PropKey(String name) {
        this.name = name;
    }

    abstract T extractValue(Option<Property> var1) throws RepositoryException;
}