Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Support
experimental
option to compile to Scala 2.10
- Loading branch information
1 parent
149241b
commit 4883db2
Showing
100 changed files
with
1,795 additions
and
1,430 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
159 changes: 159 additions & 0 deletions
159
framework/src/play-exceptions/src/main/java/play/api/PlayException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,159 @@ | |||
package play.api; | |||
|
|||
import java.io.*; | |||
import java.util.*; | |||
|
|||
import java.util.concurrent.atomic.AtomicLong; | |||
|
|||
/** | |||
* Helper for `PlayException`. | |||
*/ | |||
public class PlayException extends UsefulException { | |||
|
|||
private final AtomicLong generator = new AtomicLong(System.currentTimeMillis()); | |||
|
|||
/** | |||
* Generates a new unique exception ID. | |||
*/ | |||
private String nextId() { | |||
return java.lang.Long.toString(generator.incrementAndGet(), 26); | |||
} | |||
|
|||
public PlayException(String title, String description, Throwable cause) { | |||
super(title + "[" + description + "]",cause); | |||
this.title = title; | |||
this.description = description; | |||
this.id = nextId(); | |||
this.cause = cause; | |||
} | |||
|
|||
public PlayException(String title, String description) { | |||
super(title + "[" + description + "]"); | |||
this.title = title; | |||
this.description = description; | |||
this.id = nextId(); | |||
this.cause = null; | |||
} | |||
|
|||
/** | |||
* Adds source attachment to a Play exception. | |||
*/ | |||
public static abstract class ExceptionSource extends PlayException { | |||
|
|||
public ExceptionSource(String title, String description, Throwable cause) { | |||
super(title, description,cause); | |||
} | |||
|
|||
public ExceptionSource(String title, String description) { | |||
super(title, description); | |||
} | |||
|
|||
/** | |||
* Error line number, if defined. | |||
*/ | |||
public abstract Integer line(); | |||
|
|||
/** | |||
* Column position, if defined. | |||
*/ | |||
public abstract Integer position(); | |||
|
|||
/** | |||
* Input stream used to read the source content. | |||
*/ | |||
public abstract String input(); | |||
|
|||
/** | |||
* The source file name if defined. | |||
*/ | |||
public abstract String sourceName(); | |||
|
|||
/** | |||
* Extracts interesting lines to be displayed to the user. | |||
* | |||
* @param border number of lines to use as a border | |||
*/ | |||
public InterestingLines interestingLines(int border) { | |||
try { | |||
if(input() == null || line() == null) { | |||
return null; | |||
} | |||
String[] lines = input().split("\n"); | |||
int firstLine = Math.max(0, line() - border); | |||
int lastLine = Math.min(lines.length - 1, line() + border); | |||
List<String> focusOn = new ArrayList<String>(); | |||
for(int i = firstLine; i <= lastLine; i++) { | |||
focusOn.add(lines[i]); | |||
} | |||
return new InterestingLines(firstLine + 1, focusOn.toArray(new String[focusOn.size()]), line() - firstLine - 1); | |||
} catch(Throwable e) { | |||
e.printStackTrace(); | |||
return null; | |||
} | |||
} | |||
|
|||
public String toString() { | |||
return super.toString() + " in " + sourceName() + ":" + line(); | |||
} | |||
} | |||
|
|||
/** | |||
* Adds any attachment to a Play exception. | |||
*/ | |||
public static abstract class ExceptionAttachment extends PlayException { | |||
|
|||
public ExceptionAttachment(String title, String description, Throwable cause) { | |||
super(title, description, cause); | |||
} | |||
|
|||
public ExceptionAttachment(String title, String description) { | |||
super(title, description); | |||
} | |||
|
|||
/** | |||
* Content title. | |||
*/ | |||
public abstract String subTitle(); | |||
|
|||
/** | |||
* Content to be displayed. | |||
*/ | |||
public abstract String content(); | |||
|
|||
} | |||
|
|||
/** | |||
* Adds a rich HTML description to a Play exception. | |||
*/ | |||
public static abstract class RichDescription extends ExceptionAttachment { | |||
|
|||
public RichDescription(String title, String description, Throwable cause) { | |||
super(title, description, cause); | |||
} | |||
|
|||
public RichDescription(String title, String description) { | |||
super(title, description); | |||
} | |||
|
|||
/** | |||
* The new description formatted as HTML. | |||
*/ | |||
public abstract String htmlDescription(); | |||
|
|||
} | |||
|
|||
public static class InterestingLines { | |||
|
|||
public final int firstLine; | |||
public final int errorLine; | |||
public final String[] focus; | |||
|
|||
public InterestingLines(int firstLine, String[] focus, int errorLine){ | |||
this.firstLine = firstLine; | |||
this.errorLine = errorLine; | |||
this.focus = focus; | |||
} | |||
|
|||
} | |||
|
|||
} |
40 changes: 40 additions & 0 deletions
40
framework/src/play-exceptions/src/main/java/play/api/UsefulException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,40 @@ | |||
package play.api; | |||
|
|||
/** | |||
* A UsefulException is something useful to display in the User browser. | |||
*/ | |||
public abstract class UsefulException extends RuntimeException { | |||
|
|||
/** | |||
* Exception title. | |||
*/ | |||
public String title; | |||
|
|||
/** | |||
* Exception description. | |||
*/ | |||
public String description; | |||
|
|||
/** | |||
* Exception cause if defined. | |||
*/ | |||
public Throwable cause; | |||
|
|||
/** | |||
* Unique id for this exception. | |||
*/ | |||
public String id; | |||
|
|||
public UsefulException(String message, Throwable cause) { | |||
super(message, cause); | |||
} | |||
|
|||
public UsefulException(String message) { | |||
super(message); | |||
} | |||
|
|||
public String toString() { | |||
return "@" + id + ": " + title; | |||
} | |||
|
|||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
4883db2
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When i try compiling with ./build -Dexperimental=true publish-local i'm getting 26 errors?
some of them are
object Future is not a member of package akka.dispatch
object Await is not a member of package akka.dispatch
object duration is not a member of package akka.util
object config is not a member of package akka
What should I do to get it working?
4883db2
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It doesn't compile with Scala 2.10 yet. This work is the preliminary project structure refactoring needed to move the runtime API to Scala 2.10 while keeping the sbt related stuff to Scala 2.9.2 (to be able to release with the current stable sbt 0.12)
4883db2
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
4883db2
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can't wait :)