use of io.crnk.core.engine.internal.information.resource.ResourceFieldImpl in project crnk-framework by crnk-project.
the class ResourceRegistryTest method onExistingResourceShouldReturnUrl.
@Test
public void onExistingResourceShouldReturnUrl() {
Task task = new Task();
task.setId(1L);
ResourceField idField = new ResourceFieldImpl("id", "id", ResourceFieldType.ID, Long.class, Long.class, null);
ResourceField valueField = new ResourceFieldImpl("value", "value", ResourceFieldType.RELATIONSHIP, String.class, String.class, "projects");
ResourceInformation resourceInformation = new ResourceInformation(moduleRegistry.getTypeParser(), Task.class, "tasks", null, Arrays.asList(idField, valueField), new OffsetLimitPagingBehavior());
RegistryEntry registryEntry = new RegistryEntry(new DirectResponseResourceEntry(null, new ResourceRepositoryInformationImpl("tasks", resourceInformation, RepositoryMethodAccess.ALL)));
resourceRegistry.addEntry(Task.class, registryEntry);
String resourceUrl = resourceRegistry.getResourceUrl(task);
assertThat(resourceUrl).isEqualTo(TEST_MODELS_URL + "/tasks/1");
}
use of io.crnk.core.engine.internal.information.resource.ResourceFieldImpl in project crnk-framework by crnk-project.
the class TestResourceInformationProvider method build.
@Override
public ResourceInformation build(Class<?> resourceClass) {
ResourceField idField = new ResourceFieldImpl("testId", "id", ResourceFieldType.ID, Integer.class, null, null);
List<ResourceField> fields = Arrays.asList(idField);
TypeParser typeParser = context.getTypeParser();
ResourceInformation info = new ResourceInformation(typeParser, resourceClass, resourceClass.getSimpleName(), null, fields, new OffsetLimitPagingBehavior());
return info;
}
use of io.crnk.core.engine.internal.information.resource.ResourceFieldImpl in project crnk-framework by crnk-project.
the class ResourceInformationTest method setup.
@Before
public void setup() throws NoSuchFieldException {
ResourceField idField = new ResourceFieldImpl("id", "id", ResourceFieldType.ID, Long.class, Long.class, null);
ResourceField valueField = new ResourceFieldImpl("value", "value", ResourceFieldType.RELATIONSHIP, String.class, String.class, "projects");
TypeParser typeParser = new TypeParser();
sut = new ResourceInformation(typeParser, Task.class, "tasks", null, Arrays.asList(idField, valueField), new OffsetLimitPagingBehavior());
}
use of io.crnk.core.engine.internal.information.resource.ResourceFieldImpl in project crnk-framework by crnk-project.
the class FieldOrderedComparatorTest method setUp.
@Before
public void setUp() throws Exception {
fieldA = new ResourceFieldImpl("a", "a", ResourceFieldType.ATTRIBUTE, String.class, String.class, null);
fieldB = new ResourceFieldImpl("b", "b", ResourceFieldType.ATTRIBUTE, String.class, String.class, null);
}
use of io.crnk.core.engine.internal.information.resource.ResourceFieldImpl in project crnk-framework by crnk-project.
the class CustomResourceFieldTest method setupModule.
@Override
protected void setupModule(final JpaModule module, boolean server) {
super.setupModule(module, server);
if (server) {
module.setResourceInformationProvider(new JpaResourceInformationProvider(new NullPropertiesProvider()) {
@Override
protected List<ResourceField> getResourceFields(Class clazz) {
List<ResourceField> fields = super.getResourceFields(clazz);
if (clazz == CountryEntity.class) {
List<String> languages = Arrays.asList("en", "de");
for (final String language : languages) {
ResourceFieldType resourceFieldType = ResourceFieldType.ATTRIBUTE;
String name = language + "Text";
Class<?> type = String.class;
ResourceFieldAccess access = new ResourceFieldAccess(true, true, true, false, false);
ResourceFieldImpl field = new ResourceFieldImpl(name, name, resourceFieldType, type, type, null, null, SerializeType.LAZY, LookupIncludeBehavior.NONE, access, null, null, null, RelationshipRepositoryBehavior.DEFAULT);
field.setAccessor(new ResourceFieldAccessor() {
@Override
public String getValue(Object resource) {
CountryEntity country = (CountryEntity) resource;
List<CountryTranslationEntity> translations = country.getTranslations();
CountryTranslationEntity translation = getTranslation(translations, language);
return translation != null ? translation.getTxt() : null;
}
@Override
public void setValue(Object resource, Object fieldValue) {
CountryEntity country = (CountryEntity) resource;
List<CountryTranslationEntity> translations = country.getTranslations();
CountryTranslationEntity translation = getTranslation(translations, language);
if (translation == null) {
EntityManager em = module.getEntityManager();
LangEntity langEntity = em.find(LangEntity.class, language);
if (langEntity == null) {
throw new IllegalStateException("language not found: " + language);
}
translation = new CountryTranslationEntity();
CountryTranslationPK pk = new CountryTranslationPK();
pk.setCountry(country);
pk.setLang(langEntity);
translation.setCountryTranslationPk(pk);
translations.add(translation);
}
translation.setTxt((String) fieldValue);
}
private CountryTranslationEntity getTranslation(List<CountryTranslationEntity> translations, String language) {
for (CountryTranslationEntity translation : translations) {
CountryTranslationPK translationPk = translation.getCountryTranslationPk();
String langCd = translationPk.getLang().getLangCd();
if (langCd.equals(language)) {
return translation;
}
}
return null;
}
});
fields.add(field);
}
}
return fields;
}
});
}
}
Aggregations