Skip to content

Commit a062054

Browse files
committed
fix: issues with resources
1 parent 8b0ac05 commit a062054

3 files changed

Lines changed: 20 additions & 11 deletions

File tree

src/main/java/io/neonbee/endpoint/odatav4/ODataProxyEndpointHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,9 @@ Future<Buffer> handleMetadataRequest(RoutingContext routingContext, DataContext
469469
Buffer buffer;
470470
try {
471471
if (odataResponse.getContent() != null) {
472-
buffer = inputStreamToBuffer(odataResponse.getContent());
472+
try (InputStream content = odataResponse.getContent()) {
473+
buffer = inputStreamToBuffer(content);
474+
}
473475
} else if (odataResponse.getODataContent() != null) {
474476
java.io.ByteArrayOutputStream byteArrayOutput = new java.io.ByteArrayOutputStream();
475477
odataResponse.getODataContent().write(byteArrayOutput);

src/main/java/io/neonbee/endpoint/odatav4/internal/olingo/OlingoEndpointHandler.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import java.io.ByteArrayOutputStream;
1111
import java.io.IOException;
12+
import java.io.InputStream;
1213
import java.util.List;
1314
import java.util.Map;
1415

@@ -236,7 +237,9 @@ public static void mapODataResponse(ODataResponse odataResponse, HttpServerRespo
236237
}
237238
// OData response content
238239
if (odataResponse.getContent() != null) {
239-
response.end(inputStreamToBuffer(odataResponse.getContent()));
240+
try (InputStream content = odataResponse.getContent()) {
241+
response.end(inputStreamToBuffer(content));
242+
}
240243
} else if (odataResponse.getODataContent() != null) {
241244
ByteArrayOutputStream byteArrayOutput = new ByteArrayOutputStream();
242245
odataResponse.getODataContent().write(byteArrayOutput);

src/main/java/io/neonbee/entity/EntityModelLoader.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import static java.nio.charset.StandardCharsets.UTF_8;
88

99
import java.io.ByteArrayInputStream;
10+
import java.io.IOException;
1011
import java.io.InputStream;
1112
import java.io.InputStreamReader;
1213
import java.io.Reader;
@@ -316,19 +317,20 @@ private Future<ServiceMetadata> createServiceMetadataWithSchema(Buffer csdl) {
316317
* a ServiceMetadata instance
317318
*/
318319
private ServiceMetadata createServiceMetadataWithSchema(Buffer csdl, String schemaNamespace)
319-
throws XMLStreamException {
320+
throws IOException, XMLStreamException {
320321
synchronized (this) {
321322
// Create a metadata parser instance for the schema namespace if it is not existing
322323
MetadataParser parser = metadataParsers.computeIfAbsent(schemaNamespace,
323324
newSchemaNamespace -> new MetadataParser().referenceResolver(null).parseAnnotations(true));
324325

325-
Reader csdlReader = new InputStreamReader(new BufferInputStream(csdl), UTF_8);
326326
// does NOT to be a ConcurrentHashMap, as only get / put access! so no iteration is done!
327327
SchemaBasedEdmProvider provider = edmProviders.get(schemaNamespace);
328-
if (provider == null) {
329-
edmProviders.put(schemaNamespace, provider = parser.buildEdmProvider(csdlReader));
330-
} else {
331-
parser.addToEdmProvider(provider, csdlReader);
328+
try (Reader csdlReader = new InputStreamReader(new BufferInputStream(csdl), UTF_8)) {
329+
if (provider == null) {
330+
edmProviders.put(schemaNamespace, provider = parser.buildEdmProvider(csdlReader));
331+
} else {
332+
parser.addToEdmProvider(provider, csdlReader);
333+
}
332334
}
333335

334336
return getBufferedOData().createServiceMetadata(provider, Collections.emptyList(),
@@ -344,9 +346,11 @@ private ServiceMetadata createServiceMetadataWithSchema(Buffer csdl, String sche
344346
* ATTENTION: This method contains BLOCKING code and thus should only be called in a Vert.x worker thread!
345347
*/
346348
@VisibleForTesting
347-
static ServiceMetadata createServiceMetadata(Buffer csdl) throws XMLStreamException {
348-
InputStreamReader reader = new InputStreamReader(new BufferInputStream(csdl), UTF_8);
349-
SchemaBasedEdmProvider edmProvider = new MetadataParser().referenceResolver(null).buildEdmProvider(reader);
349+
static ServiceMetadata createServiceMetadata(Buffer csdl) throws IOException, XMLStreamException {
350+
SchemaBasedEdmProvider edmProvider;
351+
try (Reader reader = new InputStreamReader(new BufferInputStream(csdl), UTF_8)) {
352+
edmProvider = new MetadataParser().referenceResolver(null).buildEdmProvider(reader);
353+
}
350354
return getBufferedOData().createServiceMetadata(edmProvider, Collections.emptyList());
351355
}
352356

0 commit comments

Comments
 (0)