All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jvnet.jaxb.annox.parser.XXAnnotationSingleAnnotationFieldParser Maven / Gradle / Ivy

The newest version!
//package org.jvnet.jaxb.annox.parser;
//
//import com.github.javaparser.ast.Node;
//import com.github.javaparser.ast.expr.AnnotationExpr;
//import com.github.javaparser.ast.expr.Expression;
//
//import java.lang.annotation.Annotation;
//import java.text.MessageFormat;
//
//import org.jvnet.jaxb.annox.annotation.NoSuchAnnotationFieldException;
//import visitor.ast.org.jvnet.jaxb.annox.javaparser.AbstractGenericExpressionVisitor;
//import org.jvnet.jaxb.annox.model.XAnnotation;
//import org.jvnet.jaxb.annox.model.annotation.field.XAnnotationField;
//import org.jvnet.jaxb.annox.model.annotation.field.XSingleAnnotationField;
//import org.jvnet.jaxb.annox.model.annotation.value.XAnnotationValue;
//import org.jvnet.jaxb.annox.model.annotation.value.XXAnnotationAnnotationValue;
//import org.jvnet.jaxb.annox.parser.exception.AnnotationElementParseException;
//import org.jvnet.jaxb.annox.parser.exception.AnnotationExpressionParseException;
//import org.jvnet.jaxb.annox.util.AnnotationElementUtils;
//import org.w3c.dom.Element;
//
//public class XXAnnotationSingleAnnotationFieldParser
//		extends XAnnotationFieldParser> {
//
//	@Override
//	@SuppressWarnings("unchecked")
//	public XAnnotationField parse(Element annotationElement, String name,
//			Class type) throws AnnotationElementParseException {
//
//		final Element element = AnnotationElementUtils.getFieldElement(
//				annotationElement, name);
//
//		if (element == null) {
//			return null;
//		} else {
//			try {
//				final XAnnotation xannotation = (XAnnotation) XAnnotationParser.INSTANCE
//						.parse(element);
//
//				final XAnnotationValue value = new XXAnnotationAnnotationValue(
//						xannotation);
//				return new XSingleAnnotationField(name, type, value);
//			} catch (AnnotationElementParseException aepex) {
//				throw new AnnotationElementParseException(annotationElement,
//						aepex);
//			}
//		}
//	}
//
//	@Override
//	public XAnnotationField parse(Expression annotationElement, String name,
//			Class type) throws AnnotationExpressionParseException {
//
//		final AnnotationExpr element = annotationElement.accept(
//				new AbstractGenericExpressionVisitor() {
//					@Override
//					public AnnotationExpr visitDefault(Node n, Void arg) {
//						throw new IllegalArgumentException(
//								MessageFormat
//										.format("Unexpected expression [{0}], only annotation expressions are expected.",
//												n));
//					}
//
//					@Override
//					public AnnotationExpr visitDefault(AnnotationExpr n,
//							Void arg) {
//						return n;
//					}
//				}, null);
//
//		if (element == null) {
//			return null;
//		} else {
//			try {
//				@SuppressWarnings("unchecked")
//				final XAnnotation xannotation = (XAnnotation) XAnnotationParser.INSTANCE
//						.parse(element);
//				final XAnnotationValue value = new XXAnnotationAnnotationValue(
//						xannotation);
//				return new XSingleAnnotationField(name, type, value);
//			} catch (AnnotationExpressionParseException aepex) {
//				throw new AnnotationExpressionParseException(annotationElement,
//						aepex);
//			}
//		}
//	}
//
//	@Override
//	public XAnnotationField parse(Annotation annotation, String name,
//			Class type) throws NoSuchAnnotationFieldException {
//		final A value = getAnnotationFieldValue(annotation, name);
//		@SuppressWarnings("unchecked")
//		final XAnnotation xannotation = (XAnnotation) XAnnotationParser.INSTANCE
//				.parse(value);
//		return new XSingleAnnotationField(name, type,
//				new XXAnnotationAnnotationValue(value, xannotation));
//	}
//
//	@Override
//	public XAnnotationField construct(String name,
//			XAnnotation annotation, Class type) {
//		return new XSingleAnnotationField(name, type,
//				new XXAnnotationAnnotationValue(annotation));
//	}
//
//}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy