[JAVA-9814] Cleanup apache-olingo module

This commit is contained in:
Haroon Khan 2022-02-03 21:32:04 +00:00
parent 9b8a5a0fa7
commit 694041bc87
15 changed files with 46 additions and 57 deletions

View File

@ -27,3 +27,4 @@ HELP.md
### VS Code ### ### VS Code ###
.vscode/ .vscode/

View File

@ -4,15 +4,15 @@ This following table contains test URLs that can be used with the Olingo V2 demo
| URL | Description | | URL | Description |
|------------------------------------------|-------------------------------------------------| |------------------------------------------|-------------------------------------------------|
| `http://localhost:8180/odata/$metadata` | fetch OData metadata document | | `http://localhost:8080/odata/$metadata` | fetch OData metadata document |
| `http://localhost:8180/odata/CarMakers?$top=10&$skip=10` | Get 10 entities starting at offset 10 | | `http://localhost:8080/odata/CarMakers?$top=10&$skip=10` | Get 10 entities starting at offset 10 |
| `http://localhost:8180/odata/CarMakers?$count` | Return total count of entities in this set | | `http://localhost:8080/odata/CarMakers?$count` | Return total count of entities in this set |
| `http://localhost:8180/odata/CarMakers?$filter=startswith(Name,'B')` | Return entities where the *Name* property starts with 'B' | | `http://localhost:8080/odata/CarMakers?$filter=startswith(Name,'B')` | Return entities where the *Name* property starts with 'B' |
| `http://localhost:8180/odata/CarModels?$filter=Year eq 2008 and CarMakerDetails/Name eq 'BWM'` | Return *CarModel* entities where the *Name* property of its maker starts with 'B' | | `http://localhost:8080/odata/CarModels?$filter=Year eq 2008 and CarMakerDetails/Name eq 'BWM'` | Return *CarModel* entities where the *Name* property of its maker starts with 'B' |
| `http://localhost:8180/odata/CarModels(1L)?$expand=CarMakerDetails` | Return the *CarModel* with primary key '1', along with its maker| | `http://localhost:8080/odata/CarModels(1L)?$expand=CarMakerDetails` | Return the *CarModel* with primary key '1', along with its maker|
| `http://localhost:8180/odata/CarModels(1L)?$select=Name,Sku` | Return the *CarModel* with primary key '1', returing only its *Name* and *Sku* properties | | `http://localhost:8080/odata/CarModels(1L)?$select=Name,Sku` | Return the *CarModel* with primary key '1', returing only its *Name* and *Sku* properties |
| `http://localhost:8180/odata/CarModels?$orderBy=Name asc,Sku desc` | Return *CarModel* entities, ordered by the their *Name* and *Sku* properties | | `http://localhost:8080/odata/CarModels?$orderBy=Name asc,Sku desc` | Return *CarModel* entities, ordered by the their *Name* and *Sku* properties |
| `http://localhost:8180/odata/CarModels?$format=json` | Return *CarModel* entities, using a JSON representation| | `http://localhost:8080/odata/CarModels?$format=json` | Return *CarModel* entities, using a JSON representation|

View File

@ -3,16 +3,16 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.baeldung.examples.olingo2</groupId> <groupId>com.baeldung.examples.olingo</groupId>
<artifactId>olingo2</artifactId> <artifactId>apache-olingo</artifactId>
<name>olingo2</name> <name>apache-olingo</name>
<description>Sample Olingo 2 Project</description> <description>Sample Apache Olingo Project</description>
<parent> <parent>
<groupId>com.baeldung</groupId> <groupId>com.baeldung</groupId>
<artifactId>parent-boot-2</artifactId> <artifactId>parent-boot-2</artifactId>
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<relativePath>../../parent-boot-2</relativePath> <relativePath>../parent-boot-2</relativePath>
</parent> </parent>
<dependencies> <dependencies>
@ -43,7 +43,7 @@
<dependency> <dependency>
<groupId>org.apache.olingo</groupId> <groupId>org.apache.olingo</groupId>
<artifactId>olingo-odata2-core</artifactId> <artifactId>olingo-odata2-core</artifactId>
<version>${olingo2.version}</version> <version>${olingo.version}</version>
<!-- Avoid jax-rs version conflict by excluding Olingo's version --> <!-- Avoid jax-rs version conflict by excluding Olingo's version -->
<exclusions> <exclusions>
<exclusion> <exclusion>
@ -55,12 +55,12 @@
<dependency> <dependency>
<groupId>org.apache.olingo</groupId> <groupId>org.apache.olingo</groupId>
<artifactId>olingo-odata2-jpa-processor-core</artifactId> <artifactId>olingo-odata2-jpa-processor-core</artifactId>
<version>${olingo2.version}</version> <version>${olingo.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.olingo</groupId> <groupId>org.apache.olingo</groupId>
<artifactId>olingo-odata2-jpa-processor-ref</artifactId> <artifactId>olingo-odata2-jpa-processor-ref</artifactId>
<version>${olingo2.version}</version> <version>${olingo.version}</version>
<exclusions> <exclusions>
<exclusion> <exclusion>
<groupId>org.eclipse.persistence</groupId> <groupId>org.eclipse.persistence</groupId>
@ -80,7 +80,7 @@
</build> </build>
<properties> <properties>
<olingo2.version>2.0.11</olingo2.version> <olingo.version>2.0.11</olingo.version>
</properties> </properties>
</project> </project>

View File

@ -27,11 +27,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/**
* ODataJPAServiceFactory implementation for our sample domain
* @author Philippe
*
*/
@Component @Component
public class CarsODataJPAServiceFactory extends ODataJPAServiceFactory { public class CarsODataJPAServiceFactory extends ODataJPAServiceFactory {
@ -44,7 +39,7 @@ public class CarsODataJPAServiceFactory extends ODataJPAServiceFactory {
/** /**
* This method will be called by Olingo on every request to * This method will be called by Olingo on every request to
* initialize the ODataJPAContext that will be used. * initialize the ODataJPAContext that will be used.
*/ */
@Override @Override
public ODataJPAContext initializeODataJPAContext() throws ODataJPARuntimeException { public ODataJPAContext initializeODataJPAContext() throws ODataJPARuntimeException {
@ -54,14 +49,14 @@ public class CarsODataJPAServiceFactory extends ODataJPAServiceFactory {
ODataContext octx = ctx.getODataContext(); ODataContext octx = ctx.getODataContext();
HttpServletRequest request = (HttpServletRequest)octx.getParameter(ODataContext.HTTP_SERVLET_REQUEST_OBJECT); HttpServletRequest request = (HttpServletRequest)octx.getParameter(ODataContext.HTTP_SERVLET_REQUEST_OBJECT);
EntityManager em = (EntityManager)request.getAttribute(JerseyConfig.EntityManagerFilter.EM_REQUEST_ATTRIBUTE); EntityManager em = (EntityManager)request.getAttribute(JerseyConfig.EntityManagerFilter.EM_REQUEST_ATTRIBUTE);
// Here we're passing the EM that was created by the EntityManagerFilter (see JerseyConfig) // Here we're passing the EM that was created by the EntityManagerFilter (see JerseyConfig)
ctx.setEntityManager(new EntityManagerWrapper(em)); ctx.setEntityManager(new EntityManagerWrapper(em));
ctx.setPersistenceUnitName("default"); ctx.setPersistenceUnitName("default");
// We're managing the EM's lifecycle, so we must inform Olingo that it should not // We're managing the EM's lifecycle, so we must inform Olingo that it should not
// try to manage transactions and/or persistence sessions // try to manage transactions and/or persistence sessions
ctx.setContainerManaged(true); ctx.setContainerManaged(true);
return ctx; return ctx;
} }

View File

@ -1,6 +1,12 @@
package com.baeldung.examples.olingo2; package com.baeldung.examples.olingo2;
import java.io.IOException; import org.apache.olingo.odata2.api.ODataServiceFactory;
import org.apache.olingo.odata2.core.rest.ODataRootLocator;
import org.apache.olingo.odata2.core.rest.app.ODataApplication;
import org.glassfish.jersey.server.ResourceConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory; import javax.persistence.EntityManagerFactory;
@ -15,28 +21,15 @@ import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.Context; import javax.ws.rs.core.Context;
import javax.ws.rs.ext.Provider; import javax.ws.rs.ext.Provider;
import org.apache.olingo.odata2.api.ODataServiceFactory;
import org.apache.olingo.odata2.core.rest.ODataRootLocator;
import org.apache.olingo.odata2.core.rest.app.ODataApplication;
import org.glassfish.jersey.server.ResourceConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
* Jersey JAX-RS configuration
* @author Philippe
*
*/
@Component @Component
@ApplicationPath("/odata") @ApplicationPath("/odata")
public class JerseyConfig extends ResourceConfig { public class JerseyConfig extends ResourceConfig {
public JerseyConfig(CarsODataJPAServiceFactory serviceFactory, EntityManagerFactory emf) { public JerseyConfig(CarsODataJPAServiceFactory serviceFactory, EntityManagerFactory emf) {
ODataApplication app = new ODataApplication(); ODataApplication app = new ODataApplication();
app app
.getClasses() .getClasses()
.forEach( c -> { .forEach( c -> {
@ -46,11 +39,11 @@ public class JerseyConfig extends ResourceConfig {
register(c); register(c);
} }
}); });
register(new CarsRootLocator(serviceFactory)); register(new CarsRootLocator(serviceFactory));
register( new EntityManagerFilter(emf)); register( new EntityManagerFilter(emf));
} }
/** /**
* This filter handles the EntityManager transaction lifecycle. * This filter handles the EntityManager transaction lifecycle.
* @author Philippe * @author Philippe
@ -72,7 +65,7 @@ public class JerseyConfig extends ResourceConfig {
} }
@Override @Override
public void filter(ContainerRequestContext ctx) throws IOException { public void filter(ContainerRequestContext ctx) {
log.info("[I60] >>> filter"); log.info("[I60] >>> filter");
EntityManager em = this.emf.createEntityManager(); EntityManager em = this.emf.createEntityManager();
httpRequest.setAttribute(EM_REQUEST_ATTRIBUTE, em); httpRequest.setAttribute(EM_REQUEST_ATTRIBUTE, em);
@ -85,7 +78,7 @@ public class JerseyConfig extends ResourceConfig {
} }
@Override @Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) {
log.info("[I68] <<< filter"); log.info("[I68] <<< filter");
EntityManager em = (EntityManager) httpRequest.getAttribute(EM_REQUEST_ATTRIBUTE); EntityManager em = (EntityManager) httpRequest.getAttribute(EM_REQUEST_ATTRIBUTE);

View File

@ -7,7 +7,7 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
@SpringBootApplication @SpringBootApplication
public class Olingo2SampleApplication extends SpringBootServletInitializer { public class Olingo2SampleApplication extends SpringBootServletInitializer {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(Olingo2SampleApplication.class); SpringApplication.run(Olingo2SampleApplication.class);
} }
} }

View File

@ -7,7 +7,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@SpringBootTest @SpringBootTest
public class Olingo2SampleApplicationUnitTest { public class Olingo2SampleApplicationIntegrationTest {
@Test @Test
public void contextLoads() { public void contextLoads() {

View File

@ -353,7 +353,7 @@
<module>apache-cxf</module> <module>apache-cxf</module>
<module>apache-kafka</module> <module>apache-kafka</module>
<module>apache-libraries</module> <module>apache-libraries</module>
<module>apache-olingo/olingo2</module> <module>apache-olingo</module>
<module>apache-poi</module> <module>apache-poi</module>
<module>apache-rocketmq</module> <module>apache-rocketmq</module>
<module>apache-shiro</module> <module>apache-shiro</module>
@ -839,7 +839,7 @@
<module>apache-cxf</module> <module>apache-cxf</module>
<module>apache-kafka</module> <module>apache-kafka</module>
<module>apache-libraries</module> <module>apache-libraries</module>
<module>apache-olingo/olingo2</module> <module>apache-olingo</module>
<module>apache-poi</module> <module>apache-poi</module>
<module>apache-rocketmq</module> <module>apache-rocketmq</module>
<module>apache-shiro</module> <module>apache-shiro</module>