protected <A extends Annotation> Object getElementValue(List<String> parsedParameters, Class<A> annotationClass, String name, String defaultPackage) { List<String> parameters = removeEmptyContentElements( parsedParameters ); Class<?> returnType = getAnnotationParameterType( annotationClass, name ); boolean isArray = returnType.isArray(); if ( !isArray ) { if ( parameters.size() == 0 ) { return ""; } else if ( parameters.size() > 1 ) { throw LOG.getAttemptToSpecifyAnArrayWhereSingleValueIsExpectedException(); } return convertStringToReturnType( parameters.get( 0 ), returnType, defaultPackage ); } else { return parameters.stream().map( value -> convertStringToReturnType( value, returnType.getComponentType(), defaultPackage ) ) .toArray( size -> (Object[]) Array.newInstance( returnType.getComponentType(), size ) ); } }
@SuppressWarnings("unchecked") protected <A extends Annotation> Object getAnnotationElementValue(List<AnnotationParameterStaxBuilder> parameters, Class<A> annotationClass, String name, String defaultPackage) { Class<?> returnType = getAnnotationParameterType( annotationClass, name ); boolean isArray = returnType.isArray(); if ( !isArray ) { if ( parameters.size() == 0 ) { throw LOG.getEmptyElementOnlySupportedWhenCharSequenceIsExpectedExpection(); } else if ( parameters.size() > 1 ) { throw LOG.getAttemptToSpecifyAnArrayWhereSingleValueIsExpectedException(); } return parameters.get( 0 ).build( (Class<Annotation>) returnType, defaultPackage ); } else { return parameters.stream().map( value -> value.build( (Class<Annotation>) returnType.getComponentType(), defaultPackage ) ) .toArray( size -> (Object[]) Array.newInstance( returnType.getComponentType(), size ) ); } }
private Object getElementValue(ElementType elementType, Class<?> returnType, String defaultPackage) { removeEmptyContentElements( elementType ); boolean isArray = returnType.isArray(); if ( !isArray ) { if ( elementType.getContent().size() == 0 ) { if ( returnType == String.class ) { return ""; } else { throw log.getEmptyElementOnlySupportedWhenCharSequenceIsExpectedExpection(); } } else if ( elementType.getContent().size() > 1 ) { throw log.getAttemptToSpecifyAnArrayWhereSingleValueIsExpectedException(); } return getSingleValue( elementType.getContent().get( 0 ), returnType, defaultPackage ); } else { List<Object> values = newArrayList(); for ( Serializable s : elementType.getContent() ) { values.add( getSingleValue( s, returnType.getComponentType(), defaultPackage ) ); } return values.toArray( (Object[]) Array.newInstance( returnType.getComponentType(), values.size() ) ); } }