类javax.persistence.Convert源码实例Demo

下面列出了怎么用javax.persistence.Convert的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: lams   文件: JPAOverriddenAnnotationReader.java
private Converts getConverts(Element tree, XMLContext.Default defaults) {
	// NOTE : we use a map here to make sure that an xml and annotation referring to the same attribute
	// properly overrides.  Bit sparse, but easy...
	final Map<String,Convert> convertAnnotationsMap = new HashMap<>();

	if ( tree != null ) {
		applyXmlDefinedConverts( tree, defaults, null, convertAnnotationsMap );
	}

	// NOTE : per section 12.2.3.16 of the spec <convert/> is additive, although only if "metadata-complete" is not
	// specified in the XML

	if ( defaults.canUseJavaAnnotations() ) {
		applyPhysicalConvertAnnotations( null, convertAnnotationsMap );
	}

	if ( !convertAnnotationsMap.isEmpty() ) {
		final AnnotationDescriptor groupingDescriptor = new AnnotationDescriptor( Converts.class );
		groupingDescriptor.setValue( "value", convertAnnotationsMap.values().toArray( new Convert[convertAnnotationsMap.size()]) );
		return AnnotationFactory.create( groupingDescriptor );
	}

	return null;
}
 
源代码2 项目: warpdb   文件: AccessibleProperty.java
@SuppressWarnings("unchecked")
private AttributeConverter<Object, Object> getConverter(AccessibleObject accessible) {
	Convert converter = accessible.getAnnotation(Convert.class);
	if (converter != null) {
		Class<?> converterClass = converter.converter();
		if (!AttributeConverter.class.isAssignableFrom(converterClass)) {
			throw new RuntimeException(
					"Converter class must be AttributeConverter rather than " + converterClass.getName());
		}
		try {
			Constructor<?> cs = converterClass.getDeclaredConstructor();
			cs.setAccessible(true);
			return (AttributeConverter<Object, Object>) cs.newInstance();
		} catch (InstantiationException | IllegalAccessException | NoSuchMethodException | SecurityException
				| InvocationTargetException e) {
			throw new RuntimeException("Cannot instantiate Converter: " + converterClass.getName(), e);
		}
	}
	return null;
}
 
源代码3 项目: lams   文件: AttributeConversionInfo.java
@SuppressWarnings("unchecked")
public AttributeConversionInfo(Convert convertAnnotation, XAnnotatedElement xAnnotatedElement) {
	this(
			convertAnnotation.converter(),
			convertAnnotation.disableConversion(),
			convertAnnotation.attributeName(),
			xAnnotatedElement
	);
}
 
源代码4 项目: lams   文件: JPAOverriddenAnnotationReader.java
private Annotation getConvertsForAttribute(List<Element> elementsForProperty, XMLContext.Default defaults) {
	// NOTE : we use a map here to make sure that an xml and annotation referring to the same attribute
	// properly overrides.  Very sparse map, yes, but easy setup.
	// todo : revisit this
	// although bear in mind that this code is no longer used in 5.0...

	final Map<String,Convert> convertAnnotationsMap = new HashMap<>();

	for ( Element element : elementsForProperty ) {
		final boolean isBasic = "basic".equals( element.getName() );
		final boolean isEmbedded = "embedded".equals( element.getName() );
		final boolean isElementCollection = "element-collection".equals(element.getName());

		final boolean canHaveConverts = isBasic || isEmbedded || isElementCollection;

		if ( !canHaveConverts ) {
			continue;
		}

		final String attributeNamePrefix = isBasic ? null : propertyName;
		applyXmlDefinedConverts( element, defaults, attributeNamePrefix, convertAnnotationsMap );
	}

	// NOTE : per section 12.2.3.16 of the spec <convert/> is additive, although only if "metadata-complete" is not
	// specified in the XML

	if ( defaults.canUseJavaAnnotations() ) {
		// todo : note sure how to best handle attributeNamePrefix here
		applyPhysicalConvertAnnotations( propertyName, convertAnnotationsMap );
	}

	if ( !convertAnnotationsMap.isEmpty() ) {
		final AnnotationDescriptor groupingDescriptor = new AnnotationDescriptor( Converts.class );
		groupingDescriptor.setValue( "value", convertAnnotationsMap.values().toArray( new Convert[convertAnnotationsMap.size()]) );
		return AnnotationFactory.create( groupingDescriptor );
	}

	return null;
}
 
