resty-generators 0.7.0 → 0.7.1

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.
@@ -112,7 +112,7 @@ end
112
112
 
113
113
  content.sub! /new GinFactoryModuleBuilder\(\)/, "new GinFactoryModuleBuilder()\n .implement(Activity.class, Names.named(\"#{table_name}\"), #{activities_package}.#{class_name}Activity.class)"
114
114
 
115
- content.sub! /^}/, <<-EOF
115
+ content.sub! /^\}/, <<-EOF
116
116
 
117
117
  @Singleton
118
118
  public static class #{class_name.pluralize}RestServiceProvider implements Provider<#{restservices_package}.#{class_name.pluralize}RestService> {
@@ -13,6 +13,8 @@ module Resty
13
13
 
14
14
  class_option :menu, :type => :boolean, :default => false
15
15
 
16
+ class_option :remote_users, :type => :boolean, :default => false
17
+
16
18
  def name
17
19
  gwt_module_name
18
20
  end
@@ -26,7 +28,7 @@ module Resty
26
28
  unless File.read(".gitignore") =~ /^target/
27
29
  File.open(".gitignore", "a") { |f| f.puts "target/" }
28
30
  end
29
- unless File.read(".gitignore") =~ /^*pom/
31
+ unless File.read(".gitignore") =~ /^\*pom/
30
32
  File.open(".gitignore", "a") { |f| f.puts "*pom" }
31
33
  end
32
34
  end
@@ -120,6 +122,7 @@ module Resty
120
122
 
121
123
  if ENV['SSO'] == 'true' || ENV['SSO'] == ''
122
124
  config.remote_sso_url = "http://localhost:3000"
125
+ config.remote_token = "be happy"
123
126
  end
124
127
  end
125
128
  ENV
@@ -170,6 +173,13 @@ SESSION
170
173
  template 'group.rb', File.join('app', 'models', "group.rb")
171
174
  template 'session.rb', File.join('app', 'models', "session.rb")
172
175
  template 'user.rb', File.join('app', 'models', "user.rb")
176
+ if options[:remote_users]
177
+ template 'remote_user.rb', File.join('app', 'models', "remote_user.rb")
178
+ template 'create_users.rb', File.join('db', 'migrate', "0_create_users.rb")
179
+ template 'heartbeat.rb', File.join('lib', 'heartbeat.rb')
180
+ end
181
+ FileUtils.mv(File.join('db', 'seeds.rb'), File.join('db', 'seeds-old.rb'))
182
+ template 'seeds.rb', File.join('db', 'seeds.rb')
173
183
  route <<ROUTE
174
184
  resource :session do
175
185
  member do
@@ -22,6 +22,6 @@ public class <%= application_name %>MenuPanel extends MenuPanel<<%= options[:ses
22
22
 
23
23
  @Inject
24
24
  <%= application_name %>MenuPanel(final PlaceController placeController<% if options[:session] -%>, SessionManager<User> sessionManager<% end %>){
25
- super(<% if options[:session] -%>sessionManager<% end -%>);
25
+ super(<% if options[:session] -%>sessionManager<% end -%>, placeController);
26
26
  }
27
27
  }
