private Object createInstance(final Class<?> complexClass) throws ODataException { try { return complexClass.newInstance(); } catch (InstantiationException e) { throw new ODataException("Unable to create instance for complex data class '" + complexClass + "'.", e); } catch (IllegalAccessException e) { throw new ODataException("Unable to create instance for complex data class '" + complexClass + "'.", e); } }
private Object createInstance(final Class<?> complexClass) throws ODataException { try { return complexClass.newInstance(); } catch (InstantiationException e) { throw new ODataException("Unable to create instance for complex data class '" + complexClass + "'.", e); } catch (IllegalAccessException e) { throw new ODataException("Unable to create instance for complex data class '" + complexClass + "'.", e); } }
/** * Extracts the request content from the servlet as input stream. * @param param initialization parameters * @return the request content as input stream * @throws ODataException */ public static ServletInputStream extractRequestContent(final SubLocatorParameter param) throws ODataException { try { return param.getServletRequest().getInputStream(); } catch (final IOException e) { throw new ODataException("Error getting request content as ServletInputStream.", e); } }
/** * Extracts the request content from the servlet as input stream. * @param param initialization parameters * @return the request content as input stream * @throws ODataException */ public static ServletInputStream extractRequestContent(final SubLocatorParameter param) throws ODataException { try { return param.getServletRequest().getInputStream(); } catch (final IOException e) { throw new ODataException("Error getting request content as ServletInputStream.", e); } }
private List<File> readEDMXFilesUsingClassPath() throws ODataException { URL url = this.getClass().getClassLoader().getResource("edmx"); if (url == null) { throw new ODataException( "Unable to find the edmx folder containing the service files for this project. Please check your configuration."); } File dir = null; try { dir = new File(url.toURI()); } catch (URISyntaxException e) { logger.debug("Reading file from path", e); dir = new File(url.getPath()); } File[] fileList = dir.listFiles(); return Arrays.stream(fileList).filter(file -> file.getName().endsWith(".xml")).collect(Collectors.toList()); }
/** * Extracts the request content from the servlet as input stream. * @param param initialization parameters * @return the request content as input stream * @throws ODataException */ public static ServletInputStream extractRequestContent(final SubLocatorParameter param) throws ODataException { try { return param.getServletRequest().getInputStream(); } catch (final IOException e) { throw new ODataException("Error getting request content as ServletInputStream.", e); } }
private InputStream getInputStream(String stringEntity) throws ODataException { try { String contentHeader = getContentHeader(); Charset charset = DEFAULT_CHARSET; if(contentHeader != null) { Matcher matcher = CHARSET_MATCHER_PATTERN.matcher(contentHeader); if(matcher.find()) { charset = Charset.forName(matcher.group(0).split("=")[1]); } } return new ByteArrayInputStream(stringEntity.getBytes(charset)); } catch (Exception e) { throw new ODataException("Unexpected exception for wrapping of String entity into InputStream."); } }
/** * @return a response entity as inputStream which becomes the body part of a response message * @throws ODataException throws ODataException in case of entity is not a stream (internal ClassCastException) */ public InputStream getEntityAsStream() throws ODataException { Object obj = getEntity(); if(obj instanceof InputStream) { return (InputStream) obj; } else if(obj instanceof byte[]) { return new ByteArrayInputStream((byte[]) obj); } else if(obj instanceof String) { return getInputStream((String) obj); } throw new ODataException("Entity is not an instance of an InputStream (entity class: " + (obj == null ? "NULL": obj.getClass()) + ")"); }
private void checkHEADMethod(ODataContext odataContext) throws ODataException{ if(odataContext != null && odataContext.getHttpMethod() != null && ("HEAD").equals(odataContext.getHttpMethod())){ GatewayLogMessage msg = GatewayLogMessage.MethodNotAllowed; throw new ODataException(msg.getMessageText()); } }
public void includeEntityType(Schema targetSchema, IServiceInfo service, FullQualifiedName entityTypeName) throws ODataException { EdmProvider edmProvider = getEdmProvider(service); EntityType sourceType = edmProvider.getEntityType(entityTypeName); if (sourceType == null) { throw new ODataException("entity type " + entityTypeName + " not defined"); } includeEntityType(targetSchema, service, sourceType); }
public void includeAssociation(Schema targetSchema, IServiceInfo service, FullQualifiedName associationName) throws ODataException { EdmProvider edmProvider = getEdmProvider(service); Association sourceAssociation = edmProvider .getAssociation(associationName); if (sourceAssociation == null) { throw new ODataException("association " + associationName + " not defined"); } includeAssociation(targetSchema, service, sourceAssociation); }
private BaseDataProviderResponse handleBatchException(Exception e){ BaseDataProviderResponse response = new BaseDataProviderResponse(); if(e.getMessage().equals(accessDenied)){ response.setStatusCode(HttpStatusCodes.FORBIDDEN); response.setException(new ODataException(e)); return response; } else{ response.setStatusCode(HttpStatusCodes.INTERNAL_SERVER_ERROR); response.setException((ODataException) e); return response; } }
public void includeComplexType(Schema targetSchema, IServiceInfo service, FullQualifiedName complexTypeName) throws ODataException { EdmProvider edmProvider = getEdmProvider(service); ComplexType sourceType = edmProvider.getComplexType(complexTypeName); if (sourceType == null) { throw new ODataException("complex type " + complexTypeName + " not defined"); } includeComplexType(targetSchema, service, sourceType); }
public void includeFunctionImport(Schema targetSchema, EntityContainer targetContainer, IServiceInfo service, String entityContainerName, String functionImportName) throws ODataException { EdmProvider provider = getEdmProvider(service); FunctionImport sourceFunctionImport = provider.getFunctionImport( entityContainerName, functionImportName); if (sourceFunctionImport == null) { throw new ODataException("function import " + functionImportName + " not defined"); } includeFunctionImport(targetSchema, targetContainer, service, sourceFunctionImport); }
public void includeEntitySet(Schema targetSchema, EntityContainer targetContainer, IServiceInfo service, String entityContainerName, String entitySetName) throws ODataException { EdmProvider provider = getEdmProvider(service); EntitySet sourceEntitySet = provider.getEntitySet(entityContainerName, entitySetName); if (sourceEntitySet == null) { throw new ODataException("entity set " + entitySetName + " not defined"); } includeEntitySet(targetSchema, targetContainer, service, sourceEntitySet); }
private String getEntitySetName(final AssociationEnd end) throws ODataException { for (EntitySet entitySet : entitySets) { if (entitySet.getEntityType().equals(end.getType())) { return entitySet.getName(); } } throw new ODataException("No entity set found for " + end.getType()); } }
private String getEntitySetName(final AssociationEnd end) throws ODataException { for (EntitySet entitySet : entitySets) { if (entitySet.getEntityType().equals(end.getType())) { return entitySet.getName(); } } throw new ODataException("No entity set found for " + end.getType()); } }
@Override public IDataProviderResponse countEntitySet(GetEntitySetCountUriInfo uriInfo, ODataContext context) throws ODataException { IDataProvider dataProvider = null; String targetEntitySet = uriInfo.getTargetEntitySet().getEntityType().getNamespace()+"."+uriInfo.getTargetEntitySet().getName(); dataProvider = getDataProvider(targetEntitySet); try{ if (dataProvider !=null){ return dataProvider.countEntitySet(uriInfo, context); } else return null; } catch (ODataException e) { logger.error("Error in countEntity",e); throw new ODataException(e.getMessage(),e); } }
@Override public IDataProviderResponse updateEntity(PutMergePatchUriInfo uriInfo, ODataEntry content, String requestContentType, boolean merge, ODataContext context) throws ODataException { PutMergePatchUriInfo resolvedUriInfo = resolveCrossServiceNavigation((UriInfo) uriInfo, context); if (containsCrossServiceNavigationProperty(uriInfo.getStartEntitySet().getEntityType(), content)) { throw new ODataException("cross-service deep insert is not supported"); } IDataProvider provider = getTargetDataProvider(resolvedUriInfo.getFunctionImport(), resolvedUriInfo.getStartEntitySet()); if (provider == null) { throw new DataProviderException(DataProviderException.NOT_IMPLEMENTED.addContent("updateEntity"), context.getAcceptableLanguages().get(0)); } else { return provider.updateEntity(resolvedUriInfo, content, requestContentType, merge, context); } }
@Override public IDataProviderResponse createEntity(PostUriInfo uriInfo, ODataEntry content, String requestContentType, ODataEntityProviderPropertiesBuilder providerPropertiesBuilder, ODataContext context) throws ODataException { PostUriInfo resolvedUriInfo = resolveCrossServiceNavigation((UriInfo) uriInfo, context); if (containsCrossServiceNavigationProperty(uriInfo.getStartEntitySet().getEntityType(), content)) { throw new ODataException("cross-service deep insert is not supported"); } IDataProvider provider = getTargetDataProvider(resolvedUriInfo.getFunctionImport(), resolvedUriInfo.getStartEntitySet()); if (provider == null) { throw new DataProviderException(DataProviderException.NOT_IMPLEMENTED.addContent("createEntity"), context.getAcceptableLanguages().get(0)); } else { return provider.createEntity(resolvedUriInfo, content, requestContentType, providerPropertiesBuilder, context); } }