源代码5 项目: lams   文件: JPAOverriddenAnnotationReader.java
private void applyXmlDefinedConverts(
		Element containingElement,
		XMLContext.Default defaults,
		String attributeNamePrefix,
		Map<String,Convert> convertAnnotationsMap) {
	final List<Element> convertElements = containingElement.elements( "convert" );
	for ( Element convertElement : convertElements ) {
		final AnnotationDescriptor convertAnnotationDescriptor = new AnnotationDescriptor( Convert.class );
		copyStringAttribute( convertAnnotationDescriptor, convertElement, "attribute-name", false );
		copyBooleanAttribute( convertAnnotationDescriptor, convertElement, "disable-conversion" );

		final Attribute converterClassAttr = convertElement.attribute( "converter" );
		if ( converterClassAttr != null ) {
			final String converterClassName = XMLContext.buildSafeClassName(
					converterClassAttr.getValue(),
					defaults
			);
			try {
				final Class converterClass = classLoaderAccess.classForName( converterClassName );
				convertAnnotationDescriptor.setValue( "converter", converterClass );
			}
			catch (ClassLoadingException e) {
				throw new AnnotationException( "Unable to find specified converter class id-class: " + converterClassName, e );
			}
		}
		final Convert convertAnnotation = AnnotationFactory.create( convertAnnotationDescriptor );
		final String qualifiedAttributeName = qualifyConverterAttributeName(
				attributeNamePrefix,
				convertAnnotation.attributeName()
		);
		convertAnnotationsMap.put( qualifiedAttributeName, convertAnnotation );
	}

}
 
@Test
public void testDefaultEnumConverterCompatibility() {
    Reflections reflections = new Reflections("com.sequenceiq",
            new FieldAnnotationsScanner());

    Map<String, Set<String>> incompatibleFields = new HashMap<>();
    reflections.getFieldsAnnotatedWith(Convert.class).forEach(field -> {
        try {
            var defaultEnumConverterType = Optional.of((field.getAnnotation(Convert.class).converter()).getGenericSuperclass())
                    .filter(t -> ((ParameterizedType) t).getRawType().getTypeName().equals(DefaultEnumConverter.class.getTypeName()));

            if (defaultEnumConverterType.isPresent()) {
                boolean hasCompatibleGenericParameter = Stream.of(((ParameterizedType) defaultEnumConverterType.get()).getActualTypeArguments())
                        .allMatch(a -> a.getTypeName().equals(field.getType().getTypeName()));

                if (!hasCompatibleGenericParameter) {
                    String className = field.getDeclaringClass().getName();
                    incompatibleFields.computeIfAbsent(className, key -> new HashSet<>()).add(field.toString());
                }
            }
        } catch (RuntimeException e) {
            // ignore if cannot check fields
        }
    });

    Set<String> fields = new HashSet<>();

    incompatibleFields.forEach((key, value) -> {
        fields.add(key + ": " + String.join(", ", value));
    });

    Assert.assertTrue(String.format("Classes with incompatible DefaultEnumConverter: %s%s", lineSeparator(),
                    String.join(lineSeparator(), fields)), incompatibleFields.isEmpty());
}
 