@@ -0,0 +1,13 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :users do |t|
4
+ t.string :login
5
+ t.string :name
6
+ t.datetime :updated_at
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ drop_table :users
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ require 'ixtlan/core/heartbeat'
2
+ class Heartbeat < Ixtlan::Core::Heartbeat
3
+
4
+ def initialize
5
+ super
6
+ register(User, RemoteUser)
7
+ end
8
+
9
+ end
@@ -0,0 +1,8 @@
1
+ class HeartBeat < Ixtlan::Core::Heartbeat
2
+
3
+ def initialize
4
+ super
5
+ register(User, RemoteUser)
6
+ end
7
+
8
+ end
@@ -0,0 +1,5 @@
1
+ class RemoteUser < ActiveResource::Base
2
+ self.site = Rails.application.config.respond_to?(:remote_sso_url) ? Rails.application.config.remote_sso_url : "http://localhost:3000"
3
+ self.element_name = "user"
4
+ self.headers['X-SERVICE-TOKEN'] = Rails.application.config.respond_to?(:remote_service_token) ? Rails.application.config.remote_service_token : 'be happy'
5
+ end
@@ -0,0 +1,5 @@
1
+ class RemoteUser < ActiveResource::Base
2
+ self.site = Rails.application.config.respond_to?(:remote_sso_url) ? Rails.application.config.remote_sso_url : "http://localhost:3000"
3
+ self.element_name = "user"
4
+ self.headers['X-SERVICE-TOKEN'] = Rails.application.config.respond_to?(:remote_token) ? Rails.application.config.remote_token : 'be happy'
5
+ end
@@ -0,0 +1,25 @@
1
+ # This file should contain all the record creation needed to seed the database with its default values.
2
+ # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
3
+ #
4
+ # Examples:
5
+ #
6
+ # cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
7
+ # Mayor.create(:name => 'Daley', :city => cities.first)
8
+ u = User.new(:name => "Root", :login => "root")
9
+ u.id = 0
10
+ u.save
11
+ u.modified_by = u
12
+ u.save
13
+
14
+ c = Configuration.instance
15
+ <% if defined? Ixtlan::Errors -%>
16
+ c.errors_keep_dumps = 30
17
+ <% end -%>
18
+ <% if defined? Ixtlan:Audit -%>
19
+ c.audit_keep_logs = 90
20
+ <% end -%>
21
+ <% if defined? Ixtlan::Session -%>
22
+ c.idle_session_timeout = 15
23
+ <% end -%>
24
+ c.modified_by = u
25
+ c.save
@@ -0,0 +1,29 @@
1
+ # This file should contain all the record creation needed to seed the database with its default values.
2
+ # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
3
+ #
4
+ # Examples:
5
+ #
6
+ # cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
7
+ # Mayor.create(:name => 'Daley', :city => cities.first)
8
+ <% if options[:remote_users] -%>
9
+ u = User.new(:name => "Root", :login => "root")
10
+ u.id = 0
11
+ u.save
12
+ <% end -%>
13
+
14
+ c = Configuration.instance
15
+ if defined? Ixtlan::Errors
16
+ c.errors_keep_dumps = 30
17
+ end
18
+ if defined? Ixtlan::Audit
19
+ c.audits_keep_logs = 90
20
+ end
21
+ if defined? Ixtlan::Sessions
22
+ c.idle_session_timeout = 15
23
+ end
24
+ <% if options[:remote_users] -%>
25
+ c.modified_by = u
26
+ <% else -%>
27
+ # TODO maybe a modified_by= assignment is missing
28
+ <% end -%>
29
+ c.save
@@ -0,0 +1,29 @@
1
+ # This file should contain all the record creation needed to seed the database with its default values.
2
+ # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
3
+ #
4
+ # Examples:
5
+ #
6
+ # cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
7
+ # Mayor.create(:name => 'Daley', :city => cities.first)
8
+ <% if options[:remote_users] -%>
9
+ u = User.new(:name => "Root", :login => "root")
10
+ u.id = 0
11
+ u.save
12
+ <% end -%>
13
+
14
+ c = Configuration.instance
15
+ if defined? Ixtlan::Errors
16
+ c.errors_keep_dumps = 30
17
+ end
18
+ if defined? Ixtlan:Audit
19
+ c.audit_keep_logs = 90
20
+ end
21
+ if defined? Ixtlan::Session
22
+ c.idle_session_timeout = 15
23
+ end
24
+ <% if options[:remote_users] -%>
25
+ c.modified_by = u
26
+ <% else -%>
27
+ # TODO maybe a modified_by= assignment is missing
28
+ <% end -%>
29
+ c.save
@@ -1,4 +1,7 @@
1
1
  require 'ixtlan/guard/abstract_session'
2
+ <% if options[:remote_users] -%>
3
+ require 'ixtlan/core/heartbeat'
4
+ <% end -%>
2
5
 
3
6
  class Session < Ixtlan::Guard::AbstractSession
4
7
  include ActiveModel::Serializers::JSON
@@ -11,8 +14,18 @@ class Session < Ixtlan::Guard::AbstractSession
11
14
  def self.authenticate_remote(login, password)
12
15
  begin
13
16
  auth = Authentication.create(:login => login, :password => password)
17
+ <% if options[:remote_users] -%>
18
+ user = User.find_by_login(auth.login)
19
+ if user.nil?
20
+ heart = Heartbeat.new
21
+ heart.beat User
22
+ user = User.find_by_login(auth.login)
23
+ raise "user #{auth.login} not found" unless user
24
+ end
25
+ <% else -%>
14
26
  user = User.new
