package org.jboss.as.webservices.deployers;

import org.jboss.as.ee.metadata.ClassAnnotationInformationFactory;
import org.jboss.jandex.AnnotationInstance;
import org.jboss.jandex.AnnotationValue;
import org.jboss.metadata.property.PropertyReplacer;
import org.jboss.ws.api.annotation.WebContext;

/**
 * User: rsearls
 * Date: 7/17/14
 */
public class WebContextAnnotationInformationFactory extends
    ClassAnnotationInformationFactory<WebContext, WebContextAnnotationInfo> {

    protected WebContextAnnotationInformationFactory() {
        super(org.jboss.ws.api.annotation.WebContext.class, null);
    }

    @Override
    protected WebContextAnnotationInfo fromAnnotation(final AnnotationInstance annotationInstance, final PropertyReplacer propertyReplacer) {
        String authMethodValue = asString(annotationInstance, "authMethod");
        String contextRootValue = asString(annotationInstance, "contextRoot");
        boolean secureWSDLAccessValue = asBoolean(annotationInstance, "secureWSDLAccessValue");
        String transportGuaranteeValue = asString(annotationInstance, "transportGuarantee");
        String urlPatternValue = asString(annotationInstance, "urlPattern");
        String virtualHostValue = asString(annotationInstance, "virtualHost");
        return new  WebContextAnnotationInfo(authMethodValue, contextRootValue,
            secureWSDLAccessValue, transportGuaranteeValue, urlPatternValue, virtualHostValue);
    }


    private String asString(final AnnotationInstance annotation, String property) {
        AnnotationValue value = annotation.value(property);
        return value == null ? "" : value.asString();
    }

    private boolean asBoolean(final AnnotationInstance annotation, String property) {
        AnnotationValue value = annotation.value(property);
        return value == null ? false : Boolean.getBoolean(value.asString());
    }
}
