📄 archiveparser.java
字号:
package org.jbpm.par;
import java.io.*;
import java.util.*;
import java.util.jar.*;
import org.apache.commons.logging.*;
import org.jbpm.*;
import org.jbpm.util.io.*;
import org.jbpm.model.definition.impl.*;
import org.jbpm.persistence.*;
public class ArchiveParser {
private static Log log = LogFactory.getLog(ArchiveParser.class);
private Collection files = new ArrayList();
private DefinitionImpl definition = null;
public ArchiveParser(JarInputStream processArchiveStream) throws IOException, JpdlException {
JarEntry entry = processArchiveStream.getNextJarEntry();
while ( entry != null ) {
if ( "processdefinition.xml".equals( entry.getName() ) ) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
IoUtil.transfer( processArchiveStream, baos );
definition = DefinitionParser.parse( new ByteArrayInputStream( baos.toByteArray() ) );
} else {
if ( ! entry.isDirectory() ) {
FileImpl file = new FileImpl();
file.setName( entry.getName() );
file.setBytes( IoUtil.readStream( processArchiveStream ) );
files.add( file );
}
}
entry = processArchiveStream.getNextJarEntry();
}
if ( definition == null ) {
throw new JpdlException( "no processdefinition.xml in process archive" );
}
}
public DefinitionImpl getDefinition() {
return definition;
}
public Collection getFiles() {
return files;
}
public void storeFiles( Long definitionId, FileMgr fileMgr ) {
Iterator iter = files.iterator();
while (iter.hasNext()) {
FileImpl file = (FileImpl) iter.next();
file.setDefinitionId( definitionId );
fileMgr.storeBytes( definitionId, file.getName(), file.getBytes() );
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -