From 73e6910f222b1907303cdf6c8ac2a3e5e114e88a Mon Sep 17 00:00:00 2001 From: jakob Date: Thu, 30 May 2024 14:17:35 +0000 Subject: [PATCH 1/2] fix read stream conversion from java in ifs --- ts-src/index.ts | 2 ++ ts-src/java/index.ts | 7 +++++++ ts-src/lib/connection.ts | 6 ++++-- ts-src/lib/ifs/index.ts | 9 +++++++-- ts-src/lib/ifs/read_stream.ts | 5 ++++- ts-src/lib/inMemoryConnection.ts | 1 + 6 files changed, 25 insertions(+), 5 deletions(-) diff --git a/ts-src/index.ts b/ts-src/index.ts index 6774b95..39c7abe 100644 --- a/ts-src/index.ts +++ b/ts-src/index.ts @@ -29,6 +29,7 @@ export function pool(config = {}): Connection { connection: javaCon, insertListFun: createInsertListInOneStatment, bufferToJavaType: javaBridge.bufferToJavaType, + javaTypeToBuffer: javaBridge.javaTypeToBuffer, inMemory: false, }) } @@ -40,6 +41,7 @@ export async function connect(config = {}): Promise { connection: javaCon, insertListFun: createInsertListInOneStatment, bufferToJavaType: javaBridge.bufferToJavaType, + javaTypeToBuffer: javaBridge.javaTypeToBuffer, inMemory: false, }) } diff --git a/ts-src/java/index.ts b/ts-src/java/index.ts index 6635abb..e330638 100644 --- a/ts-src/java/index.ts +++ b/ts-src/java/index.ts @@ -6,11 +6,14 @@ import { JT400 } from './JT400' export type BufferToJavaType = (buffer: Buffer) => any +export type JavaTypeToBuffer = (javaType: any) => Buffer | null + export interface JavaBridge { createConnection: (config: string) => Promise createPool: (config: string) => JT400 createInMemoryConnection: () => JT400 bufferToJavaType: BufferToJavaType + javaTypeToBuffer: JavaTypeToBuffer } export const initJavaBridge = (): JavaBridge => { @@ -46,6 +49,9 @@ export const initJavaBridge = (): JavaBridge => { const byteArray = jvm.newArray('byte', [...buffer]) return byteArray }, + javaTypeToBuffer: (javaType: any) => { + return javaType ? Buffer.from(javaType) : null + }, } } @@ -76,5 +82,6 @@ export const initJavaBridge = (): JavaBridge => { // }, // createPool: (config: string) => JT400Class.createPoolSync(config), // bufferToJavaType: (buffer: Buffer) => buffer, +// javaTypeToBuffer: (javaType: any) => javaType, // } // } diff --git a/ts-src/lib/connection.ts b/ts-src/lib/connection.ts index 308ad31..08e9792 100644 --- a/ts-src/lib/connection.ts +++ b/ts-src/lib/connection.ts @@ -1,5 +1,5 @@ import { deprecate } from 'util' -import { BufferToJavaType } from '../java' +import { BufferToJavaType, JavaTypeToBuffer } from '../java' import { JT400 } from '../java/JT400' import { createBaseConnection } from './baseConnection' import { @@ -25,11 +25,13 @@ export function createConnection({ connection, insertListFun, bufferToJavaType, + javaTypeToBuffer, inMemory, }: { connection: JT400 insertListFun: CreateInsertList bufferToJavaType: BufferToJavaType + javaTypeToBuffer: JavaTypeToBuffer inMemory: boolean }): Connection { const baseConnection = createBaseConnection( @@ -138,7 +140,7 @@ export function createConnection({ } }, ifs() { - return createIfs(connection, bufferToJavaType) + return createIfs(connection, bufferToJavaType, javaTypeToBuffer) }, defineProgram(opt: ProgramDefinitionOptions) { const pgm = connection.pgmSync( diff --git a/ts-src/lib/ifs/index.ts b/ts-src/lib/ifs/index.ts index 30f3c68..a17dcf1 100644 --- a/ts-src/lib/ifs/index.ts +++ b/ts-src/lib/ifs/index.ts @@ -1,10 +1,14 @@ import { basename, dirname } from 'path' -import { BufferToJavaType } from '../../java' +import { BufferToJavaType, JavaTypeToBuffer } from '../../java' import { JT400 } from '../../java/JT400' import { IfsReadStream } from './read_stream' import { IfsWriteStream } from './write_stream' -export function ifs(connection: JT400, bufferToJavaType: BufferToJavaType) { +export function ifs( + connection: JT400, + bufferToJavaType: BufferToJavaType, + javaTypeToBuffer: JavaTypeToBuffer +) { return { createReadStream: function (fileName: string | Promise) { const javaStream = Promise.resolve(fileName).then(function (file) { @@ -12,6 +16,7 @@ export function ifs(connection: JT400, bufferToJavaType: BufferToJavaType) { }) return new IfsReadStream({ ifsReadStream: javaStream, + javaTypeToBuffer, }) }, createWriteStream: function ( diff --git a/ts-src/lib/ifs/read_stream.ts b/ts-src/lib/ifs/read_stream.ts index 065aafc..53f41f9 100644 --- a/ts-src/lib/ifs/read_stream.ts +++ b/ts-src/lib/ifs/read_stream.ts @@ -1,14 +1,17 @@ import util = require('util') import { Readable } from 'stream' +import { JavaTypeToBuffer } from '../../java' import { IfsReadStream as IfsReadStreamType } from '../../java/JT400' export function IfsReadStream(opt: { ifsReadStream: Promise + javaTypeToBuffer: JavaTypeToBuffer }) { Readable.call(this, { objectMode: false, }) this._ifsReadStream = opt.ifsReadStream + this._javaTypeToBuffer = opt.javaTypeToBuffer this._buffer = [] } @@ -22,7 +25,7 @@ IfsReadStream.prototype._read = function () { stream .read() .then((res) => { - this.push(res) + this.push(this._javaTypeToBuffer(res)) }) .catch((err) => { _this.emit('error', err) diff --git a/ts-src/lib/inMemoryConnection.ts b/ts-src/lib/inMemoryConnection.ts index 00bf06d..6ca7679 100644 --- a/ts-src/lib/inMemoryConnection.ts +++ b/ts-src/lib/inMemoryConnection.ts @@ -15,6 +15,7 @@ export function createInMemoryConnection( connection: javaCon, insertListFun: createStandardInsertList, bufferToJavaType: jt400Factory.bufferToJavaType, + javaTypeToBuffer: jt400Factory.javaTypeToBuffer, inMemory: true, }) const pgmMockRegistry = {} From f6e9716e1f9c366c628e47457d127275281c8c72 Mon Sep 17 00:00:00 2001 From: jakob Date: Thu, 30 May 2024 14:17:40 +0000 Subject: [PATCH 2/2] 5.0.3 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 054cf29..f307f23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "node-jt400", - "version": "5.0.2", + "version": "5.0.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "node-jt400", - "version": "5.0.2", + "version": "5.0.3", "license": "MIT", "dependencies": { "flushwritable": "^1.0.0", diff --git a/package.json b/package.json index 1d4955b..cdf1f37 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "node-jt400", "author": "Tryggingamiðstöðin ", - "version": "5.0.2", + "version": "5.0.3", "description": "JT400 (IBM Toolbox) for NodeJS", "main": "dist/index.js", "types": "dist/index.d.ts",