private static void checkDataType(DataModelDefinition<?> definition, DataFormat<?> format) { if (format.getSupportedType().isAssignableFrom(definition.getModelClass()) == false) { throw new IllegalArgumentException(MessageFormat.format( "inconsistent data format: data-type={0}, format-type={1}, supported-type={2}", definition.getModelClass().getName(), format.getClass().getName(), format.getSupportedType().getName())); } }
private TesterFileInputDescription createDescription( Class<? extends DataFormat<?>> formatClass, String basePath, String resourcePattern) { DataFormat<?> format; try { format = formatClass.newInstance(); } catch (Exception e) { throw new AssertionError(e); } TesterFileInputDescription description = new TesterFileInputDescription( format.getSupportedType(), basePath, resourcePattern, formatClass); return description; }
/** * Creates a new instance. * @param dataClass the data model class * @param dataFormat the data format * @param dataFilter the data filter (nullable) * @param <T> the data type * @return the created instance * @since 0.7.3 */ @SuppressWarnings("unchecked") public static <T> DataDefinition<T> newInstance( Class<?> dataClass, DataFormat<T> dataFormat, DataFilter<?> dataFilter) { return new SimpleDataDefinition<>( dataClass.asSubclass(dataFormat.getSupportedType()), dataFormat, (DataFilter<? super T>) dataFilter); }
private <T> DataDefinition<T> createDataDefinition(Class<? extends DataFormat<T>> formatClass) { DataFormat<T> format = ReflectionUtils.newInstance(formatClass, getConf()); return SimpleDataDefinition.newInstance(format.getSupportedType(), format); }
@SuppressWarnings("unchecked") private <T> DataFormat<T> createFormat( Class<T> dataType, Class<? extends DataFormat<?>> formatClass) throws IOException { assert dataType != null; assert formatClass != null; DataFormat<?> format; try { format = ReflectionUtils.newInstance(formatClass, hadoopConfiguration); } catch (Exception e) { throw new IOException(MessageFormat.format( Messages.getString("DirectIoTestHelper.errorFailedToInitializeDataFormat"), //$NON-NLS-1$ formatClass.getName()), e); } if (format.getSupportedType().isAssignableFrom(dataType) == false) { throw new IOException(MessageFormat.format( Messages.getString("DirectIoTestHelper.errorIncompatibleDataFormatType"), //$NON-NLS-1$ formatClass.getName(), dataType.getName())); } return (DataFormat<T>) format; } }
static <T> Optional<DirectIoInfo<T>> parse( TestToolRepository tools, ClassLoader classLoader, URI uri) throws IOException { if (Objects.equals(uri.getScheme(), SCHEME_DIRECTIO) == false) { return Optional.empty(); } String body = uri.getSchemeSpecificPart(); String[] elements = body.split(":", 2); //$NON-NLS-1$ if (elements.length != 2) { return Optional.empty(); } String className = elements[0]; String dataPath = elements[1]; try { @SuppressWarnings("unchecked") Class<? extends DataFormat<T>> formatClass = (Class<? extends DataFormat<T>>) Class.forName(className, false, classLoader); DataFormat<T> format = formatClass.newInstance(); DataModelDefinition<T> definition = tools.toDataModelDefinition(format.getSupportedType()); return Optional.of(new DirectIoInfo<>(definition, formatClass, dataPath)); } catch (ClassCastException | ReflectiveOperationException e) { throw new IOException(MessageFormat.format( Messages.getString("BatchTestTool.errorInvalidDataFormatClass"), //$NON-NLS-1$ className), e); } } }
id, pathString, definition.getDataFormat().getSupportedType().getName())); } else { throw new IOException(MessageFormat.format( id, pathString, definition.getDataFormat().getSupportedType().getName()));
assertThat(support.getSupportedType(), is((Object) model.unwrap().getClass()));