私のプラグインでは、前のステップから MetaData 情報を取得しようとしています。これにより、MetaData 情報 (列名) に基づいて行データに対して何らかの作業を行うことができます。
r = getRow() でデータを取得できるため、データに従って正常に動作します。ただし、前のステップの行メタを取得するために getInputRowMeta() を呼び出すと、非ポインター例外がスローされます。
以下にコード例を示します (主に processRow() 関数)。
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
meta = (NAAClientStepMeta) smi;
data = (NAAClientStepData) sdi;
option = meta.getOption();
message = option;
if (first) {
first = false;
if(option.equals("Publisher AccountIDs")){
getInputRowMeta().size(); // don't work here, throw exception.
RowMetaInterface rm = (RowMetaInterface) getInputRowMeta().clone();
data.outputRowMeta = rm;
meta.getFields(rm, getStepname(), null, null, this);
//String previousSteps[] = transMeta.getPrevStepNames("New Acquisio API Client");
//RowSet rowSet = this.findOutputRowSet(transMe);
//RowMetaInterface rowMeta = rowSet.getRowMeta();
r = getRow();
getInputRowMeta() を呼び出すと、次のように Exception がスローされます。
2015/08/05 14:11:00 - New Acquisio API Client 2.0 - ERROR (version 4.4.0 stable, build 17588 from 2012-11-21 16.02.21 by buildguy) : Unexpected error
2015/08/05 14:11:00 - New Acquisio API Client 2.0 - ERROR (version 4.4.0-stable, build 17588 from 2012-11-21 16.02.21 by buildguy) : java.lang.NullPointerException
2015/08/05 14:11:00 - New Acquisio API Client 2.0 - ERROR (version 4.4.0-stable, build 17588 from 2012-11-21 16.02.21 by buildguy) : at com.acquisio.kettle.plugins.NAAClientStep.processRow(NAAClientStep.java:183)
2015/08/05 14:11:00 - New Acquisio API Client 2.0 - ERROR (version 4.4.0-stable, build 17588 from 2012-11-21 16.02.21 by buildguy) : at org.pentaho.di.trans.step.RunThread.run(RunThread.java:50)
2015/08/05 14:11:00 - New Acquisio API Client 2.0 - ERROR (version 4.4.0-stable, build 17588 from 2012-11-21 16.02.21 by buildguy) : at java.lang.Thread.run(Thread.java:745)
StepMeta クラス、StepData クラスを設定する場所はありますか?