resty-generators 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
}
|