源代码7 项目: lams   文件: CollectionPropertyHolder.java
private void applyLocalConvert(
		Convert convertAnnotation,
		XProperty collectionProperty,
		Map<String,AttributeConversionInfo> elementAttributeConversionInfoMap,
		Map<String,AttributeConversionInfo> keyAttributeConversionInfoMap) {

	// IMPL NOTE : the rules here are quite more lenient than what JPA says.  For example, JPA says
	// that @Convert on a Map always needs to specify attributeName of key/value (or prefixed with
	// key./value. for embedded paths).  However, we try to see if conversion of either is disabled
	// for whatever reason.  For example, if the Map is annotated with @Enumerated the elements cannot
	// be converted so any @Convert likely meant the key, so we apply it to the key

	final AttributeConversionInfo info = new AttributeConversionInfo( convertAnnotation, collectionProperty );
	if ( collection.isMap() ) {
		boolean specCompliant = StringHelper.isNotEmpty( info.getAttributeName() )
				&& ( info.getAttributeName().startsWith( "key" )
				|| info.getAttributeName().startsWith( "value" ) );
		if ( !specCompliant ) {
			log.nonCompliantMapConversion( collection.getRole() );
		}
	}

	if ( StringHelper.isEmpty( info.getAttributeName() ) ) {
		// the @Convert did not name an attribute...
		if ( canElementBeConverted && canKeyBeConverted ) {
			throw new IllegalStateException(
					"@Convert placed on Map attribute [" + collection.getRole()
							+ "] must define attributeName of 'key' or 'value'"
			);
		}
		else if ( canKeyBeConverted ) {
			keyAttributeConversionInfoMap.put( "", info );
		}
		else if ( canElementBeConverted ) {
			elementAttributeConversionInfoMap.put( "", info );
		}
		// if neither, we should not be here...
	}
	else {
		// the @Convert named an attribute...

		// we have different "resolution rules" based on whether element and key can be converted
		final String keyPath;
		final String elementPath;

		if ( canElementBeConverted && canKeyBeConverted ) {
			keyPath = removePrefix( info.getAttributeName(), "key" );
			elementPath = removePrefix( info.getAttributeName(), "value" );

			if ( keyPath == null && elementPath == null ) {
				// specified attributeName needs to have 'key.' or 'value.' prefix
				throw new IllegalStateException(
						"@Convert placed on Map attribute [" + collection.getRole()
								+ "] must define attributeName of 'key' or 'value'"
				);
			}
		}
		else if ( canKeyBeConverted ) {
			keyPath = removePrefix( info.getAttributeName(), "key", info.getAttributeName() );
			elementPath = null;
		}
		else {
			keyPath = null;
			elementPath = removePrefix( info.getAttributeName(), "value", info.getAttributeName() );
		}

		if ( keyPath != null ) {
			keyAttributeConversionInfoMap.put( keyPath, info );
		}
		else if ( elementPath != null ) {
			elementAttributeConversionInfoMap.put( elementPath, info );
		}
		else {
			// specified attributeName needs to have 'key.' or 'value.' prefix
			throw new IllegalStateException(
					String.format(
							Locale.ROOT,
							"Could not determine how to apply @Convert(attributeName='%s') to collection [%s]",
							info.getAttributeName(),
							collection.getRole()
					)
			);
		}
	}
}
 
源代码8 项目: mycore   文件: MCRJob.java
/**
 * Returns the action class ({@link MCRJobAction}).
 * 
 * @return the action class
 */
@Column(name = "action", nullable = false)
@Convert(converter = MCRJobActionConverter.class)
public Class<? extends MCRJobAction> getAction() {
    return action;
}
 
源代码9 项目: mycore   文件: MCRCategoryImpl.java
@Override
@Column
@Convert(converter = MCRURIConverter.class)
public URI getURI() {
    return super.getURI();
}
 
源代码10 项目: celerio-angular-quickstart   文件: User.java
@Column(name = "COUNTRY_CODE", length = 6)
@Convert(converter = CountryCodeConverter.class)
public CountryCode getCountryCode() {
    return countryCode;
}
 
源代码11 项目: zstack   文件: EncryptFacadeImpl.java
private static Set<Field> getAllEncryptPassword() {
    Set<Field> fields = Platform.getReflections().getFieldsAnnotatedWith(Convert.class);

    return fields.stream().filter(field -> field.getAnnotation(Convert.class).converter().equals(PasswordConverter.class)).collect(Collectors.toSet());
}
 