15
27
  user.login = auth.login
28
+ <% end -%>
16
29
  user.name = auth.name
17
30
  user.groups = auth.groups
18
31
  user
@@ -1,4 +1,11 @@
1
- class User
1
+ class User<% if options[:remote_users] -%> < ActiveRecord::Base
2
+
3
+ attr_accessor :groups
4
+
5
+ validates :login, :presence => true
6
+
7
+ record_timestamps = false
8
+ <% else -%>
2
9
  include ActiveModel::Serializers::JSON
3
10
  include ActiveModel::Serializers::Xml
4
11
 
@@ -13,6 +20,7 @@ class User
13
20
  @name = attributes['name']
14
21
  @groups = (attributes['groups'] || []).collect {|g| Group.new g }
15
22
  end
23
+ <% end -%>
16
24
 
17
25
  def self.authenticate(login, password)
18
26
  result = User.new
@@ -23,6 +31,9 @@ class User
23
31
  elsif password == "behappy"
24
32
  result.login = login
25
33
  result.name = login.humanize
34
+ <% if options[:remote_users] -%>
35
+ result.id = 0
36
+ <% end -%>
26
37
  result.groups = [Group.new('name' => login)]
27
38
  else
28
39
  result.log = "wrong password for login: #{login}"
@@ -31,7 +42,7 @@ class User
31
42
  end
32
43
 
33
44
  def self.reset_password(login)
34
- Authentication.post(:reset_password, :login=> login)
45
+ Authentication.post(:reset_password, :login => login)
35
46
  end
36
47
 
37
48
  def log=(msg)
@@ -46,7 +57,8 @@ class User
46
57
  end
47
58
  end
48
59
 
49
- def valid?
60
+ <% unless options[:remote_users] -%>
61
+ def valid?(ignore)
50
62
  @log.nil?
51
63
  end
52
64
 
@@ -54,5 +66,6 @@ class User
54
66
  false
55
67
  end
56
68
  alias :destroyed? :new_record?
69
+ <% end -%>
57
70
 
58
71
  end
@@ -0,0 +1,53 @@
1
+ class Ixtlan::Core::Heartbeat
2
+
3
+ class Resource
4
+
5
+ attr_reader :local, :remote
6
+ attr_accessor :count, :failure
7
+
8
+ def initialize(local, remote)
9
+ @count = 0
10
+ @failures = 0
11
+ @local = local
12
+ @remote = remote
13
+ end
14
+
15
+ def to_log
16
+ "update #{@local} - total: #{@count + @failures} success: #{@count} failures: #{@failures}"
17
+ end
18
+ end
19
+
20
+ def initialize
21
+ @count = 0
22
+ @failures = 0
23
+ end
24
+
25
+ def reg
26
+ @reg ||= {}
27
+ end
28
+
29
+ def register(local, remote)
30
+ reg[local] = Resource.new(local, remote)
31
+ end
32
+
33
+ def beat(resource = nil)
34
+ resources = resource.nil? ? reg.values : [reg[resource]]
35
+ resources.each do |res|
36
+ last_update = res.local.maximum(:updated_at) || 2000.years.ago
37
+ last_update = last_update.strftime('%Y-%m-%d %H:%M:%S.') + ("%06d" % last_update.usec)
38
+ res.remote.get(:last_changes, :updated_at => last_update).each do |remote|
39
+ u = res.local.find_by_id(remote.delete('id'))
40
+ u.update_attributes(res.remote)
41
+ if u.save
42
+ res.count = res.count + 1
43
+ else
44
+ res.failures = res.failures + 1
45
+ end
46
+ end
47
+ end
48
+ end
49
+ def to_log
50
+ reg.collect { |r| r.to_log }.join('\n')
51
+ end
52
+ alias :to_s :to_log
53
+ end
@@ -0,0 +1,52 @@
1
+ class Ixtlan::Core::Heartbeat
2
+
3
+ class Resource
4
+
5
+ attr_reader :local, :remote
6
+ attr_accessor :count, :failure
7
+
8
+ def initialize(local, remote)
9
+ @count = 0
10
+ @failures = 0
11
+ @local = local
12
+ @remote = remote
13
+ end
14
+
15
+ def to_log
16
+ "update #{@local} - total: #{@count + @failures} success: #{@count} failures: #{@failures}"
17
+ end
18
+ end
19
+
20
+ def initialize
21
+ @count = 0
22
+ @failures = 0
23
+ end
24
+
25
+ def reg
26
+ @reg ||= []
27
+ end
28
+
29
+ def register(local, remote)
30
+ reg << Resource.new(local, remote)
31
+ end
32
+
33
+ def beat
34
+ reg.each do |res|
35
+ last_update = res.local.maximum(:updated_at) || 2000.years.ago
36
+ last_update = last_update.strftime('%Y-%m-%d %H:%M:%S.') + ("%06d" % last_update.usec)
37
+ res.remote.get(:last_changes, :updated_at => last_update).each do |remote|
38
+ u = res.local.find_by_id(remote.delete('id'))
39
+ u.update_attributes(res.remote)
40
+ if u.save
41
+ res.count = res.count + 1
42
+ else
43
+ res.failures = res.failures + 1
44
+ end
45
+ end
46
+ end
47
+ end
48
+ def to_log
49
+ reg.collect { |r| r.to_log }.join('\n')
50
+ end
51
+ alias :to_s :to_log
52
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: resty-generators
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.7.0
5
+ version: 0.7.1
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-11-04 00:00:00 +05:30
13
+ date: 2011-11-20 00:00:00 +05:30
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -21,7 +21,7 @@ dependencies:
21
21
  requirements:
