Skip to content

Commit

Permalink
Merge pull request #88 from tryggingamidstodin/ifs-fix
Browse files Browse the repository at this point in the history
Ifs fix
  • Loading branch information
jakobrun authored May 30, 2024
2 parents 6934327 + f6e9716 commit d0976c6
Show file tree
Hide file tree
Showing 8 changed files with 28 additions and 8 deletions.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "node-jt400",
"author": "Tryggingamiðstöðin <[email protected]>",
"version": "5.0.2",
"version": "5.0.3",
"description": "JT400 (IBM Toolbox) for NodeJS",
"main": "dist/index.js",
"types": "dist/index.d.ts",
Expand Down
2 changes: 2 additions & 0 deletions ts-src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export function pool(config = {}): Connection {
connection: javaCon,
insertListFun: createInsertListInOneStatment,
bufferToJavaType: javaBridge.bufferToJavaType,
javaTypeToBuffer: javaBridge.javaTypeToBuffer,
inMemory: false,
})
}
Expand All @@ -40,6 +41,7 @@ export async function connect(config = {}): Promise<Connection> {
connection: javaCon,
insertListFun: createInsertListInOneStatment,
bufferToJavaType: javaBridge.bufferToJavaType,
javaTypeToBuffer: javaBridge.javaTypeToBuffer,
inMemory: false,
})
}
Expand Down
7 changes: 7 additions & 0 deletions ts-src/java/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<JT400>
createPool: (config: string) => JT400
createInMemoryConnection: () => JT400
bufferToJavaType: BufferToJavaType
javaTypeToBuffer: JavaTypeToBuffer
}

export const initJavaBridge = (): JavaBridge => {
Expand Down Expand Up @@ -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
},
}
}

Expand Down Expand Up @@ -76,5 +82,6 @@ export const initJavaBridge = (): JavaBridge => {
// },
// createPool: (config: string) => JT400Class.createPoolSync(config),
// bufferToJavaType: (buffer: Buffer) => buffer,
// javaTypeToBuffer: (javaType: any) => javaType,
// }
// }
6 changes: 4 additions & 2 deletions ts-src/lib/connection.ts
Original file line number Diff line number Diff line change
@@ -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 {
Expand All @@ -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(
Expand Down Expand Up @@ -138,7 +140,7 @@ export function createConnection({
}
},
ifs() {
return createIfs(connection, bufferToJavaType)
return createIfs(connection, bufferToJavaType, javaTypeToBuffer)
},
defineProgram(opt: ProgramDefinitionOptions) {
const pgm = connection.pgmSync(
Expand Down
9 changes: 7 additions & 2 deletions ts-src/lib/ifs/index.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
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<string>) {
const javaStream = Promise.resolve(fileName).then(function (file) {
return connection.createIfsReadStream(file)
})
return new IfsReadStream({
ifsReadStream: javaStream,
javaTypeToBuffer,
})
},
createWriteStream: function (
Expand Down
5 changes: 4 additions & 1 deletion ts-src/lib/ifs/read_stream.ts
Original file line number Diff line number Diff line change
@@ -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<IfsReadStreamType>
javaTypeToBuffer: JavaTypeToBuffer
}) {
Readable.call(this, {
objectMode: false,
})
this._ifsReadStream = opt.ifsReadStream
this._javaTypeToBuffer = opt.javaTypeToBuffer
this._buffer = []
}

Expand All @@ -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)
Expand Down
1 change: 1 addition & 0 deletions ts-src/lib/inMemoryConnection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export function createInMemoryConnection(
connection: javaCon,
insertListFun: createStandardInsertList,
bufferToJavaType: jt400Factory.bufferToJavaType,
javaTypeToBuffer: jt400Factory.javaTypeToBuffer,
inMemory: true,
})
const pgmMockRegistry = {}
Expand Down

0 comments on commit d0976c6

Please sign in to comment.