now = new java.util.Calender()I was getting ready to start pulling out hair when I saw the light: 'Calendar'.
And I've also gotten other error messages that turned out to be caused by spelling. Just wanted to share that :)
now = new java.util.Calender()I was getting ready to start pulling out hair when I saw the light: 'Calendar'.
10:03:21,410 ERROR - [UpdateDomino] CTGDIS810E handleException - cannot handle exception , updateStep one is to find the topmost (first) stackdump, and then trace it to the top two or three lines:
java.lang.Exception: CTGDKC002E Failed to execute the command. NotesException occurred: Invalid object type for method argument
at com.ibm.di.connector.dominoUsers.DominoUsersConnector.executeCommand(DominoUsersConnector.java:647)
at com.ibm.di.connector.dominoUsers.DominoUsersConnector.putEntry(DominoUsersConnector.java:732)
at com.ibm.di.server.AssemblyLineComponent.executeOperation(AssemblyLineComponent.java:3139)
at com.ibm.di.server.AssemblyLineComponent.add1(AssemblyLineComponent.java:1930)
at com.ibm.di.server.AssemblyLineComponent.update(AssemblyLineComponent.java:1681)
at com.ibm.di.server.AssemblyLine.msExecuteNextConnector(AssemblyLine.java:3669)
at com.ibm.di.server.AssemblyLine.executeMainStep(AssemblyLine.java:3294)
at com.ibm.di.server.AssemblyLine.executeMainLoop(AssemblyLine.java:2930)
at com.ibm.di.server.AssemblyLine.executeMainLoop(AssemblyLine.java:2913)
at com.ibm.di.server.AssemblyLine.executeAL(AssemblyLine.java:2882)
at com.ibm.di.server.AssemblyLine.run(AssemblyLine.java:1296)
10:03:21,410 ERROR - CTGDIS266E Error in NextConnectorOperation. Exception occurred: java.lang.Exception: CTGDKC002E Failed to execute the command. NotesException occurred: Invalid object type for method argument
java.lang.Exception: CTGDKC002E Failed to execute the command. NotesException occurred: Invalid object type for method argument
at com.ibm.di.connector.dominoUsers.DominoUsersConnector.executeCommand(DominoUsersConnector.java:647)
at com.ibm.di.connector.dominoUsers.DominoUsersConnector.putEntry(DominoUsersConnector.java:732)
at com.ibm.di.server.AssemblyLineComponent.executeOperation(AssemblyLineComponent.java:3139)
at com.ibm.di.server.AssemblyLineComponent.add1(AssemblyLineComponent.java:1930)
at com.ibm.di.server.AssemblyLineComponent.update(AssemblyLineComponent.java:1681)
at com.ibm.di.server.AssemblyLine.msExecuteNextConnector(AssemblyLine.java:3669)
at com.ibm.di.server.AssemblyLine.executeMainStep(AssemblyLine.java:3294)
at com.ibm.di.server.AssemblyLine.executeMainLoop(AssemblyLine.java:2930)
at com.ibm.di.server.AssemblyLine.executeMainLoop(AssemblyLine.java:2913)
at com.ibm.di.server.AssemblyLine.executeAL(AssemblyLine.java:2882)
at com.ibm.di.server.AssemblyLine.run(AssemblyLine.java:1296)
10:03:21,410 ERROR - [UpdateDomino] CTGDIS810E handleException - cannot handle exception , updateThe first line is timestamped and filled with info coming from the AssemblyLine itself. In the above snippet there is the component name in brackets, UpdateDomino, followed by a codified error message - in this case, a very general one that tells us that the AL was unprepared to handle an exception thrown by one of its components. At the very end of the first line is the operation which failed: update. Although this information gives us context, it brings us no closer to solving the problem.
java.lang.Exception: CTGDKC002E Failed to execute the command. NotesException occurred: Invalid object type for method argument
at com.ibm.di.connector.dominoUsers.DominoUsersConnector.executeCommand(DominoUsersConnector.java:647)
at ...
lineRead = thisConnector.getParser().getCurrentLine()Instead, with the help of Jens Thomassen, TDI surgeon, and the indispensible AL Debugger, I created this example TDI 7.1 AL to do just that. You can download the linked Example AssemblyLine and just drop the file onto a TDI Project. It's self-contained thanks to the ever-handy Form Entry Connector.
outStream = new java.io.PipedOutputStream() inpStream = new java.io.PipedInputStream(outStream) newline = new java.lang.String("\n\r") formEntry = thisConnector.getConnector() formEntry.initParser(inpStream, null) csvColumns = formEntry.getParser().getParam("csvColumns") firstRow = true
outStream.write(work.getString("line").getBytes()) outStream.write(newline.getBytes()) if (firstRow && (csvColumns == "")) { outStream.write(work.getString("line").getBytes()) outStream.write(newline.getBytes()) firstRow = false; }
outStream = new java.io.PipedOutputStream() inpStream = new java.io.PipedInputStream(outStream) newline = new java.lang.String("\n\r") firstRow = true; initParser = true;
if (initParser) { // In this next line you could instead get a pre-configured // Parser from your Project Resource library: // csvParser = system.getParser("Parsers/MyCSV") // // AND to find out what the 'true name' of a Parser is // just add it to a Connector and then use the More... // Select Inheritance button to see the inheritance link // for the Parser (yeah, it's not that elegant ;) // csvParser = system.getParser("ibmdi.CSV") csvParser.setInputStream(inpStream) csvParser.initParser() csvColumns = csvParser.getParam("csvColumns") initParser = false; } if (firstRow && (csvColumns == "")) { outStream.write(conn.getString("line").getBytes()) outStream.write(newline.getBytes()) } outStream.write(conn.getString("line").getBytes()) outStream.write(newline.getBytes()) csvEntry = csvParser.readEntry() if (firstRow && (csvColumns == "")) { firstRow = false system.skipEntry() // skip the column names } if (csvEntry != null) conn.merge(csvEntry)