Skip to content

Commit a5972e2

Browse files
committed
Updated readme, and added JsDate
Also updated formatting
1 parent b45b880 commit a5972e2

File tree

3 files changed

+417
-28
lines changed

3 files changed

+417
-28
lines changed

README.md

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ This project is not yet complete, there are doubtlessly better ways to handle so
2222
* JavaScriptExceptionBase - Skipped, exceptions are handled differently in GWT3, legacy dev mode is not a concern
2323
* LoadingStrategyBase - Skipped, split points
2424
* OnSuccessExecutor - Skipped, package-protected and used in split points
25-
* SchedulerImpl - Updated, missing only scheduleEntry
25+
* SchedulerImpl - Updated, missing scheduleEntry
2626
* ScriptTagLoadingStrategy - Skipped, split points
2727
* StackTraceCreator - Skipped, browsers are less crappy now
2828
* SuperDevModeLogger - Skipped, GWT.log either will not exist, or will only be implemented in this way anyway
@@ -36,9 +36,12 @@ This project is not yet complete, there are doubtlessly better ways to handle so
3636
* Callback - Included, simple interface that eventually probably should be moved anyway
3737
* CodeDownloadExecution - Skipped, split points
3838
* Duration - Included for now, only as a util class for Scheduler
39-
* EntryPoint - Included, applications will likely still use this as a way to start up
39+
* EntryPoint - Removed - GWT2 applications must continue to use `com.google.gwt.core.client.EntryPoint`, whereas
40+
while J2CL applications have much more flexibility, they will probably use a different pattern.
4041
* GWT - Partially included for now to ease migration. This likely belongs in the "third" category, code which largely
41-
will not exist in GWT 3, so should be removed now, but this is used so extensively that would be difficult.
42+
will not exist in GWT 3, so should be removed now, but this is used so extensively that would be difficult. Methods
43+
which can be supported are included, with others removed. Deprecated methods are either broken or should be phased
44+
out.
4245
* JavaScriptException - Skipped for now, unsure we can replace in a way that will still behave the same as before
4346
* JavaScriptObject - Included, deprecated: classes extending this will need additional updates to properly conform
4447
to JsInterop requirements
@@ -51,11 +54,11 @@ This project is not yet complete, there are doubtlessly better ways to handle so
5154
* JsArrayNumber - Updated, deprecated: projects should migrate when feasible to `elemental2.core.JsArray<Double>`
5255
* JsArrayString - Updated, deprecated: projects should migrate when feasible to `elemental2.core.JsArray<JsString>`
5356
* JsArrayUtils - Updated, deprecated, consists only of calls to Js.uncheckedCast
54-
* JsDate -
57+
* JsDate - Updated, deprecated: projects should migrate to `elemental2.core.JsDate`
5558
* JsonUtils - Updated, deprecated: projects should migrate to elemental2's JSON.parse and JSON.stringify, no method
5659
in this class actually uses eval any longer
5760
* RunAsyncCallback - Skipped, split points
58-
* Scheduler - Updated, mising only scheduleEntry
61+
* Scheduler - Updated, mising scheduleEntry
5962
* ScriptInjector - Updated
6063
* SingleJsoImpl - Skipped, JSO-related, shouldn't be needed
6164
* SingleJsoImplName - Skipped, JSO-related, shouldn't be needed
@@ -68,7 +71,20 @@ improvements are made.
6871

6972

7073
### Updating JavaScriptObject subclasses
71-
TODO
74+
As with most of the deprecated classes kept in this library, existing JavaScriptObject types should be rewritten using
75+
jsinterop annotations to correctly explain to the compiler what is happening. This class can still be convient to use
76+
as an argument or return type, but generally should not be extended in your own projects any longer.
77+
78+
Some basic guidlines to follow:
79+
* The type itself must be marked as `@JsType(isNative=true)`, most likely with `namespace=JsPackage.GLOBAL`, and
80+
depending on your use case, you might want to always use `name="Object"`, or might want to refer to a different JS
81+
class.
82+
* Existing native methods need to be rewritten either as overlay methods, or made native to describe how they call the
83+
actual JS. A `@JsMethod(name=...)` may be required if the method name is not the same as in JS, or a `@JsProperty` if
84+
the method exists to read/write a property. Fields can also be created - they will be assumed to be named for an
85+
existing JS property, but you can likewise rename them with `@JsProperty`.
86+
* Overlay methods need to be marked with `@JsOverlay`, and continue to need to be effectively final (i.e. never
87+
overridden), but no longer need to be marked as `final`.
7288

7389

7490
### Dependency
@@ -86,10 +102,5 @@ To build gwt-core:
86102

87103
* run `mvn clean install`
88104

89-
on the parent directory.
90-
91-
To run the j2cl tests:
92-
93-
* switch to the 'gwt-core-j2cl-tests' directory
94-
* run `mvn j2cl:clean` & `mvn j2cl:test`
105+
on the parent directory. This will build the artifact and run tests against the JVM, J2CL, and GWT2.
95106

0 commit comments

Comments
 (0)