Skip to content

Commit

Permalink
Merge pull request #23 from Nosto/improvement/controller-enhance
Browse files Browse the repository at this point in the history
Enhance only controller code
  • Loading branch information
timowestnosto committed Nov 15, 2016
2 parents 8b44d20 + 83dd40d commit 6ce65d3
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 45 deletions.
47 changes: 21 additions & 26 deletions framework/src/play/CorePlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,21 @@
import com.jamonapi.Monitor;
import com.jamonapi.MonitorFactory;
import com.jamonapi.utils.Misc;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.*;

import org.apache.commons.lang.StringUtils;
import play.Play.Mode;
import play.classloading.ApplicationClasses.ApplicationClass;
import play.classloading.enhancers.ContinuationEnhancer;
import play.classloading.enhancers.ControllersEnhancer;
import play.classloading.enhancers.Enhancer;
import play.classloading.enhancers.LocalvariablesNamesEnhancer;
import play.classloading.enhancers.MailerEnhancer;
import play.classloading.enhancers.PropertiesEnhancer;
import play.classloading.enhancers.SigEnhancer;
import play.classloading.enhancers.*;
import play.exceptions.UnexpectedException;
import play.libs.Crypto;
import play.mvc.Http.Header;
import play.mvc.Http.Request;
import play.mvc.Http.Response;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.*;

import static java.util.Arrays.asList;

/**
Expand Down Expand Up @@ -292,21 +286,22 @@ static ThreadGroup getRootThread() {

@Override
public void enhance(ApplicationClass applicationClass) throws Exception {
Class<?>[] enhancers = new Class[]{
PropertiesEnhancer.class,
ContinuationEnhancer.class,
SigEnhancer.class,
ControllersEnhancer.class,
MailerEnhancer.class,
LocalvariablesNamesEnhancer.class
};
for (Class<?> enhancer : enhancers) {
List<Enhancer> enhancers = new ArrayList<Enhancer>(4);
if (applicationClass.name.startsWith("controllers.")) {
enhancers.add(new SigEnhancer());
enhancers.add(new ContinuationEnhancer());
enhancers.add(new ControllersEnhancer());
if (applicationClass.name.endsWith("Mailer")) {
enhancers.add(new MailerEnhancer());
}
enhancers.add(new LocalvariablesNamesEnhancer());
} else if (applicationClass.name.endsWith("Mailer")) {
enhancers.add(new MailerEnhancer());
enhancers.add(new LocalvariablesNamesEnhancer());
}
for (Enhancer enhancer : enhancers) {
try {
long start = System.currentTimeMillis();
((Enhancer) enhancer.newInstance()).enhanceThisClass(applicationClass);
if (Logger.isTraceEnabled()) {
Logger.trace("%sms to apply %s to %s", System.currentTimeMillis() - start, enhancer.getSimpleName(), applicationClass.name);
}
enhancer.enhanceThisClass(applicationClass);
} catch (Exception e) {
throw new UnexpectedException("While applying " + enhancer + " on " + applicationClass.name, e);
}
Expand Down
37 changes: 24 additions & 13 deletions framework/src/play/Play.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,5 @@
package play;

import java.io.File;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.LineNumberReader;
import java.io.IOException;
import java.net.URI;
import java.net.URL;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import play.cache.Cache;
import play.classloading.ApplicationClasses;
import play.classloading.ApplicationClassloader;
Expand All @@ -26,6 +14,14 @@
import play.utils.OrderSafeProperties;
import play.vfs.VirtualFile;

import java.io.*;
import java.net.URI;
import java.net.URL;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* Main framework class
*/
Expand Down Expand Up @@ -188,6 +184,9 @@ public boolean isProd() {
* @param id The framework id to use
*/
public static void init(File root, String id) {
long start = System.currentTimeMillis();
Logger.info("Play initializing");

// Simple things
Play.id = id;
Play.started = false;
Expand Down Expand Up @@ -318,6 +317,12 @@ public static void init(File root, String id) {
pluginCollection.onApplicationReady();

Play.initialized = true;
long duration = (System.currentTimeMillis() - start) / 1000;
Logger.info("Play initialized (%s s)", duration);

if (mode != Mode.PROD) {
start();
}
}

public static void guessFrameworkPath() {
Expand Down Expand Up @@ -453,8 +458,9 @@ private static Properties readOneConfigurationFile(String filename) {
* Recall to restart !
*/
public static synchronized void start() {
long start = System.currentTimeMillis();
try {

Logger.info(started ? "Play restarting" : "Play starting");
if (started) {
stop();
}
Expand Down Expand Up @@ -567,18 +573,23 @@ public void run() {
try { Cache.stop(); } catch (Exception ignored) {}
throw new UnexpectedException(e);
}
long duration = (System.currentTimeMillis() - start) / 1000;
Logger.info("Play started (%s s)", duration);
}

/**
* Stop the application
*/
public static synchronized void stop() {
if (started) {
long start = System.currentTimeMillis();
Logger.trace("Stopping the play application");
pluginCollection.onApplicationStop();
started = false;
Cache.stop();
Router.lastLoading = 0L;
long duration = (System.currentTimeMillis() - start) / 1000;
Logger.info("Play stopped (%s s)", duration);
}
}

Expand Down
13 changes: 7 additions & 6 deletions framework/src/play/classloading/ApplicationClassloader.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;

import play.Logger;
import play.Play;
import play.cache.Cache;
Expand All @@ -12,7 +11,6 @@
import play.libs.IO;
import play.vfs.VirtualFile;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
Expand All @@ -26,7 +24,6 @@
import java.security.ProtectionDomain;
import java.security.cert.Certificate;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

import static org.apache.commons.io.IOUtils.closeQuietly;

Expand Down Expand Up @@ -329,9 +326,13 @@ public void detectChanges() {
Play.classes.classes.remove(applicationClass.name);
currentState = new ApplicationClassloaderState();//show others that we have changed..
} else {
int sigChecksum = applicationClass.sigChecksum;
applicationClass.enhance();
if (sigChecksum != applicationClass.sigChecksum) {
if (applicationClass.name.startsWith("controllers.")) {
int sigChecksum = applicationClass.sigChecksum;
applicationClass.enhance();
if (sigChecksum != applicationClass.sigChecksum) {
dirtySig = true;
}
} else {
dirtySig = true;
}
BytecodeCache.cacheBytecode(applicationClass.enhancedByteCode, applicationClass.name, applicationClass.javaSource);
Expand Down

0 comments on commit 6ce65d3

Please sign in to comment.