resty-generators 0.5.3 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/features/generators.feature +67 -0
- data/features/step_definitions/simple_steps.rb +1 -0
- data/lib/generators/resty/base.rb +15 -3
- data/lib/generators/resty/model/model_generator.rb +33 -3
- data/lib/generators/resty/scaffold/scaffold_generator.rb +30 -15
- data/lib/generators/resty/setup/setup_generator.rb +2 -2
- data/lib/generators/resty/setup/setup_generator.rb~ +31 -0
- data/lib/generators/resty/setup/templates/ActivityFactory.java~ +7 -0
- data/lib/generators/resty/setup/templates/ActivityPlace.java +5 -0
- data/lib/generators/resty/setup/templates/ActivityPlace.java~ +8 -0
- data/lib/generators/resty/setup/templates/BreadCrumbsPanel.java +3 -2
- data/lib/generators/resty/setup/templates/BreadCrumbsPanel.java~ +79 -0
- data/lib/generators/resty/setup/templates/GinModule.java~ +7 -0
- data/lib/generators/resty/setup/templates/LoginActivity.java~ +58 -0
- data/lib/generators/resty/setup/templates/LoginPlace.java~ +20 -0
- data/lib/generators/resty/setup/templates/LoginViewImpl.java~ +21 -0
- data/lib/generators/resty/setup/templates/Mavenfile +5 -5
- data/lib/generators/resty/setup/templates/Mavenfile~ +15 -0
- data/lib/generators/resty/setup/templates/MenuPanel.java~ +12 -0
- data/lib/generators/resty/setup/templates/PLaceHistoryMapper.java~ +7 -0
- data/lib/generators/resty/setup/templates/RestfulPlace.java~ +22 -0
- data/lib/generators/resty/setup/templates/SessionActivityPlaceActivityMapper.java~ +71 -0
- data/lib/generators/resty/setup/templates/SessionRestService.java~ +23 -0
- data/lib/generators/resty/setup/templates/User.java +34 -4
- data/lib/generators/resty/setup/templates/authentication.rb +2 -1
- data/lib/generators/resty/setup/templates/authentication.rb~ +4 -0
- data/lib/generators/resty/setup/templates/empty.css~ +1 -0
- data/lib/generators/resty/setup/templates/gwt.css +45 -0
- data/lib/generators/resty/setup/templates/initializer.rb~ +1 -0
- data/lib/generators/resty/setup/templates/monkey_patch.rb~ +27 -0
- data/lib/generators/resty/setup/templates/page.html~ +0 -0
- data/lib/generators/resty/setup/templates/session.rb +18 -36
- data/lib/generators/resty/setup/templates/session.rb~ +45 -0
- data/lib/generators/resty/setup/templates/sessions_controller.rb +27 -8
- data/lib/generators/resty/setup/templates/sessions_controller.rb~ +27 -0
- data/lib/generators/resty/setup/templates/user.rb +38 -6
- data/lib/generators/resty/setup/templates/user.rb~ +27 -0
- data/lib/generators/resty/templates/Activity.java +78 -39
- data/lib/generators/resty/templates/Activity.java~ +67 -0
- data/lib/generators/resty/templates/ActivityPlace.java~ +11 -0
- data/lib/generators/resty/templates/ColumnDefinitionsImpl.java~ +24 -0
- data/lib/generators/resty/templates/ColumnDefintionsImpl.java~ +34 -0
- data/lib/generators/resty/templates/Controller.java~ +49 -0
- data/lib/generators/resty/templates/Editor.java +123 -0
- data/lib/generators/resty/templates/Editor.java~ +84 -0
- data/lib/generators/resty/templates/Editor.ui.xml +41 -0
- data/lib/generators/resty/templates/Editor.ui.xml~ +37 -0
- data/lib/generators/resty/templates/Event.java +30 -0
- data/lib/generators/resty/templates/Event.java~ +31 -0
- data/lib/generators/resty/templates/EventHandler.java +8 -0
- data/lib/generators/resty/templates/EventHandler.java~ +30 -0
- data/lib/generators/resty/templates/Model.java +144 -15
- data/lib/generators/resty/templates/Model.java~ +23 -0
- data/lib/generators/resty/templates/Place.java +1 -1
- data/lib/generators/resty/templates/Place.java~ +21 -0
- data/lib/generators/resty/templates/PlaceTokenizer.java +1 -1
- data/lib/generators/resty/templates/PlaceTokenizer.java~ +19 -0
- data/lib/generators/resty/templates/RestService.java~ +51 -0
- data/lib/generators/resty/templates/View.java +15 -4
- data/lib/generators/resty/templates/View.java~ +23 -0
- data/lib/generators/resty/templates/View.ui.xml +22 -38
- data/lib/generators/resty/templates/View.ui.xml~ +17 -0
- data/lib/generators/resty/templates/ViewImpl.java +88 -103
- data/lib/generators/resty/templates/ViewImpl.java~ +153 -0
- data/lib/resty/abstract_session.rb~ +59 -0
- data/lib/resty/child_path.rb~ +18 -0
- data/lib/resty/session.rb~ +6 -0
- metadata +56 -11
@@ -0,0 +1,67 @@
|
|
1
|
+
Feature: Generators for Resty
|
2
|
+
|
3
|
+
Scenario: Create a rails application and adding 'resty-generators' gem will provide the resty generators
|
4
|
+
Given I create new rails application with template "simple.template"
|
5
|
+
And I execute "rails generate"
|
6
|
+
Then the output should contain "resty:controller" and "resty:model" and "resty:scaffold" and "resty:setup"
|
7
|
+
|
8
|
+
Given me an existing rails application "simple"
|
9
|
+
And I execute "rails generate resty:setup"
|
10
|
+
Then the output should contain "GWT_MODULE_NAME"
|
11
|
+
|
12
|
+
Given me an existing rails application "simple"
|
13
|
+
And I execute "rails generate resty:setup com.example"
|
14
|
+
Then the output should contain "src/main/java/com/example/Simple.gwt.xml" and "Mavenfile" and "src/main/java/com/example/client/SimpleEntryPoint.java" and "public/Simple.html" and "public/stylesheets/simple.css"
|
15
|
+
|
16
|
+
Given me an existing rails application "simple"
|
17
|
+
And I execute "compile gwt:compile"
|
18
|
+
Then the output should contain "Compilation succeeded"
|
19
|
+
|
20
|
+
Given me an existing rails application "simple"
|
21
|
+
And I execute "rails generate scaffold user name:string"
|
22
|
+
Then the output should contain "src/main/java/com/example/client/models/User.java" and "src/main/java/com/example/client/restservices/UsersRestService.java"
|
23
|
+
|
24
|
+
Given me an existing rails application "simple"
|
25
|
+
And I execute "compile gwt:compile"
|
26
|
+
Then the output should contain "Compilation succeeded"
|
27
|
+
|
28
|
+
Given me an existing rails application "simple"
|
29
|
+
And I execute "rake db:migrate test"
|
30
|
+
Then the output should contain "1 tests, 1 assertions, 0 failures, 0 errors" and "7 tests, 10 assertions, 0 failures, 0 errors"
|
31
|
+
|
32
|
+
Given me an existing rails application "simple"
|
33
|
+
And I execute "rails generate scaffold project name:string children:number cars:fixnum age:integer weight:float activated:boolean expires_at:date fire_up_at:datetime --skip-timestamps"
|
34
|
+
And I execute "compile gwt:compile"
|
35
|
+
Then the output should contain "Compilation succeeded"
|
36
|
+
|
37
|
+
Given me an existing rails application "simple"
|
38
|
+
And I execute "rails generate scaffold accounts name:string --timestamps --optimistic"
|
39
|
+
And I execute "compile gwt:compile"
|
40
|
+
Then the output should contain "Compilation succeeded"
|
41
|
+
|
42
|
+
Given me an existing rails application "simple"
|
43
|
+
And I execute "rails generate model cars name:string"
|
44
|
+
And I execute "compile gwt:compile"
|
45
|
+
Then the output should contain "Compilation succeeded"
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
Scenario: Create a gwt rails application with session and menu
|
50
|
+
Given I create new rails application with template "complete.template" and "complete" tests
|
51
|
+
And I execute "rails generate resty:setup com.example --session --menu"
|
52
|
+
Then the output should contain "src/main/java/com/example/client/SessionActivityPlaceActivityMapper.java" and "src/main/java/com/example/client/managed/CompleteMenuPanel.java" and "src/main/java/com/example/client/activities/LoginActivity.java"
|
53
|
+
|
54
|
+
Given me an existing rails application "complete"
|
55
|
+
And I execute "compile gwt:compile"
|
56
|
+
Then the output should contain "Compilation succeeded"
|
57
|
+
|
58
|
+
Given me an existing rails application "complete"
|
59
|
+
And I execute "rails generate scaffold accounts name:string"
|
60
|
+
And I execute "compile gwt:compile"
|
61
|
+
Then the output should contain "Compilation succeeded"
|
62
|
+
|
63
|
+
Given me an existing rails application "complete"
|
64
|
+
And I execute "rake db:migrate test"
|
65
|
+
Then the output should contain "1 tests, 1 assertions, 0 failures, 0 errors" and "7 tests, 10 assertions, 0 failures, 0 errors"
|
66
|
+
|
67
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'maven/cucumber_steps'
|
@@ -38,6 +38,14 @@ module Resty
|
|
38
38
|
@places_package ||= base_package + ".places"
|
39
39
|
end
|
40
40
|
|
41
|
+
def events_package
|
42
|
+
@events_package ||= base_package + ".events"
|
43
|
+
end
|
44
|
+
|
45
|
+
def editors_package
|
46
|
+
@editors_package ||= base_package + ".editors"
|
47
|
+
end
|
48
|
+
|
41
49
|
def activities_package
|
42
50
|
@activities_package ||= base_package + ".activities"
|
43
51
|
end
|
@@ -59,11 +67,15 @@ module Resty
|
|
59
67
|
end
|
60
68
|
|
61
69
|
def type_map
|
62
|
-
@type_map ||= {:integer => 'int', :boolean => '
|
70
|
+
@type_map ||= {:integer => 'int', :boolean => 'boolean', :string => 'String', :float => 'double', :date => 'java.util.Date', :datetime => 'java.util.Date', :number => 'long', :fixnum => 'long', :text => 'String', :password => 'String'}
|
71
|
+
end
|
72
|
+
|
73
|
+
def type_widget_map
|
74
|
+
@type_widget_map ||= {:integer => 'r:IntegerBox', :boolean => 'g:CheckBox', :float => 'r:DoubleBox', :date => 'd:DateBox', :datetime => 'd:DateBox', :number => 'r:LongBox', :fixnum => 'r:LongBox', :text => 'g:TextArea', :string => 'g:TextBox', :password => 'g:PasswordTextBox', :float => 'r:DoubleBox'}
|
63
75
|
end
|
64
76
|
|
65
|
-
|
66
|
-
@
|
77
|
+
def type_widget_prefix_map
|
78
|
+
@type_widget_prefix_map ||= {:integer => 'r', :boolean => 'g', :float => 'r', :date => 'd', :datetime => 'd', :number => 'r', :fixnum => 'r', :text => 'g', :string => 'g', :passord => 'g', :float => 'r'}
|
67
79
|
end
|
68
80
|
|
69
81
|
def find_gwt_xml(basedir)
|
@@ -8,16 +8,46 @@ module Resty
|
|
8
8
|
|
9
9
|
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
10
10
|
|
11
|
-
if defined? ::Ixtlan::ModifiedBy
|
12
|
-
class_option :modified_by, :type => :boolean
|
13
|
-
end
|
14
11
|
class_option :timestamps, :type => :boolean, :default => true
|
12
|
+
class_option :read_only, :type => :boolean, :default => false
|
13
|
+
class_option :modified_by, :type => :boolean, :default => false
|
14
|
+
class_option :singleton, :type => :boolean, :default => false
|
15
15
|
class_option :parent, :type => :string, :desc => "The parent class for the generated model"
|
16
16
|
|
17
17
|
def create_model_file
|
18
18
|
template 'Model.java', File.join(java_root, models_package.gsub(/\./, "/"), class_path, "#{class_name}.java")
|
19
19
|
end
|
20
20
|
|
21
|
+
def create_event_files
|
22
|
+
template 'Event.java', File.join(java_root, events_package.gsub(/\./, "/"), class_path, "#{class_name}Event.java")
|
23
|
+
template 'EventHandler.java', File.join(java_root, events_package.gsub(/\./, "/"), class_path, "#{class_name}EventHandler.java")
|
24
|
+
end
|
25
|
+
|
26
|
+
def create_rest_service_file
|
27
|
+
template 'RestService.java', File.join(java_root, restservices_package.gsub(/\./, "/"), class_path, "#{controller_class_name}RestService.java")
|
28
|
+
end
|
29
|
+
|
30
|
+
def controller_class_name
|
31
|
+
@controller_class_name ||= class_name
|
32
|
+
end
|
33
|
+
|
34
|
+
def actions
|
35
|
+
@actions ||=
|
36
|
+
begin
|
37
|
+
keys = action_map.keys
|
38
|
+
if options[:singleton]
|
39
|
+
keys.delete('index')
|
40
|
+
keys.delete('create')
|
41
|
+
keys.delete('destroy')
|
42
|
+
end
|
43
|
+
if options[:read_only]
|
44
|
+
keys.delete('update')
|
45
|
+
keys.delete('create')
|
46
|
+
keys.delete('destroy')
|
47
|
+
end
|
48
|
+
keys
|
49
|
+
end
|
50
|
+
end
|
21
51
|
end
|
22
52
|
end
|
23
53
|
end
|
@@ -9,17 +9,21 @@ module Resty
|
|
9
9
|
|
10
10
|
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
class_option :
|
16
|
-
class_option :parent,
|
17
|
-
class_option :singleton, :type => :boolean
|
12
|
+
class_option :timestamps, :type => :boolean, :default => true
|
13
|
+
class_option :read_only, :type => :boolean, :default => false
|
14
|
+
class_option :modified_by, :type => :boolean, :default => false
|
15
|
+
class_option :singleton, :type => :boolean, :default => false
|
16
|
+
class_option :parent, :type => :string, :desc => "The parent class for the generated model"
|
18
17
|
|
19
18
|
def create_model_file
|
20
19
|
template 'Model.java', File.join(java_root, models_package.gsub(/\./, "/"), class_path, "#{class_name}.java")
|
21
20
|
end
|
22
21
|
|
22
|
+
def create_event_files
|
23
|
+
template 'Event.java', File.join(java_root, events_package.gsub(/\./, "/"), class_path, "#{class_name}Event.java")
|
24
|
+
template 'EventHandler.java', File.join(java_root, events_package.gsub(/\./, "/"), class_path, "#{class_name}EventHandler.java")
|
25
|
+
end
|
26
|
+
|
23
27
|
def create_rest_service_file
|
24
28
|
template 'RestService.java', File.join(java_root, restservices_package.gsub(/\./, "/"), class_path, "#{controller_class_name}RestService.java")
|
25
29
|
end
|
@@ -30,6 +34,11 @@ module Resty
|
|
30
34
|
template 'ViewImpl.java', File.join(java_root, views_package.gsub(/\./, "/"), class_path, "#{class_name}ViewImpl.java")
|
31
35
|
end
|
32
36
|
|
37
|
+
def create_editor_files
|
38
|
+
template 'Editor.java', File.join(java_root, editors_package.gsub(/\./, "/"), class_path, "#{class_name}Editor.java")
|
39
|
+
template 'Editor.ui.xml', File.join(java_root, editors_package.gsub(/\./, "/"), class_path, "#{class_name}Editor.ui.xml")
|
40
|
+
end
|
41
|
+
|
33
42
|
def create_place_files
|
34
43
|
template 'Place.java', File.join(java_root, places_package.gsub(/\./, "/"), class_path, "#{class_name}Place.java")
|
35
44
|
template 'PlaceTokenizer.java', File.join(java_root, places_package.gsub(/\./, "/"), class_path, "#{class_name}PlaceTokenizer.java")
|
@@ -115,15 +124,21 @@ EOF
|
|
115
124
|
end
|
116
125
|
|
117
126
|
def actions
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
+
@actions ||=
|
128
|
+
begin
|
129
|
+
keys = action_map.keys
|
130
|
+
if options[:singleton]
|
131
|
+
keys.delete('index')
|
132
|
+
keys.delete('create')
|
133
|
+
keys.delete('destroy')
|
134
|
+
end
|
135
|
+
if options[:read_only]
|
136
|
+
keys.delete('update')
|
137
|
+
keys.delete('create')
|
138
|
+
keys.delete('destroy')
|
139
|
+
end
|
140
|
+
keys
|
141
|
+
end
|
127
142
|
end
|
128
143
|
end
|
129
144
|
end
|
@@ -179,8 +179,8 @@ resource :session do
|
|
179
179
|
ROUTE
|
180
180
|
gem 'ixtlan-session-timeout'
|
181
181
|
gem 'ixtlan-guard'
|
182
|
-
#
|
183
|
-
|
182
|
+
# needs to be in Gemfile to have jruby find the gem
|
183
|
+
gem "jruby-openssl", "~> 0.7.4", :platforms => :jruby
|
184
184
|
end
|
185
185
|
end
|
186
186
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'generators/resty/base'
|
2
|
+
module Resty
|
3
|
+
module Generators
|
4
|
+
class SetupGenerator < Base
|
5
|
+
|
6
|
+
arguments.clear # clear name argument from NamedBase
|
7
|
+
|
8
|
+
argument :gwt_module_name, :type => :string, :required => true
|
9
|
+
|
10
|
+
def name
|
11
|
+
gwt_module_name
|
12
|
+
end
|
13
|
+
|
14
|
+
def create_module_file
|
15
|
+
template 'module.gwt.xml', File.join(java_root, name.gsub(/\./, "/"), "#{application_name.underscore}.gwt.xml")
|
16
|
+
end
|
17
|
+
|
18
|
+
def create_maven_file
|
19
|
+
template 'Mavenfile', File.join("Mavenfile")
|
20
|
+
end
|
21
|
+
|
22
|
+
def create_entry_point_file
|
23
|
+
template 'EntryPoint.java', File.join(java_root, base_package.gsub(/\./, "/"), "#{application_name}.java")
|
24
|
+
end
|
25
|
+
|
26
|
+
def base_package
|
27
|
+
name + ".client"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -25,5 +25,10 @@ public abstract class ActivityPlace<T> extends RestfulPlace<T> {
|
|
25
25
|
super(id, restfulAction, name);
|
26
26
|
}
|
27
27
|
|
28
|
+
protected ActivityPlace(int id, T model, RestfulAction restfulAction,
|
29
|
+
String name) {
|
30
|
+
super(id, model, restfulAction, name);
|
31
|
+
}
|
32
|
+
|
28
33
|
public abstract Activity create(ActivityFactory factory);
|
29
34
|
}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
package <%= base_package %>;
|
2
3
|
|
3
4
|
import javax.inject.Inject;
|
@@ -27,7 +28,7 @@ public class BreadCrumbsPanel extends FlowPanel {
|
|
27
28
|
@Inject
|
28
29
|
public BreadCrumbsPanel(final SessionManager<User> sessionManager, final SessionRestService service,
|
29
30
|
final Notice notice){
|
30
|
-
setStyleName("rails-breadcrumbs");
|
31
|
+
setStyleName("gwt-rails-breadcrumbs");
|
31
32
|
setVisible(false);
|
32
33
|
sessionManager.addSessionHandler(new SessionHandler<User>() {
|
33
34
|
|
@@ -47,7 +48,7 @@ public class BreadCrumbsPanel extends FlowPanel {
|
|
47
48
|
}
|
48
49
|
|
49
50
|
public void login(User user) {
|
50
|
-
setName(user.
|
51
|
+
setName(user.getName());
|
51
52
|
}
|
52
53
|
|
53
54
|
public void accessDenied() {
|
@@ -0,0 +1,79 @@
|
|
1
|
+
package org.dhamma.schedules.client;
|
2
|
+
|
3
|
+
import javax.inject.Inject;
|
4
|
+
import javax.inject.Singleton;
|
5
|
+
|
6
|
+
import org.dhamma.schedules.client.models.User;
|
7
|
+
import org.dhamma.schedules.client.restservices.SessionRestService;
|
8
|
+
import org.fusesource.restygwt.client.Method;
|
9
|
+
import org.fusesource.restygwt.client.MethodCallback;
|
10
|
+
|
11
|
+
import com.google.gwt.event.dom.client.ClickEvent;
|
12
|
+
import com.google.gwt.event.dom.client.ClickHandler;
|
13
|
+
import com.google.gwt.user.client.History;
|
14
|
+
import com.google.gwt.user.client.ui.Button;
|
15
|
+
import com.google.gwt.user.client.ui.FlowPanel;
|
16
|
+
import com.google.gwt.user.client.ui.Label;
|
17
|
+
|
18
|
+
import de.mkristian.gwt.rails.Notice;
|
19
|
+
import de.mkristian.gwt.rails.session.SessionHandler;
|
20
|
+
import de.mkristian.gwt.rails.session.SessionManager;
|
21
|
+
|
22
|
+
@Singleton
|
23
|
+
public class BreadCrumbsPanel extends FlowPanel {
|
24
|
+
|
25
|
+
private final Button logout;
|
26
|
+
|
27
|
+
@Inject
|
28
|
+
public BreadCrumbsPanel(final SessionManager<User> sessionManager, final SessionRestService service,
|
29
|
+
final Notice notice){
|
30
|
+
setVisible(false);
|
31
|
+
sessionManager.addSessionHandler(new SessionHandler<User>() {
|
32
|
+
|
33
|
+
public void timeout() {
|
34
|
+
notice.setText("timeout");
|
35
|
+
setName(null);
|
36
|
+
History.fireCurrentHistoryState();
|
37
|
+
}
|
38
|
+
|
39
|
+
public void logout() {
|
40
|
+
service.destroy(new MethodCallback<Void>() {
|
41
|
+
public void onSuccess(Method method, Void response) {
|
42
|
+
}
|
43
|
+
public void onFailure(Method method, Throwable exception) {
|
44
|
+
}
|
45
|
+
});
|
46
|
+
setName(null);
|
47
|
+
History.fireCurrentHistoryState();
|
48
|
+
}
|
49
|
+
|
50
|
+
public void login(User user) {
|
51
|
+
setName(user.name);
|
52
|
+
History.fireCurrentHistoryState();
|
53
|
+
}
|
54
|
+
|
55
|
+
public void accessDenied() {
|
56
|
+
notice.setText("access denied");
|
57
|
+
}
|
58
|
+
});
|
59
|
+
logout = new Button("logout");
|
60
|
+
logout.addClickHandler(new ClickHandler() {
|
61
|
+
|
62
|
+
public void onClick(ClickEvent event) {
|
63
|
+
sessionManager.logout();
|
64
|
+
}
|
65
|
+
});
|
66
|
+
}
|
67
|
+
|
68
|
+
private void setName(String name){
|
69
|
+
clear();
|
70
|
+
if(name != null){
|
71
|
+
add(new Label("Welcome " + name));
|
72
|
+
add(logout);
|
73
|
+
setVisible(true);
|
74
|
+
}
|
75
|
+
else {
|
76
|
+
setVisible(false);
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
@@ -0,0 +1,58 @@
|
|
1
|
+
package org.dhamma.schedules.client.activities;
|
2
|
+
|
3
|
+
import javax.inject.Inject;
|
4
|
+
|
5
|
+
import org.dhamma.schedules.client.models.User;
|
6
|
+
import org.dhamma.schedules.client.places.LoginPlace;
|
7
|
+
import org.dhamma.schedules.client.restservices.SessionRestService;
|
8
|
+
import org.fusesource.restygwt.client.Method;
|
9
|
+
import org.fusesource.restygwt.client.MethodCallback;
|
10
|
+
|
11
|
+
import com.google.gwt.activity.shared.AbstractActivity;
|
12
|
+
import com.google.gwt.core.client.GWT;
|
13
|
+
import com.google.gwt.event.shared.EventBus;
|
14
|
+
import com.google.gwt.user.client.ui.AcceptsOneWidget;
|
15
|
+
import com.google.inject.assistedinject.Assisted;
|
16
|
+
|
17
|
+
import de.mkristian.gwt.rails.session.Authentication;
|
18
|
+
import de.mkristian.gwt.rails.session.LoginView;
|
19
|
+
import de.mkristian.gwt.rails.session.Session;
|
20
|
+
import de.mkristian.gwt.rails.session.SessionManager;
|
21
|
+
|
22
|
+
public class LoginActivity extends AbstractActivity implements LoginView.Presenter{
|
23
|
+
|
24
|
+
private final SessionRestService service;
|
25
|
+
private final LoginView view;
|
26
|
+
private final SessionManager<User> sessionManager;
|
27
|
+
|
28
|
+
@Inject
|
29
|
+
public LoginActivity(@Assisted LoginPlace place,
|
30
|
+
LoginView view,
|
31
|
+
SessionRestService service,
|
32
|
+
SessionManager<User> sessionManager) {
|
33
|
+
this.view = view;
|
34
|
+
this.service = service;
|
35
|
+
this.sessionManager = sessionManager;
|
36
|
+
}
|
37
|
+
|
38
|
+
public void start(AcceptsOneWidget display, EventBus eventBus) {
|
39
|
+
display.setWidget(view.asWidget());
|
40
|
+
view.setPresenter(this);
|
41
|
+
}
|
42
|
+
|
43
|
+
public void login(final String login, String password) {
|
44
|
+
Authentication authentication = new Authentication(login, password);
|
45
|
+
service.create(authentication, new MethodCallback<Session<User>>() {
|
46
|
+
|
47
|
+
public void onSuccess(Method method, Session<User> session) {
|
48
|
+
GWT.log("logged in: " + login);
|
49
|
+
sessionManager.login(session);
|
50
|
+
}
|
51
|
+
|
52
|
+
public void onFailure(Method method, Throwable exception) {
|
53
|
+
GWT.log("login failed: " + exception.getMessage(), exception);
|
54
|
+
sessionManager.accessDenied();
|
55
|
+
}
|
56
|
+
});
|
57
|
+
}
|
58
|
+
}
|