use of com.manydesigns.portofino.code.CodeBase in project Portofino by ManyDesigns.
the class DispatcherInitializer method createCodeBase.
protected CodeBase createCodeBase() throws IOException {
// TODO auto discovery?
FileObject codeBaseRoot = getCodeBaseRoot();
JavaCodeBase javaCodeBase = new JavaCodeBase(codeBaseRoot, null, getClass().getClassLoader());
CodeBase codeBase = javaCodeBase;
try {
Class<?> gcb = Class.forName("com.manydesigns.portofino.code.GroovyCodeBase");
Constructor<?> gcbConstructor = gcb.getConstructor(FileObject.class, CodeBase.class);
codeBase = (CodeBase) gcbConstructor.newInstance(codeBaseRoot, javaCodeBase);
logger.info("Groovy is available");
} catch (Exception e) {
logger.debug("Groovy not available", e);
}
return codeBase;
}
use of com.manydesigns.portofino.code.CodeBase in project Portofino by ManyDesigns.
the class DispatcherInitializer method initApplicationRoot.
protected CodeBase initApplicationRoot(String actionsDirectoryName) {
try {
FileObject actionsDirectory = applicationRoot.getChild(actionsDirectoryName);
if (actionsDirectory == null || actionsDirectory.getType() != FileType.FOLDER) {
initializationFailed(new Exception("Not a directory: " + actionsDirectoryName));
}
CodeBase codeBase = createCodeBase();
ResourceResolvers resourceResolver = new ResourceResolvers();
configureResourceResolvers(resourceResolver, codeBase);
DocumentedApiRoot.setRootFactory(() -> getRoot(actionsDirectory, resourceResolver));
return codeBase;
} catch (Exception e) {
initializationFailed(e);
return null;
}
}
use of com.manydesigns.portofino.code.CodeBase in project Portofino by ManyDesigns.
the class GrizzlyMain method main.
public static void main(String[] args) throws Exception {
File currentDirectory = new File("");
FileSystemManager manager = VFS.getManager();
if (manager instanceof DefaultFileSystemManager) {
((DefaultFileSystemManager) manager).setBaseFile(currentDirectory);
}
String rootPath = currentDirectory.getAbsolutePath();
if (args.length > 0) {
rootPath = args[0];
}
FileObject codeBaseRoot;
try {
codeBaseRoot = VFS.getManager().resolveFile("res:");
} catch (Exception e) {
codeBaseRoot = VFS.getManager().resolveFile("res:com/manydesigns/portofino/dispatcher/main/GrizzlyMain.class").getParent().getParent().getParent().getParent().getParent().getParent();
}
CodeBase codeBase = new JavaCodeBase(codeBaseRoot);
codeBase = new GroovyCodeBase(codeBaseRoot, codeBase);
ResourceResolvers resourceResolver = new ResourceResolvers();
resourceResolver.resourceResolvers.add(new JavaResourceResolver(codeBase));
resourceResolver.resourceResolvers.add(new GroovyResourceResolver(codeBase));
FileObject root = manager.resolveFile(rootPath);
logger.info("Codebase rootFactory: " + codeBaseRoot.getURL());
logger.info("Root path: " + root.getURL());
DocumentedApiRoot.setRootFactory(() -> Root.get(root, resourceResolver));
String host = System.getProperty("portofino.web.host", "0.0.0.0");
String port = System.getProperty("portofino.web.port", "8090");
ResourceConfig config = new ResourceConfig(ApplicationRoot.class, OpenApiResource.class);
config.property(ServletProperties.FILTER_FORWARD_ON_404, true);
try {
config.register(Class.forName("org.glassfish.jersey.jackson.JacksonFeature"));
ResourceResolver jacksonRR = (ResourceResolver) Class.forName("com.manydesigns.portofino.dispatcher.resolvers.JacksonResourceResolver").newInstance();
resourceResolver.resourceResolvers.add(new CachingResourceResolver(jacksonRR));
} catch (ClassNotFoundException e) {
// Jackson not available
}
try {
config.register(Class.forName("com.manydesigns.portofino.dispatcher.security.ShiroResourceFilter"));
} catch (ClassNotFoundException e) {
// Shiro not available
}
/* TODO
BeanConfig beanConfig = new BeanConfig();
beanConfig.setSchemes(new String[]{"http"});
beanConfig.setHost(host + ":" + port);
beanConfig.setBasePath("/");
beanConfig.setResourcePackage(ApplicationRoot.class.getPackage().getName());
beanConfig.setScan(true);*/
URI uri = URI.create("http://" + host + ":" + port + "/");
HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(uri, config);
// https://scalajamsession.wordpress.com/2015/06/27/how-to-serve-static-files-with-jerseygrizzly-setup-and-control-access-to-static-content/
ClassLoader loader = GrizzlyMain.class.getClassLoader();
CLStaticHttpHandler webjarsHandler = new CLStaticHttpHandler(loader, "META-INF/resources/webjars/");
httpServer.getServerConfiguration().addHttpHandler(webjarsHandler, "/webjars/");
httpServer.start();
}
Aggregations