22
22
  - - ~>
23
23
  - !ruby/object:Gem::Version
24
- version: 0.1.3
24
+ version: 0.1.4
25
25
  type: :runtime
26
26
  version_requirements: *id001
27
27
  - !ruby/object:Gem::Dependency
@@ -107,9 +107,12 @@ files:
107
107
  - lib/generators/resty/setup/templates/Mavenfile~
108
108
  - lib/generators/resty/setup/templates/gwt.css
109
109
  - lib/generators/resty/setup/templates/user.rb
110
+ - lib/generators/resty/setup/templates/seeds.rb
111
+ - lib/generators/resty/setup/templates/heartbeat.rb~
110
112
  - lib/generators/resty/setup/templates/module.gwt.xml
111
113
  - lib/generators/resty/setup/templates/EntryPoint.java
112
114
  - lib/generators/resty/setup/templates/GinModule.java
115
+ - lib/generators/resty/setup/templates/seed.rb~
113
116
  - lib/generators/resty/setup/templates/sessions_controller.rb
114
117
  - lib/generators/resty/setup/templates/page.html~
115
118
  - lib/generators/resty/setup/templates/LoginView.ui.xml
@@ -124,7 +127,10 @@ files:
124
127
  - lib/generators/resty/setup/templates/LoginViewImpl.java~
125
128
  - lib/generators/resty/setup/templates/ActivityPlace.java~
126
129
  - lib/generators/resty/setup/templates/authentication.rb
130
+ - lib/generators/resty/setup/templates/create_users.rb
131
+ - lib/generators/resty/setup/templates/remote_user.rb
127
132
  - lib/generators/resty/setup/templates/ActivityFactory.java~
133
+ - lib/generators/resty/setup/templates/seeds.rb~
128
134
  - lib/generators/resty/setup/templates/session.rb~
129
135
  - lib/generators/resty/setup/templates/LoginActivity.java~
130
136
  - lib/generators/resty/setup/templates/ActivityPlace.java
@@ -134,6 +140,8 @@ files:
134
140
  - lib/generators/resty/setup/templates/LoginViewImpl.java
135
141
  - lib/generators/resty/setup/templates/LoginPlace.java
136
142
  - lib/generators/resty/setup/templates/session.rb
143
+ - lib/generators/resty/setup/templates/remote_user.rb~
144
+ - lib/generators/resty/setup/templates/heartbeat.rb
137
145
  - lib/generators/resty/setup/templates/SessionActivityPlaceActivityMapper.java
138
146
  - lib/generators/resty/setup/templates/ActivityFactory.java
139
147
  - lib/generators/resty/setup/templates/gitignore
@@ -179,6 +187,8 @@ files:
179
187
  - lib/generators/resty/templates/View.java~
180
188
  - lib/generators/resty/templates/Editor.java~
181
189
  - lib/generators/resty/templates/Activity.java~
190
+ - lib/ixtlan/core/heartbeat.rb~
191
+ - lib/ixtlan/core/heartbeat.rb
182
192
  - features/step_definitions/simple_steps.rb
183
193
  - features/generators.feature
184
194
  has_rdoc: true