[jboss-user] [JBoss Seam] - Re: IllegalArgumentException: Stack must not be null
gaboo
do-not-reply at jboss.com
Wed Oct 24 18:31:42 EDT 2007
well, indeed.Here is the complete asynchronous method :
@Stateless
| 36 @Name("importRunAction")
| 37 public class ImportRunAction implements ImportRunActionInterface {
| 38
| 39 @In
| 40 EntityManager entityManager;
| 41
| 42 public ImportRunAction() {
| 43 }
| 44
| 45 @Override
| 46 public void run(Import importRule, User user) {
| 47
| 48 int bookCount = 0;
| 49 boolean success = true;
| 50 File passthroughData = null;
| 51 Datasource datasource = importRule.getDataSource();
| 52
| 53 List<Object> passthroughMetaData = null;
| 54 List<MicroStepAction> microActions = new ArrayList<MicroStepAction>();
| 55
| 56 Collection<DataType> previousDataType;
| 57 previousDataType = new ArrayList<DataType>();
| 58 previousDataType.add(DataType.NONE);
| 59
| 60 Event importRunEvent = Tools.getNewEvent();
| 61 importRunEvent.setUser(user);
| 62 importRunEvent.setIsParent(true);
| 63 importRunEvent.setObjectType(IMPORT);
| 64 importRunEvent.setName(datasource.getName());
| 65
| 66 importRule.setStartDate(new Date(System.currentTimeMillis()));
| 67
| 68 /*
| 69 * Asynchronous and ongoing task progress reporting
| 70 */
| 71 AsynchronousImportController aip = (AsynchronousImportController) Component
| 72 .getInstance("asynchronousImportController");
| 73 Progress progress = aip.getProgress(importRule);
| 74
| 75 try {
| 76 for (MicroStep m : importRule.getMicroSteps()) {
| 77 if (!m.isEnabled()) {
| 78 continue;
| 79 }
| 80 if (!m.acceptInputDatas(previousDataType)) {
| 81 FacesMessages.instance().addFromResourceBundle(
| 82 "lrb.error.import.incorrectPreviousData");
| 83 aip.remove(importRule);
| 84 throw new Exception(
| 85 m.getName()
| 86 + " "
| 87 + Tools
| 88 .getTranslation("lrb.error.import.incorrectPreviousData"));
| 89 }
| 90 MicroStepAction msa = (MicroStepAction) Class.forName(
| 91 "com.lrb.dataImport.microStepActions."
| 92 + m.getClass().getSimpleName() + "Action")
| 93 .newInstance();
| 94 msa.setProgress(progress);
| 95 microActions.add(msa);
| 96 msa.setMicroStep(m);
| 97 msa.setInputData(passthroughData);
| 98 msa.setInputMetaData(passthroughMetaData);
| 99
| 100 /* Add all the parameters */
| 101 msa.addParameter("user", user);
| 102 msa.addParameter("datasource", datasource);
| 103 msa.addParameter("table", importRule.getDataSource()
| 104 .getTableName());
| 105
| 106 /* Actually run the microStepAction */
| 107 success = success && msa.run();
| 108
| 109 msa.getEvent().setName(
| 110 datasource.getName() + ":" + msa.getEvent().getName());
| 111 importRunEvent.addChild(msa.getEvent());
| 112
| 113 if (success) {
| 114 passthroughData = msa.getOutputData();
| 115 passthroughMetaData = msa.getOutputMetadata();
| 116 previousDataType = m.getOutputDataType();
| 117
| 118 // extract the number of rows
| 119 Object parameter = msa.getParameter("rowCount");
| 120 if (parameter != null && parameter instanceof Integer) {
| 121 bookCount = (Integer) parameter;
| 122 if (bookCount > 0) {
| 123 datasource.setBookCount(bookCount);
| 124 }
| 125 }
| 126 } else {
| 127 FacesMessages.instance().addFromResourceBundle("lrb.error.import.failed");
| 128 importRunEvent.setMessage("Failure");
| 129 importRunEvent.end();
| 130 entityManager.persist(importRunEvent);
| 131 for (MicroStepAction action : microActions) {
| 132 action.cleanUp();
| 133 }
| 134 aip.remove(importRule);
| 135 throw new Exception(importRunEvent.getMessage());
| 136 }
| 137
| 138 importRunEvent.setMessage("Success");
| 139 importRunEvent.end();
| 140 entityManager.persist(importRunEvent);
| 141 }
| 142
| 143 } catch (Exception e) {
| 144 FacesMessages.instance().add(e.getMessage());
| 145 for (MicroStepAction msa : microActions) {
| 146 msa.cleanUp();
| 147 }
| 148 e.printStackTrace();
| 149 aip.remove(importRule);
| 150 }
| 151
| 152 for (MicroStepAction msa : microActions) {
| 153 msa.cleanUp();
| 154 }
| 155 aip.remove(importRule);
| 156
| 157 datasource.setBookCount(bookCount);
| 158
| 159 // TODO : find a way to make this work
| 160 // entityManager.merge(datasource);
| 161 }
| 162 }
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4098597#4098597
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4098597
More information about the jboss-user
mailing list