use of com.disney.groovity.servlet.container.GroovityServletContainer in project groovity by disney.
the class GroovityJarRunner method main.
public static void main(String[] args) {
try {
int port = -1;
if (args.length > 0) {
port = Integer.parseInt(args[0]);
}
GroovityServletContainerBuilder groovityServletContainerBuilder = new GroovityServletContainerBuilder().setPort(port);
GroovityServletContainer container = groovityServletContainerBuilder.build();
container.start();
try {
container.enterConsole();
} finally {
container.stop();
}
} catch (Exception e) {
e.printStackTrace();
}
}
use of com.disney.groovity.servlet.container.GroovityServletContainer in project groovity by disney.
the class GroovityRunMojo method execute.
public void execute() throws MojoExecutionException, MojoFailureException {
try {
getLog().info("STARTING Groovity run ");
populateSystemProperties();
ClassLoader testLoader = createClassLoader(ClassLoaderScope.TEST);
GroovityServletContainerBuilder builder = new GroovityServletContainerBuilder().setPort(Integer.valueOf(port)).setWebappDirectory(new File(project.getBasedir(), "src/main/webapp")).setClassLoader(testLoader);
if (groovitySourceDirectory != null && groovitySourceDirectory.exists()) {
builder.addSourceLocation(groovitySourceDirectory.toURI(), true);
}
if (groovityTestDirectory != null && groovityTestDirectory.exists()) {
builder.addSourceLocation(groovityTestDirectory.toURI(), true);
}
if (sources != null) {
for (File source : sources) {
builder.addSourceLocation(source.toURI(), true);
}
}
GroovityServletContainer container = builder.build();
container.start();
try {
GroovityStatistics.reset();
Groovity groovity = container.getGroovity();
if (path != null) {
groovity.getArgsLookup().chainLast(new ArgsLookup.ConsoleArgsLookup());
String[] pathParts = path.split("\\s*,\\s*");
for (String pathPart : pathParts) {
container.run(pathPart);
}
} else {
container.enterConsole();
}
} finally {
container.stop();
}
getLog().info("DONE with Groovity run ");
} catch (Throwable e) {
getLog().error("ERROR in Groovity run ", e);
throw new MojoFailureException(e.getMessage());
}
}
use of com.disney.groovity.servlet.container.GroovityServletContainer in project groovity by disney.
the class GroovityTestMojo method execute.
public void execute() throws MojoExecutionException, MojoFailureException {
try {
if (skip) {
return;
}
getLog().info("STARTING Groovity test");
populateSystemProperties();
ClassLoader testLoader = createClassLoader(ClassLoaderScope.TEST);
GroovityServletContainerBuilder builder = new GroovityServletContainerBuilder().setPort(Integer.valueOf(port)).setWebappDirectory(new File(project.getBasedir(), "src/main/webapp")).setClassLoader(testLoader);
if (groovitySourceDirectory != null && groovitySourceDirectory.exists()) {
builder.addSourceLocation(groovitySourceDirectory.toURI(), true);
}
if (groovityTestDirectory != null && groovityTestDirectory.exists()) {
builder.addSourceLocation(groovityTestDirectory.toURI(), true);
}
if (sources != null) {
for (File source : sources) {
builder.addSourceLocation(source.toURI(), true);
}
}
GroovityStatistics.reset();
GroovityServletContainer container = builder.build();
container.start();
Groovity groovity = container.getGroovity();
ArrayList<String> appSources = new ArrayList<String>();
try {
if (failOnError) {
validateFactory(groovity);
}
if (skipTests) {
return;
}
GroovitySourceLocator[] sourceLocators = groovity.getSourceLocators();
for (GroovitySourceLocator locator : sourceLocators) {
if (!interactive && ((FileGroovitySourceLocator) locator).getDirectory().equals(groovityTestDirectory)) {
if (path != null) {
String[] pathParts = path.split("\\s*,\\s*");
for (String pathPart : pathParts) {
container.run(pathPart);
}
} else {
for (GroovitySource source : locator) {
String scriptPath = source.getPath();
scriptPath = scriptPath.substring(0, scriptPath.lastIndexOf("."));
String scriptName = scriptPath.substring(scriptPath.lastIndexOf('/') + 1);
if (scriptName.startsWith("test")) {
container.run(scriptPath);
}
}
}
}
if (((FileGroovitySourceLocator) locator).getDirectory().equals(groovitySourceDirectory)) {
for (GroovitySource source : locator) {
appSources.add(source.getPath());
}
}
}
if (interactive) {
// in interactive mode we wait for instructions and compile each time to allow
// real-time development
container.enterConsole();
}
} finally {
container.stop();
}
Map<String, CodeCoverage> coverageMap = new TreeMap<String, GroovityTestMojo.CodeCoverage>();
Collection<Class<Script>> scriptClasses = groovity.getGroovityScriptClasses();
for (Class<Script> sc : scriptClasses) {
String sourcePath = groovity.getSourcePath(sc);
if (appSources.contains(sourcePath)) {
String scriptLabel = sourcePath.substring(0, sourcePath.length() - 5);
CodeCoverage cc = new CodeCoverage(sc, scriptLabel);
if (cc.isCoverable()) {
coverageMap.put(scriptLabel, cc);
}
for (Class<?> c : ((GroovityClassLoader) sc.getClassLoader()).getLoadedClasses()) {
if (!c.equals(sc) && !(Closure.class.isAssignableFrom(c)) && !c.isInterface()) {
String cname = getClassLabel(c);
int p = 0;
if ((p = cname.indexOf("$Trait")) > 0) {
cname = cname.substring(0, p);
}
String classLabel = scriptLabel + "->" + cname;
CodeCoverage icc = new CodeCoverage(c, classLabel);
if (icc.isCoverable()) {
coverageMap.put(classLabel, icc);
}
}
}
}
}
List<Statistics> stats = GroovityStatistics.getStatistics();
for (Statistics stat : stats) {
String sks = stat.key.toString();
int dot = sks.indexOf(".");
if (dot > 0) {
String className = sks.substring(0, dot);
String method = sks.substring(dot + 1);
CodeCoverage cc = coverageMap.get(className);
if (cc != null) {
if (method.equals("run()") && cc.runnable) {
cc.ran = true;
} else {
if (cc.methods.containsKey(method)) {
cc.methods.put(method, true);
}
}
}
}
}
Collection<CodeCoverage> ccs = coverageMap.values();
double total = 0;
for (CodeCoverage cc : ccs) {
total += cc.getCoverage();
}
total /= ccs.size();
getLog().info("TEST COVERAGE " + ((int) (100 * total)) + "% TOTAL");
for (Entry<String, CodeCoverage> entry : coverageMap.entrySet()) {
CodeCoverage cc = entry.getValue();
double covered = cc.getCoverage();
getLog().info(" " + ((int) (100 * covered)) + "% coverage for " + cc.label);
if (covered < 1.0) {
if (cc.runnable && !cc.ran) {
getLog().warn(" Script body did not run during tests");
}
List<String> uncovered = cc.getUncoveredMethods();
if (!uncovered.isEmpty()) {
for (String m : cc.getUncoveredMethods()) {
getLog().warn(" " + m + " did not execute during tests");
}
}
}
/*
for(String m: cc.getCoveredMethods()) {
getLog().info(" " + m + " executed during tests");
}
*/
}
} catch (MojoFailureException e) {
throw e;
} catch (Throwable e) {
getLog().error("ERROR in Groovity test", e);
throw new MojoFailureException(e.getMessage());
}
}
use of com.disney.groovity.servlet.container.GroovityServletContainer in project groovity by disney.
the class GroovityStandalone method main.
public static void main(String[] args) {
try {
int port = -1;
if (args.length > 0) {
port = Integer.parseInt(args[0]);
}
File workingDirectory = new File("").getAbsoluteFile();
File groovityDirectory = new File(workingDirectory, "groovity");
if (!groovityDirectory.exists() || !groovityDirectory.isDirectory()) {
throw new FileNotFoundException("No directory found at " + groovityDirectory.getAbsolutePath());
}
List<URL> projectClasspathList = new ArrayList<URL>();
File libDirectory = new File(workingDirectory, "lib");
if (libDirectory.exists() && libDirectory.isDirectory()) {
File[] jars = libDirectory.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".jar");
}
});
if (jars != null && jars.length > 0) {
for (int i = 0; i < jars.length; i++) {
projectClasspathList.add(jars[i].toURI().toURL());
}
}
}
File resourceDirectory = new File(workingDirectory, "static");
if (!resourceDirectory.exists() || !resourceDirectory.isDirectory()) {
resourceDirectory = null;
}
File jarDirectory = new File(workingDirectory, "target");
if (!jarDirectory.exists() || !jarDirectory.isDirectory()) {
jarDirectory = null;
}
File confDirectory = new File(workingDirectory, "conf");
if (!confDirectory.exists() || !confDirectory.isDirectory()) {
confDirectory = null;
}
URLClassLoader loader = new URLClassLoader(projectClasspathList.toArray(new URL[0]), Thread.currentThread().getContextClassLoader());
GroovityServletContainerBuilder groovityServletContainerBuilder = new GroovityServletContainerBuilder().addSourceLocation(groovityDirectory.toURI(), true).setPort(port).setWebappDirectory(workingDirectory).setClassLoader(loader);
if (jarDirectory != null) {
groovityServletContainerBuilder.setJarDirectory(jarDirectory);
}
if (confDirectory != null) {
groovityServletContainerBuilder.setPropsFile(confDirectory.getAbsolutePath());
}
DefaultServlet resourceServlet = new DefaultServlet();
ServletHolder resourceServletHolder = new ServletHolder(resourceServlet);
GroovityServletContainer container = groovityServletContainerBuilder.build();
WebAppContext context = container.getContext();
context.addServlet(resourceServletHolder, "/static/*");
container.start();
try {
container.enterConsole();
} finally {
container.stop();
}
} catch (Throwable e) {
logger.log(Level.SEVERE, "Error in groovity standalone", e);
}
System.exit(0);
}
Aggregations