resty-generators 0.3.3 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/generators/resty/setup/setup_generator.rb +9 -7
- data/lib/generators/resty/setup/templates/ActivityPlace.java +6 -6
- data/lib/generators/resty/setup/templates/EntryPoint.java +1 -1
- data/lib/generators/resty/setup/templates/LoginActivity.java +19 -1
- data/lib/generators/resty/setup/templates/LoginView.ui.xml +12 -9
- data/lib/generators/resty/setup/templates/Mavenfile +2 -2
- data/lib/generators/resty/setup/templates/SessionRestService.java +3 -0
- data/lib/generators/resty/setup/templates/User.java +4 -0
- data/lib/generators/resty/setup/templates/module.gwt.xml +1 -1
- data/lib/generators/resty/setup/templates/page.html +1 -1
- data/lib/generators/resty/setup/templates/session.rb +0 -2
- data/lib/generators/resty/setup/templates/sessions_controller.rb +11 -3
- data/lib/generators/resty/setup/templates/user.rb +0 -2
- data/lib/generators/resty/templates/Activity.java +9 -8
- data/lib/generators/resty/templates/Model.java +20 -7
- data/lib/generators/resty/templates/Place.java +3 -3
- data/lib/generators/resty/templates/RestService.java +2 -2
- data/lib/generators/resty/templates/View.ui.xml +1 -1
- data/lib/generators/resty/templates/ViewImpl.java +21 -51
- data/lib/resty/resty_railtie.rb +0 -4
- metadata +2 -2
@@ -16,7 +16,7 @@ module Resty
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def create_module_file
|
19
|
-
template 'module.gwt.xml', File.join(java_root, name.gsub(/\./, "/"), "#{application_name
|
19
|
+
template 'module.gwt.xml', File.join(java_root, name.gsub(/\./, "/"), "#{application_name}.gwt.xml")
|
20
20
|
end
|
21
21
|
|
22
22
|
def create_maven_file
|
@@ -87,12 +87,8 @@ module Resty
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
def create_initializers
|
91
|
-
template 'monkey_patch.rb', File.join('config', 'initializers', 'resty_monkey_patch.rb')
|
92
|
-
end
|
93
|
-
|
94
90
|
def create_html
|
95
|
-
template 'page.html', File.join('public', "#{application_name
|
91
|
+
template 'page.html', File.join('public', "#{application_name}.html")
|
96
92
|
template 'gwt.css', File.join('public', 'stylesheets', "#{application_name.underscore}.css")
|
97
93
|
end
|
98
94
|
|
@@ -163,7 +159,13 @@ SESSION
|
|
163
159
|
template 'group.rb', File.join('app', 'models', "group.rb")
|
164
160
|
template 'session.rb', File.join('app', 'models', "session.rb")
|
165
161
|
template 'user.rb', File.join('app', 'models', "user.rb")
|
166
|
-
route
|
162
|
+
route <<ROUTE
|
163
|
+
resource :session do
|
164
|
+
member do
|
165
|
+
post :reset_password
|
166
|
+
end
|
167
|
+
end
|
168
|
+
ROUTE
|
167
169
|
gem 'ixtlan-session-timeout'
|
168
170
|
gem 'ixtlan-guard'
|
169
171
|
# TODO until rmvn uses the right openssl gem
|
@@ -9,16 +9,16 @@ import <%= gwt_rails_package %>.RestfulPlace;
|
|
9
9
|
|
10
10
|
public abstract class ActivityPlace extends RestfulPlace {
|
11
11
|
|
12
|
-
protected ActivityPlace(RestfulAction restfulAction) {
|
13
|
-
super(restfulAction);
|
12
|
+
protected ActivityPlace(RestfulAction restfulAction, String name) {
|
13
|
+
super(restfulAction, name);
|
14
14
|
}
|
15
15
|
|
16
|
-
protected ActivityPlace(int id, RestfulAction restfulAction) {
|
17
|
-
super(id, restfulAction);
|
16
|
+
protected ActivityPlace(int id, RestfulAction restfulAction, String name) {
|
17
|
+
super(id, restfulAction, name);
|
18
18
|
}
|
19
19
|
|
20
|
-
protected ActivityPlace(String id, RestfulAction restfulAction) {
|
21
|
-
super(id, restfulAction);
|
20
|
+
protected ActivityPlace(String id, RestfulAction restfulAction, String name) {
|
21
|
+
super(id, restfulAction, name);
|
22
22
|
}
|
23
23
|
|
24
24
|
public abstract Activity create(ActivityFactory factory);
|
@@ -70,7 +70,7 @@ public class <%= application_name %>EntryPoint implements EntryPoint {
|
|
70
70
|
* This is the entry point method.
|
71
71
|
*/
|
72
72
|
public void onModuleLoad() {
|
73
|
-
Defaults.setServiceRoot(GWT.getModuleBaseURL().replaceFirst("[a-
|
73
|
+
Defaults.setServiceRoot(GWT.getModuleBaseURL().replaceFirst("[a-zA-Z0-9_]+/$", ""));
|
74
74
|
Defaults.setDispatcher(DefaultDispatcherSingleton.INSTANCE);
|
75
75
|
GWT.log("base url for restservices: " + Defaults.getServiceRoot());
|
76
76
|
|
@@ -15,6 +15,7 @@ import com.google.gwt.event.shared.EventBus;
|
|
15
15
|
import com.google.gwt.user.client.ui.AcceptsOneWidget;
|
16
16
|
import com.google.inject.assistedinject.Assisted;
|
17
17
|
|
18
|
+
import <%= gwt_rails_package %>.Notice;
|
18
19
|
import <%= gwt_rails_session_package %>.Authentication;
|
19
20
|
import <%= gwt_rails_session_package %>.LoginView;
|
20
21
|
import <%= gwt_rails_session_package %>.Session;
|
@@ -25,15 +26,18 @@ public class LoginActivity extends AbstractActivity implements LoginView.Present
|
|
25
26
|
private final SessionRestService service;
|
26
27
|
private final LoginView view;
|
27
28
|
private final SessionManager<User> sessionManager;
|
29
|
+
private final Notice notice;
|
28
30
|
|
29
31
|
@Inject
|
30
32
|
public LoginActivity(@Assisted LoginPlace place,
|
31
33
|
LoginView view,
|
32
34
|
SessionRestService service,
|
33
|
-
SessionManager<User> sessionManager
|
35
|
+
SessionManager<User> sessionManager,
|
36
|
+
Notice notice) {
|
34
37
|
this.view = view;
|
35
38
|
this.service = service;
|
36
39
|
this.sessionManager = sessionManager;
|
40
|
+
this.notice = notice;
|
37
41
|
}
|
38
42
|
|
39
43
|
public void start(AcceptsOneWidget display, EventBus eventBus) {
|
@@ -56,4 +60,18 @@ public class LoginActivity extends AbstractActivity implements LoginView.Present
|
|
56
60
|
}
|
57
61
|
});
|
58
62
|
}
|
63
|
+
|
64
|
+
public void resetPassword(final String login) {
|
65
|
+
Authentication authentication = new Authentication(login);
|
66
|
+
service.resetPassword(authentication, new MethodCallback<Void>() {
|
67
|
+
|
68
|
+
public void onSuccess(Method method, Void result) {
|
69
|
+
notice.setText("new password was sent to your email address");
|
70
|
+
}
|
71
|
+
|
72
|
+
public void onFailure(Method method, Throwable exception) {
|
73
|
+
notice.setText("could not reset password - username/email unknown");
|
74
|
+
}
|
75
|
+
});
|
76
|
+
}
|
59
77
|
}
|
@@ -6,13 +6,16 @@
|
|
6
6
|
<ui:style>
|
7
7
|
</ui:style>
|
8
8
|
|
9
|
-
<g:
|
10
|
-
<g:
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
</g:
|
17
|
-
|
9
|
+
<g:FlowPanel>
|
10
|
+
<g:HTML><label name="login">Username or Email</label></g:HTML>
|
11
|
+
<g:TextBox ui:field="login" name="login"/>
|
12
|
+
<g:HTML><label name="password">Password</label></g:HTML>
|
13
|
+
<g:PasswordTextBox ui:field="password" name="password"/>
|
14
|
+
<g:HTML></g:HTML>
|
15
|
+
<g:Button ui:field="loginButton">login</g:Button>
|
16
|
+
<g:HTML><label name="username">Username or Email</label></g:HTML>
|
17
|
+
<g:TextBox ui:field="username" name="username"/>
|
18
|
+
<g:HTML></g:HTML>
|
19
|
+
<g:Button ui:field="resetPasswordButton">password reset</g:Button>
|
20
|
+
</g:FlowPanel>
|
18
21
|
</ui:UiBinder>
|
@@ -4,7 +4,7 @@ jar('org.fusesource.restygwt:restygwt', '1.2-SNAPSHOT').scope :provided
|
|
4
4
|
jar('javax.ws.rs:jsr311-api', '1.1').scope :provided
|
5
5
|
jar('com.google.gwt:gwt-user', GWT_VERSION).scope :provided
|
6
6
|
jar('com.google.gwt.inject:gin', '1.5.0').scope :provided
|
7
|
-
jar('de.mkristian.rails-gwt:rails-gwt', '0.
|
7
|
+
jar('de.mkristian.rails-gwt:rails-gwt', '0.2.0-SNAPSHOT').scope :provided
|
8
8
|
|
9
9
|
plugin('org.codehaus.mojo:gwt-maven-plugin', GWT_VERSION) do |gwt|
|
10
10
|
gwt.with({ :warSourceDirectory => "${basedir}/public",
|
@@ -16,7 +16,7 @@ plugin('org.codehaus.mojo:gwt-maven-plugin', GWT_VERSION) do |gwt|
|
|
16
16
|
:style => "DETAILED",
|
17
17
|
:treeLogger => true,
|
18
18
|
:extraJvmArgs => "-Xmx512m",
|
19
|
-
:runTarget => "<%= application_name
|
19
|
+
:runTarget => "<%= application_name %>.html",
|
20
20
|
:includes => "**/<%= application_name %>GWTTestSuite.java"
|
21
21
|
})
|
22
22
|
gwt.executions.goals << ["clean", "compile", "test"]
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<!-- If you add any GWT meta tags, they must -->
|
13
13
|
<!-- be added before this line. -->
|
14
14
|
<!-- -->
|
15
|
-
<script type="text/javascript" language="javascript" src="<%= application_name
|
15
|
+
<script type="text/javascript" language="javascript" src="<%= application_name %>/<%= application_name %>.nocache.js"></script>
|
16
16
|
</head>
|
17
17
|
|
18
18
|
<!-- -->
|
@@ -7,20 +7,28 @@ class SessionsController < ApplicationController
|
|
7
7
|
public
|
8
8
|
|
9
9
|
def create
|
10
|
-
@session = Session.create(params[:
|
10
|
+
@session = Session.create(params[:authentication] || params)
|
11
11
|
|
12
12
|
if @session
|
13
13
|
current_user @session.user
|
14
14
|
@session.permissions = guard.permissions(self)
|
15
15
|
|
16
|
-
# TODO make all formats available
|
17
16
|
# TODO make html login
|
18
|
-
|
17
|
+
respond_to do |format|
|
18
|
+
format.html { render :text => "authorized - but nothing further is implemented" }
|
19
|
+
format.xml { render :xml => @session.to_xml }
|
20
|
+
format.json { render :json => @session.to_json }
|
21
|
+
end
|
19
22
|
else
|
20
23
|
head :not_found
|
21
24
|
end
|
22
25
|
end
|
23
26
|
|
27
|
+
def reset_password
|
28
|
+
warn "not implemented"
|
29
|
+
head :ok
|
30
|
+
end
|
31
|
+
|
24
32
|
def destroy
|
25
33
|
# reset session happens in the after filter which allows for
|
26
34
|
# audit log with username which happens in another after filter
|
@@ -70,8 +70,9 @@ public class <%= class_name %>Activity extends AbstractActivity implements <%= c
|
|
70
70
|
service.show(<% unless options[:singleton] -%>id, <% end -%>new MethodCallback<<%= class_name %>>() {
|
71
71
|
|
72
72
|
public void onFailure(Method method, Throwable exception) {
|
73
|
-
notice.setText("error loading <%= class_name.humanize %>: "
|
73
|
+
notice.setText("error loading <%= class_name.underscore.humanize %>: "
|
74
74
|
+ exception.getMessage());
|
75
|
+
view.reset(place.action);
|
75
76
|
}
|
76
77
|
|
77
78
|
public void onSuccess(Method method, <%= class_name %> response) {
|
@@ -81,7 +82,7 @@ public class <%= class_name %>Activity extends AbstractActivity implements <%= c
|
|
81
82
|
}
|
82
83
|
});
|
83
84
|
if(!notice.isVisible()){
|
84
|
-
notice.setText("loading <%= class_name.humanize %> . . .");
|
85
|
+
notice.setText("loading <%= class_name.underscore.humanize %> . . .");
|
85
86
|
}
|
86
87
|
}
|
87
88
|
<% unless options[:singleton] -%>
|
@@ -91,7 +92,7 @@ public class <%= class_name %>Activity extends AbstractActivity implements <%= c
|
|
91
92
|
service.create(model, new MethodCallback<<%= class_name %>>() {
|
92
93
|
|
93
94
|
public void onFailure(Method method, Throwable exception) {
|
94
|
-
notice.setText("error creating <%= class_name.humanize %>: "
|
95
|
+
notice.setText("error creating <%= class_name.underscore.humanize %>: "
|
95
96
|
+ exception.getMessage());
|
96
97
|
}
|
97
98
|
|
@@ -100,7 +101,7 @@ public class <%= class_name %>Activity extends AbstractActivity implements <%= c
|
|
100
101
|
RestfulActionEnum.EDIT));
|
101
102
|
}
|
102
103
|
});
|
103
|
-
notice.setText("creating <%= class_name.humanize %> . . .");
|
104
|
+
notice.setText("creating <%= class_name.underscore.humanize %> . . .");
|
104
105
|
}
|
105
106
|
|
106
107
|
public void delete() {
|
@@ -109,7 +110,7 @@ public class <%= class_name %>Activity extends AbstractActivity implements <%= c
|
|
109
110
|
service.destroy(model, new MethodCallback<Void>() {
|
110
111
|
|
111
112
|
public void onFailure(Method method, Throwable exception) {
|
112
|
-
notice.setText("error deleting <%= class_name.humanize %>: "
|
113
|
+
notice.setText("error deleting <%= class_name.underscore.humanize %>: "
|
113
114
|
+ exception.getMessage());
|
114
115
|
}
|
115
116
|
|
@@ -117,7 +118,7 @@ public class <%= class_name %>Activity extends AbstractActivity implements <%= c
|
|
117
118
|
goTo(new <%= class_name %>Place(RestfulActionEnum.INDEX));
|
118
119
|
}
|
119
120
|
});
|
120
|
-
notice.setText("deleting <%= class_name.humanize %> . . .");
|
121
|
+
notice.setText("deleting <%= class_name.underscore.humanize %> . . .");
|
121
122
|
}
|
122
123
|
<% end -%>
|
123
124
|
public void save() {
|
@@ -126,7 +127,7 @@ public class <%= class_name %>Activity extends AbstractActivity implements <%= c
|
|
126
127
|
service.update(model, new MethodCallback<<%= class_name %>>() {
|
127
128
|
|
128
129
|
public void onFailure(Method method, Throwable exception) {
|
129
|
-
notice.setText("error loading <%= class_name.humanize %>: "
|
130
|
+
notice.setText("error loading <%= class_name.underscore.humanize %>: "
|
130
131
|
+ exception.getMessage());
|
131
132
|
}
|
132
133
|
|
@@ -135,6 +136,6 @@ public class <%= class_name %>Activity extends AbstractActivity implements <%= c
|
|
135
136
|
<% end -%>RestfulActionEnum.EDIT));
|
136
137
|
}
|
137
138
|
});
|
138
|
-
notice.setText("saving <%= class_name.humanize %> . . .");
|
139
|
+
notice.setText("saving <%= class_name.underscore.humanize %> . . .");
|
139
140
|
}
|
140
141
|
}
|
@@ -4,26 +4,39 @@ package <%= models_package %>;
|
|
4
4
|
import java.util.Date;
|
5
5
|
<% end -%>
|
6
6
|
|
7
|
+
import org.fusesource.restygwt.client.Json;
|
8
|
+
import org.fusesource.restygwt.client.Json.Style;
|
9
|
+
|
10
|
+
@Json(style = Style.RAILS<% if class_name.downcase == class_name.underscore -%>)<% else -%>, name = "<%= class_name.underscore %>")<% end %>
|
7
11
|
public class <%= class_name %> {
|
8
12
|
|
9
13
|
<% unless options[:singleton] -%>
|
10
14
|
public int id;
|
11
|
-
|
12
15
|
<% end -%>
|
13
16
|
<% for attribute in attributes -%>
|
17
|
+
<% name = attribute.name.classify.sub(/^(.)/) {$1.downcase} -%>
|
18
|
+
|
19
|
+
<% if name != name.underscore -%> @Json(name = "<%= name.underscore %>")
|
20
|
+
<% end -%>
|
14
21
|
<% if attribute.type == :has_one -%>
|
15
|
-
<%= attribute.name.classify %> <%=
|
22
|
+
public <%= attribute.name.classify %> <%= name %>;
|
16
23
|
<% elsif attribute.type == :has_many -%>
|
17
|
-
public java.util.List<<%= attribute.name.classify %>> <%=
|
24
|
+
public java.util.List<<%= attribute.name.classify %>> <%= name %>;
|
18
25
|
<% else -%>
|
19
|
-
public <%= type_map[attribute.type] || attribute.type.to_s.classify %> <%=
|
26
|
+
public <%= type_map[attribute.type] || attribute.type.to_s.classify %> <%= name %>;
|
20
27
|
<% end -%>
|
21
28
|
<% end -%>
|
22
29
|
<% if options[:timestamps] %>
|
23
|
-
|
24
|
-
|
30
|
+
|
31
|
+
@Json(name = "created_at")
|
32
|
+
public Date createdAt;
|
33
|
+
|
34
|
+
@Json(name = "updated_at")
|
35
|
+
public Date updatedAt;
|
25
36
|
<% end -%>
|
26
37
|
<% if options[:modified_by] %>
|
27
|
-
|
38
|
+
|
39
|
+
@Json(name = "modified_by")
|
40
|
+
public options[:modified_by].classify.underscore modifiedBy
|
28
41
|
<% end -%>
|
29
42
|
}
|
@@ -14,14 +14,14 @@ public class <%= class_name %>Place extends ActivityPlace {
|
|
14
14
|
}
|
15
15
|
|
16
16
|
public <%= class_name %>Place(RestfulAction restfulAction) {
|
17
|
-
super(restfulAction);
|
17
|
+
super(restfulAction, "<%= table_name %>");
|
18
18
|
}
|
19
19
|
|
20
20
|
public <%= class_name %>Place(int id, RestfulAction restfulAction) {
|
21
|
-
super(id, restfulAction);
|
21
|
+
super(id, restfulAction, "<%= table_name %>");
|
22
22
|
}
|
23
23
|
|
24
24
|
public <%= class_name %>Place(String id, RestfulAction restfulAction) {
|
25
|
-
super(id, restfulAction);
|
25
|
+
super(id, restfulAction, "<%= table_name %>");
|
26
26
|
}
|
27
27
|
}
|
@@ -2,13 +2,13 @@ package <%= restservices_package %>;
|
|
2
2
|
|
3
3
|
import <%= gwt_rails_package %>.RestfulDispatcherSingleton;
|
4
4
|
<% if action_map.values.member? :get_all -%>
|
5
|
+
import <%= gwt_rails_package %>.DefaultDispatcherSingleton;
|
5
6
|
import java.util.List;
|
6
7
|
<% end -%>
|
7
8
|
|
8
9
|
import javax.ws.rs.*;
|
9
10
|
|
10
11
|
import org.fusesource.restygwt.client.*;
|
11
|
-
import org.fusesource.restygwt.client.dispatcher.DefaultDispatcher;
|
12
12
|
|
13
13
|
<% if name -%>
|
14
14
|
import <%= models_package %>.*;
|
@@ -22,7 +22,7 @@ public interface <%= controller_class_name %>RestService extends RestService {
|
|
22
22
|
case action_map[action]
|
23
23
|
when :get_all -%>
|
24
24
|
@GET @Path("/<%= table_name %>")
|
25
|
-
@Options(dispatcher =
|
25
|
+
@Options(dispatcher = DefaultDispatcherSingleton.class)
|
26
26
|
void <%= action %>(MethodCallback<List<<%= class_name %>>> callback);
|
27
27
|
|
28
28
|
// @GET @Path("/<%= table_name %>")
|
@@ -37,7 +37,7 @@
|
|
37
37
|
<% if attribute.type != :has_one && attribute.type != :has_many -%>
|
38
38
|
<% name = attribute.name.classify.sub(/^(.)/){ $1.downcase } -%>
|
39
39
|
<g:FlowPanel styleName="{style.field}">
|
40
|
-
<g:HTML><label name="<%= name %>"><%= name.humanize %></label></g:HTML>
|
40
|
+
<g:HTML><label name="<%= name %>"><%= name.underscore.humanize %></label></g:HTML>
|
41
41
|
<g:TextBox ui:field="<%= name %>" name="<%= name %>"/>
|
42
42
|
</g:FlowPanel>
|
43
43
|
<% end -%>
|
@@ -3,6 +3,9 @@ package <%= views_package %>;
|
|
3
3
|
<% if options[:timestamps] %>
|
4
4
|
import java.util.Date;
|
5
5
|
<% end -%>
|
6
|
+
<% if options[:timestamps] -%>
|
7
|
+
import <%= gwt_rails_package %>.<% unless options[:singleton] -%>Identifyable<% end -%>TimestampedView;<% else -%><% unless options[:singleton] -%>
|
8
|
+
import <%= gwt_rails_package %>.IdentifyableView;<% end -%><% end -%>
|
6
9
|
|
7
10
|
import <%= gwt_rails_package %>.RestfulAction;
|
8
11
|
import <%= gwt_rails_package %>.RestfulActionEnum;
|
@@ -12,10 +15,6 @@ import <%= places_package %>.<%= class_name %>Place;
|
|
12
15
|
|
13
16
|
import com.google.gwt.core.client.GWT;
|
14
17
|
import com.google.gwt.event.dom.client.ClickEvent;
|
15
|
-
<% if options[:timestamps] %>
|
16
|
-
import com.google.gwt.i18n.client.DateTimeFormat;
|
17
|
-
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
|
18
|
-
<% end -%>
|
19
18
|
import com.google.gwt.uibinder.client.UiBinder;
|
20
19
|
import com.google.gwt.uibinder.client.UiField;
|
21
20
|
import com.google.gwt.uibinder.client.UiHandler;
|
@@ -24,7 +23,7 @@ import com.google.gwt.user.client.ui.*;
|
|
24
23
|
import com.google.inject.Singleton;
|
25
24
|
|
26
25
|
@Singleton
|
27
|
-
public class <%= class_name %>ViewImpl extends Composite
|
26
|
+
public class <%= class_name %>ViewImpl extends <% if options[:timestamps] -%><% unless options[:singleton] -%>Identifyable<% end -%>TimestampedView<% else -%><% unless options[:singleton] -%>IdentifyableView<% else -%>Composite<% end -%><% end %>
|
28
27
|
implements <%= class_name %>View {
|
29
28
|
|
30
29
|
@UiTemplate("<%= class_name %>View.ui.xml")
|
@@ -32,6 +31,7 @@ public class <%= class_name %>ViewImpl extends Composite
|
|
32
31
|
|
33
32
|
private static <%= class_name %>ViewUiBinder uiBinder = GWT.create(<%= class_name %>ViewUiBinder.class);
|
34
33
|
|
34
|
+
<% unless options[:readonly] -%>
|
35
35
|
<% unless options[:singleton] -%>
|
36
36
|
@UiField
|
37
37
|
Button newButton;
|
@@ -48,17 +48,7 @@ public class <%= class_name %>ViewImpl extends Composite
|
|
48
48
|
@UiField
|
49
49
|
Button deleteButton;
|
50
50
|
|
51
|
-
@UiField
|
52
|
-
Label id;
|
53
|
-
|
54
51
|
<% end -%>
|
55
|
-
<% if options[:timestamps] %>
|
56
|
-
@UiField
|
57
|
-
Label createdAt;
|
58
|
-
|
59
|
-
@UiField
|
60
|
-
Label updatedAt;
|
61
|
-
|
62
52
|
<% end -%>
|
63
53
|
<% for attribute in attributes -%>
|
64
54
|
<% if attribute.type == :has_one -%>
|
@@ -74,18 +64,10 @@ public class <%= class_name %>ViewImpl extends Composite
|
|
74
64
|
|
75
65
|
private Presenter presenter;
|
76
66
|
|
77
|
-
<% unless options[:singleton] -%>
|
78
|
-
private int idCache;
|
79
|
-
|
80
|
-
<% end -%>
|
81
|
-
<% if options[:timestamps] %>
|
82
|
-
private Date createdAtCache;
|
83
|
-
private Date updatedAtCache;
|
84
|
-
|
85
|
-
<% end -%>
|
86
67
|
public <%= class_name %>ViewImpl() {
|
87
68
|
initWidget(uiBinder.createAndBindUi(this));
|
88
69
|
}
|
70
|
+
<% unless options[:readonly] %>
|
89
71
|
<% unless options[:singleton] -%>
|
90
72
|
@UiHandler("newButton")
|
91
73
|
void onClickNew(ClickEvent e) {
|
@@ -111,48 +93,35 @@ public class <%= class_name %>ViewImpl extends Composite
|
|
111
93
|
void onClickDelete(ClickEvent e) {
|
112
94
|
presenter.delete();
|
113
95
|
}
|
96
|
+
<% end -%>
|
114
97
|
<% end -%>
|
115
98
|
public void setPresenter(Presenter presenter) {
|
116
99
|
this.presenter = presenter;
|
117
100
|
}
|
118
101
|
|
119
102
|
public void reset(<%= class_name %> model) {
|
120
|
-
<% if options[:singleton] -%>
|
121
|
-
|
103
|
+
<% if options[:singleton] && options[:timestamps] -%>
|
104
|
+
resetSignature(model.createdAt, model.updatedAt);
|
122
105
|
<% else -%>
|
123
|
-
if(model.id > 0){
|
124
|
-
id.setText("id: " + model.id);
|
125
|
-
<% if options[:timestamps] %>
|
126
|
-
createdAt.setText("created at: "
|
127
|
-
+ DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_MEDIUM).format(model.created_at));
|
128
|
-
updatedAt.setText("updated at: "
|
129
|
-
+ DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_MEDIUM).format(model.updated_at));
|
130
|
-
<% end -%>
|
131
|
-
}
|
132
|
-
else {
|
133
|
-
id.setText(null);
|
134
106
|
<% if options[:timestamps] %>
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
}
|
139
|
-
this.idCache = model.id;
|
140
|
-
<% if options[:timestamps] %>
|
141
|
-
this.createdAtCache = model.created_at;
|
142
|
-
this.updatedAtCache = model.updated_at;
|
107
|
+
resetSignature(model.id, model.createdAt, model.updatedAt);
|
108
|
+
<% else -%>
|
109
|
+
resetSignature(model.id);
|
143
110
|
<% end -%>
|
144
111
|
<% end -%>
|
145
112
|
<% for attribute in attributes -%>
|
146
113
|
<% if attribute.type != :has_one && attribute.type != :has_many -%>
|
147
114
|
<% name = attribute.name.classify.sub(/^(.)/){ $1.downcase } -%>
|
148
|
-
|
149
|
-
<%= name %>.setText(model.<%= field_name %><% if type_conversion_map[attribute.type] -%> + ""<% end -%>);
|
115
|
+
<%= name %>.setText(model.<%= name %><% if type_conversion_map[attribute.type] -%> + ""<% end -%>);
|
150
116
|
<% end -%>
|
151
117
|
<% end -%>
|
152
118
|
}
|
153
119
|
|
154
120
|
public void reset(RestfulAction action) {
|
155
|
-
GWT.log(action.name() + " <%= class_name %>"<% unless options[:singleton] -%> + (idCache > 0 ? "(" +
|
121
|
+
GWT.log(action.name() + " <%= class_name %>"<% unless options[:singleton] -%> + (idCache > 0 ? "(" + idCache + ")" : "")<% end -%>);
|
122
|
+
<% if options[:readonly] -%>
|
123
|
+
setEnabled(false);
|
124
|
+
<% else -%>
|
156
125
|
<% unless options[:singleton] -%>
|
157
126
|
newButton.setVisible(!action.name().equals(RestfulActionEnum.NEW.name()));
|
158
127
|
createButton.setVisible(action.name().equals(RestfulActionEnum.NEW.name()));
|
@@ -163,6 +132,7 @@ public class <%= class_name %>ViewImpl extends Composite
|
|
163
132
|
deleteButton.setVisible(!action.name().equals(RestfulActionEnum.NEW.name()));
|
164
133
|
<% end -%>
|
165
134
|
setEnabled(!action.viewOnly());
|
135
|
+
<% end -%>
|
166
136
|
}
|
167
137
|
|
168
138
|
public <%= class_name %> retrieve<%= class_name %>() {
|
@@ -171,14 +141,14 @@ public class <%= class_name %>ViewImpl extends Composite
|
|
171
141
|
model.id = idCache;
|
172
142
|
<% end -%>
|
173
143
|
<% if options[:timestamps] %>
|
174
|
-
model.
|
175
|
-
model.
|
144
|
+
model.createdAt = createdAtCache;
|
145
|
+
model.updatedAt = updatedAtCache;
|
176
146
|
<% end -%>
|
177
147
|
|
178
148
|
<% for attribute in attributes -%>
|
179
149
|
<% if attribute.type != :has_one && attribute.type != :has_many -%>
|
180
150
|
<% name = attribute.name.classify.sub(/^(.)/){ $1.downcase } -%>
|
181
|
-
model.<%=
|
151
|
+
model.<%= name %> = <% if (conv = type_conversion_map[attribute.type]).nil? -%><%= name %>.getText()<% else -%><%= conv %>(<%= name %>.getText())<% end -%>;
|
182
152
|
<% end -%>
|
183
153
|
|
184
154
|
<% end -%>
|
data/lib/resty/resty_railtie.rb
CHANGED
@@ -13,10 +13,6 @@ module Resty
|
|
13
13
|
end
|
14
14
|
|
15
15
|
config.after_initialize do
|
16
|
-
ActiveRecord::Base.include_root_in_json = false
|
17
|
-
# TODO there migt be a way to tell ALL ActiveModel:
|
18
|
-
#ActiveModel::Base.include_root_in_json = false
|
19
|
-
|
20
16
|
# get the time/date format right ;-) and match it with resty
|
21
17
|
class DateTime
|
22
18
|
def as_json(options = nil)
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: resty-generators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.4.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- mkristian
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-08-06 00:00:00 +05:30
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|