// Path: server/src/main/java/javarestart/dto/AppDescriptorDto.java
// public class AppDescriptorDto implements Serializable {
// 
//     private static final long serialVersionUID = 6961550511933662410L;
// 
//     private String root;
//     private String main;
//     private String splash;
//     private String splashCloseOn;
//     private String fxml;
//     private String includePackages;
// 
//     public String getRoot() {
//         return root;
//     }
// 
//     public void setRoot(String root) {
//         this.root = root;
//     }
// 
//     public String getMain() {
//         return main;
//     }
// 
//     public void setMain(String main) {
//         this.main = main;
//     }
// 
//     public String getSplash() {
//         return splash;
//     }
// 
//     public void setSplash(String splash) {
//         this.splash = splash;
//     }
// 
//     public String getFxml() {
//         return fxml;
//     }
// 
//     public void setFxml(String fxml) {
//         this.fxml = fxml;
//     }
// 
//     public String getSplashCloseOn() {
//         return splashCloseOn;
//     }
// 
//     public void setSplashCloseOn(String splashCloseOn) {
//         this.splashCloseOn = splashCloseOn;
//     }
// 
//     public String getIncludePackages() {
//         return includePackages;
//     }
// 
//     public void setIncludePackages(String includePackages) {
//         this.includePackages = includePackages;
//     }
// }


import javarestart.dto.AppDescriptorDto;
import java.io.*;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLConnection;
import java.util.*;
import java.util.regex.Pattern;
            final String classPathElement = path.trim();
            if (!classPathElement.isEmpty()) {
                urls.add(new File(baseDir, classPathElement).toURI().toURL());
            }
        }
        loader = new URLClassLoader(urls.toArray(new URL[urls.size()]));
    }

    public URLConnection load(final String resourceName) throws ResourceNotFoundException {
        URL result = null;
        try {
            result = loader.findResource(resourceName);
            if (result == null) {
                throw new ResourceNotFoundException("Requested resource not found: " + resourceName);
            }
            return result.openConnection();
        } catch (final IOException e) {
            result = null;
            throw new ResourceNotFoundException("Requested resource not found: " + resourceName, e);
        } finally {
            if (!loaded.containsKey(resourceName)) {
                loaded.put(resourceName, result);
            }
        }
    }

    public Map<String, URL> getInitialBundle() {
        return loaded;
    }

// Path: server/src/main/java/javarestart/dto/AppDescriptorDto.java
// public class AppDescriptorDto implements Serializable {
// 
//     private static final long serialVersionUID = 6961550511933662410L;
// 
//     private String root;
//     private String main;
//     private String splash;
//     private String splashCloseOn;
//     private String fxml;
//     private String includePackages;
// 
//     public String getRoot() {
//         return root;
//     }
// 
//     public void setRoot(String root) {
//         this.root = root;
//     }
// 
//     public String getMain() {
//         return main;
//     }
// 
//     public void setMain(String main) {
//         this.main = main;
//     }
// 
//     public String getSplash() {
//         return splash;
//     }
// 
//     public void setSplash(String splash) {
//         this.splash = splash;
//     }
// 
//     public String getFxml() {
//         return fxml;
//     }
// 
//     public void setFxml(String fxml) {
//         this.fxml = fxml;
//     }
// 
//     public String getSplashCloseOn() {
//         return splashCloseOn;
//     }
// 
//     public void setSplashCloseOn(String splashCloseOn) {
//         this.splashCloseOn = splashCloseOn;
//     }
// 
//     public String getIncludePackages() {
//         return includePackages;
//     }
// 
//     public void setIncludePackages(String includePackages) {
//         this.includePackages = includePackages;
//     }
// }


// Path: server/src/main/java/javarestart/appresourceprovider/AppResourceProvider.java
import javarestart.dto.AppDescriptorDto;
import java.io.*;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLConnection;
import java.util.*;
import java.util.regex.Pattern;

            final String classPathElement = path.trim();
            if (!classPathElement.isEmpty()) {
                urls.add(new File(baseDir, classPathElement).toURI().toURL());
            }
        }
        loader = new URLClassLoader(urls.toArray(new URL[urls.size()]));
    }

    public URLConnection load(final String resourceName) throws ResourceNotFoundException {
        URL result = null;
        try {
            result = loader.findResource(resourceName);
            if (result == null) {
                throw new ResourceNotFoundException("Requested resource not found: " + resourceName);
            }
            return result.openConnection();
        } catch (final IOException e) {
            result = null;
            throw new ResourceNotFoundException("Requested resource not found: " + resourceName, e);
        } finally {
            if (!loaded.containsKey(resourceName)) {
                loaded.put(resourceName, result);
            }
        }
    }

    public Map<String, URL> getInitialBundle() {
        return loaded;
    }

    public AppDescriptorDto getAppDescriptor() {