@Override @SuppressWarnings("unchecked") public Serializable getJsonEntities(final String entityClassName, final List<Long> identifiers, final String businessDataURIPattern) throws SBusinessDataRepositoryException { final Class<? extends Entity> entityClass = loadClass(entityClassName); final List<? extends Entity> entities = businessDataRepository.findByIdentifiers(entityClass, identifiers); return jsonBusinessDataSerializer.serializeEntities(entities, businessDataURIPattern); }
@Override public Serializable getJsonEntity(final String entityClassName, final Long identifier, final String businessDataURIPattern) throws SBusinessDataNotFoundException, SBusinessDataRepositoryException { final Class<? extends Entity> entityClass = loadClass(entityClassName); final Entity entity = businessDataRepository.findById(entityClass, identifier); return jsonBusinessDataSerializer.serializeEntity(entity, businessDataURIPattern); }
@SuppressWarnings("unchecked") @Override public Serializable getJsonChildEntity(final String entityClassName, final Long identifier, final String childFieldName, final String businessDataURIPattern) throws SBusinessDataNotFoundException, SBusinessDataRepositoryException { final Class<? extends Entity> entityClass = loadClass(entityClassName); final Object entity = businessDataRepository.findById(entityClass, identifier); Object childEntity; java.lang.reflect.Type getterReturnType; try { final String getterName = ClassReflector.getGetterName(childFieldName); childEntity = ClassReflector.invokeGetter(entity, getterName); getterReturnType = ClassReflector.getGetterReturnType(entityClass, getterName); } catch (final SReflectException e) { throw new SBusinessDataRepositoryException(e); } if (childEntity == null) { return JsonBusinessDataSerializer.EMPTY_OBJECT; } if (childEntity instanceof Entity) { final Entity unwrap = businessDataRepository.unwrap((Entity) childEntity); return jsonBusinessDataSerializer.serializeEntity(unwrap, businessDataURIPattern); } else if (childEntity instanceof List) { final Class<?> type = (Class<?>) ((ParameterizedType) getterReturnType).getActualTypeArguments()[0]; if (Entity.class.isAssignableFrom(type)) { return jsonBusinessDataSerializer.serializeEntities((List<Entity>) childEntity, businessDataURIPattern); } } return null; }
@SuppressWarnings("unchecked") @Override public Serializable getJsonChildEntity(final String entityClassName, final Long identifier, final String childFieldName, final String businessDataURIPattern) throws SBusinessDataNotFoundException, SBusinessDataRepositoryException { final Class<? extends Entity> entityClass = loadClass(entityClassName); final Object entity = businessDataRepository.findById(entityClass, identifier); Object childEntity; java.lang.reflect.Type getterReturnType; try { final String getterName = ClassReflector.getGetterName(childFieldName); childEntity = ClassReflector.invokeGetter(entity, getterName); getterReturnType = ClassReflector.getGetterReturnType(entityClass, getterName); } catch (final SReflectException e) { throw new SBusinessDataRepositoryException(e); } if (childEntity == null) { return JsonBusinessDataSerializer.EMPTY_OBJECT; } if (childEntity instanceof Entity) { final Entity unwrap = businessDataRepository.unwrap((Entity) childEntity); return jsonBusinessDataSerializer.serializeEntity(unwrap, businessDataURIPattern); } else if (childEntity instanceof List) { final Class<?> type = (Class<?>) ((ParameterizedType) getterReturnType).getActualTypeArguments()[0]; if (Entity.class.isAssignableFrom(type)) { return jsonBusinessDataSerializer.serializeEntities((List<Entity>) childEntity, businessDataURIPattern); } } return null; }
@Override @SuppressWarnings("unchecked") public Serializable getJsonEntities(final String entityClassName, final List<Long> identifiers, final String businessDataURIPattern) throws SBusinessDataRepositoryException { final Class<? extends Entity> entityClass = loadClass(entityClassName); final List<? extends Entity> entities = businessDataRepository.findByIdentifiers(entityClass, identifiers); return jsonBusinessDataSerializer.serializeEntities(entities, businessDataURIPattern); }
@Override public Serializable getJsonEntity(final String entityClassName, final Long identifier, final String businessDataURIPattern) throws SBusinessDataNotFoundException, SBusinessDataRepositoryException { final Class<? extends Entity> entityClass = loadClass(entityClassName); final Entity entity = businessDataRepository.findById(entityClass, identifier); return jsonBusinessDataSerializer.serializeEntity(entity, businessDataURIPattern); }
@Override public BusinessDataQueryResult getJsonQueryEntities(final String entityClassName, final String queryName, final Map<String, Serializable> parameters, final Integer startIndex, final Integer maxResults, final String businessDataURIPattern) throws SBusinessDataRepositoryException { final Class<? extends Entity> businessDataClass = loadClass(entityClassName); BusinessObject businessObject = getBusinessObjectFromClassName(entityClassName); final Query queryDefinition = getQueryDefinition(businessObject, entityClassName, queryName); final Map<String, Serializable> queryParameters = getQueryParameters(queryDefinition, parameters); final List<? extends Serializable> list = businessDataRepository.findListByNamedQuery(getQualifiedQueryName(businessDataClass, queryName), getQueryReturnType(queryDefinition, entityClassName), queryParameters, startIndex, maxResults); BusinessDataQueryMetadataImpl businessDataQueryMetadata = null; final Query countQueryDefinition = getCountQueryDefinition(businessDataClass, businessObject, queryDefinition); if (countQueryDefinition != null) { try { businessDataQueryMetadata = new BusinessDataQueryMetadataImpl(startIndex, maxResults, (Long) businessDataRepository.findByNamedQuery(getQualifiedQueryName(businessDataClass, countQueryDefinition.getName()), getQueryReturnType(countQueryDefinition, entityClassName), queryParameters)); } catch (NonUniqueResultException e) { throw new SBusinessDataRepositoryException("unable to count results for query " + queryName); } } Serializable jsonResults = jsonBusinessDataSerializer.serializeEntities((List<Entity>) list, businessDataURIPattern); return new BusinessDataQueryResultImpl(jsonResults, businessDataQueryMetadata); }
@Override public BusinessDataQueryResult getJsonQueryEntities(final String entityClassName, final String queryName, final Map<String, Serializable> parameters, final Integer startIndex, final Integer maxResults, final String businessDataURIPattern) throws SBusinessDataRepositoryException { final Class<? extends Entity> businessDataClass = loadClass(entityClassName); BusinessObject businessObject = getBusinessObjectFromClassName(entityClassName); final Query queryDefinition = getQueryDefinition(businessObject, entityClassName, queryName); final Map<String, Serializable> queryParameters = getQueryParameters(queryDefinition, parameters); final List<? extends Serializable> list = businessDataRepository.findListByNamedQuery(getQualifiedQueryName(businessDataClass, queryName), getQueryReturnType(queryDefinition, entityClassName), queryParameters, startIndex, maxResults); BusinessDataQueryMetadataImpl businessDataQueryMetadata = null; final Query countQueryDefinition = getCountQueryDefinition(businessDataClass, businessObject, queryDefinition); if (countQueryDefinition != null) { try { businessDataQueryMetadata = new BusinessDataQueryMetadataImpl(startIndex, maxResults, (Long) businessDataRepository.findByNamedQuery(getQualifiedQueryName(businessDataClass, countQueryDefinition.getName()), getQueryReturnType(countQueryDefinition, entityClassName), queryParameters)); } catch (NonUniqueResultException e) { throw new SBusinessDataRepositoryException("unable to count results for query " + queryName); } } Serializable jsonResults = jsonBusinessDataSerializer.serializeEntities((List<Entity>) list, businessDataURIPattern); return new BusinessDataQueryResultImpl(jsonResults, businessDataQueryMetadata); }