Intersystems Caché с Java Gateway - передать параметр как java.io.FileInputStream

В моем проекте я использую интеграцию Intersystems Caché с Java с помощью Java Gateway, он в основном отображает JAR и создает прокси классов в Caché для доступа к классам Java в JAR.

У класса в Java есть параметр типа FileInputStream, мой вопрос, как я должен отправить этот параметр Caché proxie? Какой тип данных в Caché представляет FileInputStream в Java?

С Уважением,

Лукас Боинг Скардуелли

1 ответ

Решение

Когда вы создаете прокси для этой Java, также должен быть создан кеш-класс для FileInputStream.

простой класс Java, с FileInputStream в качестве типа для аргумента в функции

package org.daimor;

import java.io.FileInputStream;
import java.io.IOException;

public class test {

    public long sizeStream(FileInputStream stream)
    {
        try {
            return stream.getChannel().size();
        } catch (IOException ex)
        {
            return -1;
        }
    }
}

затем я создал проекцию для этого jar-файла в Caché Studio. И написал код

Set gateway = ##class(%Net.Remote.Gateway).%New()
Do gateway.%Connect("127.0.0.1", 55555)

Set file = ##class(java.io.FileInputStream).%New(gateway, "c:\test.txt")
Set javaObj=##class(org.daimor.test).%New(gateway)
Set size=javaObj.sizeStream(file)

Итак, это работает хорошо.

Другие вопросы по тегам