源代码12 项目: logging-log4j2   文件: BasicLogEventEntity.java
/**
 * Gets the level. Annotated with {@code @Basic} and {@code @Enumerated(EnumType.STRING)}.
 *
 * @return the level.
 */
@Override
@Convert(converter = LevelAttributeConverter.class)
public Level getLevel() {
    return this.getWrappedEvent().getLevel();
}
 
源代码13 项目: logging-log4j2   文件: BasicLogEventEntity.java
@Override
@Convert(converter = InstantAttributeConverter.class)
public Instant getInstant() {
    return this.getWrappedEvent().getInstant();
}
 
源代码14 项目: logging-log4j2   文件: TestBaseEntity.java
@Override
@Convert(converter = LevelAttributeConverter.class)
@Column(name = "level")
public Level getLevel() {
    return this.getWrappedEvent().getLevel();
}
 
源代码15 项目: logging-log4j2   文件: TestBaseEntity.java
@Override
@Convert(converter = MessageAttributeConverter.class)
@Column(name = "message")
public Message getMessage() {
    return this.getWrappedEvent().getMessage();
}
 
源代码16 项目: logging-log4j2   文件: TestBaseEntity.java
@Override
@Convert(converter = InstantAttributeConverter.class)
@Column(name = "instant")
public Instant getInstant() {
    return this.getWrappedEvent().getInstant();
}
 
源代码17 项目: logging-log4j2   文件: TestBaseEntity.java
@Override
@Convert(converter = ThrowableAttributeConverter.class)
@Column(name = "exception")
public Throwable getThrown() {
    return this.getWrappedEvent().getThrown();
}
 
源代码18 项目: logging-log4j2   文件: BasicLogEventEntity.java
/**
 * Gets the source location information. Annotated with
 * {@code @Convert(converter = StackTraceElementAttributeConverter.class)}.
 *
 * @return the source location information.
 * @see StackTraceElementAttributeConverter
 */
@Override
@Convert(converter = StackTraceElementAttributeConverter.class)
public StackTraceElement getSource() {
    return this.getWrappedEvent().getSource();
}
 
源代码19 项目: logging-log4j2   文件: BasicLogEventEntity.java
/**
 * Gets the message. Annotated with {@code @Convert(converter = MessageAttributeConverter.class)}.
 *
 * @return the message.
 * @see MessageAttributeConverter
 */
@Override
@Convert(converter = MessageAttributeConverter.class)
public Message getMessage() {
    return this.getWrappedEvent().getMessage();
}
 
源代码20 项目: logging-log4j2   文件: BasicLogEventEntity.java
/**
 * Gets the marker. Annotated with {@code @Convert(converter = MarkerAttributeConverter.class)}.
 *
 * @return the marker.
 * @see MarkerAttributeConverter
 */
@Override
@Convert(converter = MarkerAttributeConverter.class)
public Marker getMarker() {
    return this.getWrappedEvent().getMarker();
}
 
源代码21 项目: logging-log4j2   文件: BasicLogEventEntity.java
/**
 * Gets the exception logged. Annotated with {@code @Convert(converter = ThrowableAttributeConverter.class)}.
 *
 * @return the exception logged.
 * @see ThrowableAttributeConverter
 */
@Override
@Convert(converter = ThrowableAttributeConverter.class)
public Throwable getThrown() {
    return this.getWrappedEvent().getThrown();
}
 
源代码22 项目: logging-log4j2   文件: BasicLogEventEntity.java
/**
 * Gets the context stack. Annotated with {@code @Convert(converter = ContextStackAttributeConverter.class)}.
 *
 * @return the context stack.
 * @see ContextStackAttributeConverter
 * @see org.apache.logging.log4j.jpa.converter.ContextStackJsonAttributeConverter
 */
@Override
@Convert(converter = ContextStackAttributeConverter.class)
public ThreadContext.ContextStack getContextStack() {
    return this.getWrappedEvent().getContextStack();
}
 
 类所在包
 类方法
 同包方法