@Named("treeLazyLoadingView")
@ViewScoped
public class LazyLoadingView implements Serializable {
private TreeNode<FileInfo> root;
@PostConstruct
public void init() {
FacesContext context = FacesContext.getCurrentInstance();
root = new LazyDefaultTreeNode<>(new FileInfo(context.getExternalContext().getRealPath("/"), true),
(fileInfo) -> listFiles(fileInfo),
(fileInfo) -> !fileInfo.isDirectory());
}
public static List<FileInfo> listFiles(FileInfo parentFolder) {
List<FileInfo> result = new ArrayList<>();
File[] files = new File(parentFolder.getPath()).listFiles();
if (files != null) {
for (File file : files) {
result.add(new FileInfo(file.getAbsolutePath(), file.isDirectory()));
}
}
return result;
}
public TreeNode getRoot() {
return root;
}
}
public class FileInfo implements Serializable {
private String path;
private String name;
private boolean directory;
public FileInfo(String path, boolean directory) {
this.path = path;
if (this.path.equals(File.separator)) {
this.name = this.path;
}
else {
String[] parts = path.split(File.separator.equals("\\") ? "\\\\" : File.separator);
this.name = parts[parts.length - 1];
}
this.directory = directory;
}
public String getPath() {
return path;
}
public String getName() {
return name;
}
public boolean isDirectory() {
return directory;
}
@Override
public String toString() {
return path + " / " + name;
}
}
Session expired
Reloading page
Message:
StackTrace: java.util.ConcurrentModificationException at java.base/java.util.HashMap.computeIfAbsent(Unknown Source) at org.primefaces.component.lifecycle.LifecyclePhaseListener.getPhaseInfo(LifecyclePhaseListener.java:45) at org.primefaces.component.lifecycle.LifecyclePhaseListener.beforePhase(LifecyclePhaseListener.java:63) at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersBefore(PhaseListenerManager.java:77) at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:183) at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:142) at javax.faces.lifecycle.LifecycleWrapper.execute(LifecycleWrapper.java:57) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:204) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.primefaces.webapp.filter.NoCacheFilter.doFilter(NoCacheFilter.java:39) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.primefaces.webapp.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.openejb.server.httpd.EEFilter.doFilter(EEFilter.java:67) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.invoke(OpenEJBSecurityListener.java:97) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Unknown Source)