jgrouper 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY.md CHANGED
@@ -1,8 +1,16 @@
1
1
  JGrouper History
2
2
  ================
3
3
 
4
- JGrouper v0.0.3
4
+ JGrouper v0.0.4
5
5
  ---------------
6
+ * Add *JGrouper::Group*
7
+ * Add *JGrouper::Group.find*
8
+ * Add *JGrouper::Group* support to *JGrouper::Shell*
9
+ * Extracted *JGrouper::Shell* to its own gem
10
+
11
+
12
+ 2012-08-17 JGrouper v0.0.3
13
+ --------------------------
6
14
  * Add *JGrouper::Shell*
7
15
  * Add *bin/jgrouper* interactive shell
8
16
  * Rename *JGrouper::Stem#root_stem* to *JGrouper::Stem#root*
data/README.rdoc CHANGED
@@ -35,6 +35,15 @@
35
35
  # Create child stem(s)
36
36
  child = stem.create 'foo:bar:baz'
37
37
 
38
+ === Groups
39
+
40
+ # Find by name
41
+ group = JGrouper::Group.find(name) do |group|
42
+ group.display_name # Group display name
43
+ group.name # Group name
44
+ group.uuid # Group UUID
45
+ end
46
+
38
47
  === Group Types
39
48
 
40
49
  # Create group type
@@ -44,9 +53,7 @@
44
53
  end
45
54
 
46
55
  # Find all group types
47
- group_types = JGrouper::GroupType.all do |group_type|
48
- ...
49
- end
56
+ group_types = JGrouper::GroupType.all { |group_type| ... }
50
57
 
51
58
  # Find group type
52
59
  JGrouper::GroupType.find(name)
@@ -88,5 +95,5 @@ https://github.com/blairc/jgrouper
88
95
 
89
96
  == See Also
90
97
 
91
- JGrouper::Shell, https://github.com/blairc/jgrouper-server, http://grouper.internet2.edu
98
+ JGrouper::Shell https://github.com/blairc/jgrouper-shell, JGrouper::Server https://github.com/blairc/jgrouper-server, http://grouper.internet2.edu
92
99
 
data/TODO.md CHANGED
@@ -3,18 +3,19 @@ JGrouper To Do
3
3
 
4
4
  JGrouper v0.0.4
5
5
  ---------------
6
- * Add *JGrouper::Group*
7
- * Add *JGrouper::Group.find(name)*
8
- * Add *JGrouper::Stem#add_group( name, display_name = nil )*
9
- * Add *JGrouper::Group.create( name, display_name = nil )*
10
6
  * Add *JGrouper::Group#types*
11
7
  * Add *JGrouper::Group#add_type*
12
- * Add *JGrouper::Group#members*
13
- * Add *JGrouper::Group#add_member(?)*
8
+ * Add *JGrouper::Stem#children( recurse = false )*
9
+ * Add *JGrouper::Stem#groups( recurse = false )*
10
+ * Add *JGrouper::Stem#stems( recurse = false )*
14
11
 
15
12
 
16
13
  Future
17
14
  ------
15
+ * Add *JGrouper::Stem#add_group( name, display_name = nil )*
16
+ * Add *JGrouper::Group.create( name, display_name = nil )*
17
+ * Add *JGrouper::Group#members*
18
+ * Add *JGrouper::Group#add_member(?)*
18
19
  * Add *JGrouper::Stem#delete( recurse = false )*
19
20
  * Add *JGrouper::Stem.delete( name, recurse = false )*
20
21
  * Add *JGrouper::Stem.find(uuid)*
@@ -46,8 +47,4 @@ Future
46
47
  * JGrouper::TestCase
47
48
  * JGrouper::Subject::TestCase
48
49
  * JGrouper::Subject::TestCase
49
- * Make *JGrouper::Shell* startup less chatty
50
- * Extract *JGrouper::Shell* to own gem?
51
- * Add *gsh* compatibility commands to *JGrouper::Shell*?
52
- * Should *JGrouper::Shell* be able to run scripts?
53
50
 
data/jgrouper.gemspec CHANGED
@@ -16,7 +16,6 @@ Gem::Specification.new do |gem|
16
16
  gem.version = JGrouper::VERSION
17
17
 
18
18
  gem.add_dependency 'json'
19
- gem.add_dependency 'pry'
20
19
 
21
20
  gem.add_development_dependency 'factory_girl', "~> 4.0"
22
21
  gem.add_development_dependency 'mocha'
@@ -0,0 +1,119 @@
1
+ module JGrouper # :nodoc:
2
+ #
3
+ # = JGrouper::Group - A Grouper group
4
+ #
5
+ class Group
6
+
7
+ attr_accessor :display_name, :name, :uuid
8
+
9
+ def initialize
10
+ @grouper_group = nil
11
+ yield self if block_given?
12
+ self
13
+ end
14
+
15
+ # XXX #
16
+ # XXX # Create child stem (along with missing intermediaries).
17
+ # XXX #
18
+ # XXX # # Create child stem 'foo'
19
+ # XXX # child = stem.add_stem 'foo'
20
+ # XXX #
21
+ # XXX # # Create child stem 'foo' with display name of 'Foo'
22
+ # XXX # child = stem.add_stem 'foo', 'Foo'
23
+ # XXX #
24
+ # XXX # # Create child stem 'foo:bar:baz' along with any missing intermediaries
25
+ # XXX # child = stem.add_stem 'foo:bar:baz'
26
+ # XXX #
27
+ # XXX #
28
+ # XXX def add_stem( name, display_name = nil )
29
+ # XXX # TODO What if names.size != display_names.size?
30
+ # XXX names = name.split ':'
31
+ # XXX display_names = display_name.nil? ? names.clone.split : display_name.split(':')
32
+ # XXX
33
+ # XXX name, display_name = names.shift, display_names.shift
34
+ # XXX
35
+ # XXX child = JGrouper::Stem.find self.name.empty? ? name : [ self.name, name ].join(':') # TODO Yuck
36
+ # XXX child = JGrouper::Stem.from_grouper @grouper_stem.addChildStem(name, display_name) if child.nil?
37
+ # XXX
38
+ # XXX # TODO What if child can't be created?
39
+ # XXX child = child.add_stem( names.join(':'), display_names.join(':') ) unless names.empty?
40
+ # XXX yield child if block_given?
41
+ # XXX child
42
+ # XXX end
43
+ # XXX
44
+ # XXX #
45
+ # XXX # Create stem (along with missing intermediaries).
46
+ # XXX #
47
+ # XXX # # Create top-level 'foo' stem
48
+ # XXX # stem = JGrouper::Stem.create 'foo'
49
+ # XXX #
50
+ # XXX # # Create top-level 'foo' stem with display name of 'Foo'
51
+ # XXX # stem = JGrouper::Stem.create 'foo', 'Foo'
52
+ # XXX #
53
+ # XXX # # Create 'foo:bar:baz' stem, along with any missing intermediaries
54
+ # XXX # stem = JGrouper::Stem.create 'foo:bar:baz'
55
+ # XXX #
56
+ # XXX def self.create( name, display_name = nil )
57
+ # XXX stem = root.add_stem name, display_name
58
+ # XXX yield stem if block_given?
59
+ # XXX stem
60
+ # XXX end
61
+
62
+ #
63
+ # Find group by name or returns +nil+.
64
+ #
65
+ # group = JGrouper::Group.find(name)
66
+ #
67
+ def self.find(name)
68
+ group = from_grouper GroupFinder.findByName( GrouperSession.startRootSession, name, false ) # XXX How to handle sessions?
69
+ yield group if block_given?
70
+ group
71
+ end
72
+
73
+ # XXX #
74
+ # XXX # Generate JGrouper::Stem instance from JSON by calling +JSON.parse(json_string)+
75
+ # XXX #
76
+ # XXX def self.json_create(json)
77
+ # XXX new do |stem|
78
+ # XXX stem.display_name = json['display_name']
79
+ # XXX stem.name = json['name']
80
+ # XXX stem.uuid = json['uuid']
81
+ # XXX end
82
+ # XXX end
83
+ # XXX
84
+ # XXX #
85
+ # XXX # Return JSON representation of JGrouper::Stem instance.
86
+ # XXX #
87
+ # XXX def to_json
88
+ # XXX {
89
+ # XXX :json_class => self.class.name,
90
+ # XXX :display_name => self.display_name,
91
+ # XXX :name => self.name,
92
+ # XXX :uuid => self.uuid
93
+ # XXX }.to_json
94
+ # XXX end
95
+
96
+ #
97
+ # Return String representation of JGrouper::Group instance.
98
+ #
99
+ def to_s
100
+ %w( name display_name uuid ).collect { |k| "#{k}=#{ self.send(k) }" }.join(' | ')
101
+ end
102
+
103
+
104
+ private
105
+
106
+ def self.from_grouper(grouper)
107
+ return nil if grouper.nil?
108
+ new do |group|
109
+ group.instance_variable_set :@grouper_group, grouper # XXX Is this even needed?
110
+
111
+ group.display_name = grouper.getDisplayName
112
+ group.name = grouper.getName
113
+ group.uuid = grouper.getUuid
114
+ end
115
+ end
116
+
117
+ end
118
+ end
119
+
@@ -1,3 +1,3 @@
1
1
  module JGrouper
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
data/lib/jgrouper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'java'
2
2
  require 'json'
3
3
 
4
+ require_relative 'jgrouper/group'
4
5
  require_relative 'jgrouper/group_type'
5
6
  require_relative 'jgrouper/stem'
6
7
  require_relative 'jgrouper/subject'
@@ -45,6 +46,15 @@ require_relative 'jgrouper/version'
45
46
  # # Create child stem(s)
46
47
  # child = stem.create 'foo:bar:baz'
47
48
  #
49
+ # === Groups
50
+ #
51
+ # # Find by name
52
+ # group = JGrouper::Group.find(name) do |group|
53
+ # group.display_name # Group display name
54
+ # group.name # Group name
55
+ # group.uuid # Group UUID
56
+ # end
57
+ #
48
58
  # === Group Types
49
59
  #
50
60
  # # Create group type
@@ -54,9 +64,7 @@ require_relative 'jgrouper/version'
54
64
  # end
55
65
  #
56
66
  # # Find all group types
57
- # group_types = JGrouper::GroupType.all do |group_type|
58
- # ...
59
- # end
67
+ # group_types = JGrouper::GroupType.all { |group_type| ... }
60
68
  #
61
69
  # # Find group type
62
70
  # JGrouper::GroupType.find(name)
@@ -98,7 +106,7 @@ require_relative 'jgrouper/version'
98
106
  #
99
107
  # == See Also
100
108
  #
101
- # JGrouper::Shell, https://github.com/blairc/jgrouper-server, http://grouper.internet2.edu
109
+ # JGrouper::Shell https://github.com/blairc/jgrouper-shell, JGrouper::Server https://github.com/blairc/jgrouper-server, http://grouper.internet2.edu
102
110
  #
103
111
  module JGrouper
104
112
 
@@ -119,6 +127,7 @@ module JGrouper
119
127
  # Test the above w/ GroupType?
120
128
  %w( edu.internet2.middleware.subject.SubjectNotFoundException
121
129
  edu.internet2.middleware.grouper.GrouperSession
130
+ edu.internet2.middleware.grouper.GroupFinder
122
131
  edu.internet2.middleware.grouper.SubjectFinder
123
132
  edu.internet2.middleware.grouper.StemFinder
124
133
  ).each { |klass| include_class klass }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jgrouper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-17 00:00:00.000000000 Z
12
+ date: 2012-10-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -27,22 +27,6 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: pry
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
30
  - !ruby/object:Gem::Dependency
47
31
  name: factory_girl
48
32
  requirement: !ruby/object:Gem::Requirement
@@ -142,8 +126,7 @@ dependencies:
142
126
  description: JRuby wrapper around the Internet2 Grouper API
143
127
  email:
144
128
  - blair.christensen@gmail.com
145
- executables:
146
- - jgrouper
129
+ executables: []
147
130
  extensions: []
148
131
  extra_rdoc_files: []
149
132
  files:
@@ -154,12 +137,11 @@ files:
154
137
  - README.rdoc
155
138
  - Rakefile
156
139
  - TODO.md
157
- - bin/jgrouper
158
140
  - jgrouper.gemspec
159
141
  - lib/jgrouper.rb
142
+ - lib/jgrouper/group.rb
160
143
  - lib/jgrouper/group_type.rb
161
144
  - lib/jgrouper/group_type/test_case.rb
162
- - lib/jgrouper/shell.rb
163
145
  - lib/jgrouper/stem.rb
164
146
  - lib/jgrouper/stem/test_case.rb
165
147
  - lib/jgrouper/subject.rb
data/bin/jgrouper DELETED
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env jruby
2
-
3
- # TODO Will this work post-installation?
4
-
5
- require_relative '../lib/jgrouper/shell'
6
- JGrouper::Shell.run!
7
-
8
- # vim: syntax=ruby
9
-
@@ -1,75 +0,0 @@
1
- require_relative '../jgrouper'
2
-
3
- require 'pry'
4
-
5
- module JGrouper # :nodoc:
6
- #
7
- # = JGrouper::Shell - JGrouper interactive shell
8
- #
9
- # == Usage
10
- #
11
- # # Launch
12
- # % jgrouper
13
- #
14
- # === Group Types
15
- #
16
- # Any JGrouper::GroupType methods, such as:
17
- #
18
- # JGrouper::Shell:0> group_type.all
19
- #
20
- # === Stems
21
- #
22
- # Any JGrouper::Stem methods, such as:
23
- #
24
- # JGrouper::Shell:0> stem.root_stem
25
- #
26
- # === Subjects
27
- #
28
- # Any JGrouper::Subject methods, such as:
29
- #
30
- # JGrouper::Shell:0> subject.root_subject
31
- #
32
- class Shell
33
-
34
- def initialize
35
- yield self if block_given?
36
- self
37
- end
38
-
39
- #
40
- # Access JGrouper::GroupType commands
41
- #
42
- def group_type
43
- JGrouper::GroupType
44
- end
45
-
46
- #
47
- # Start JGrouper shell
48
- #
49
- def self.run!
50
- JGrouper.home ENV['GROUPER_HOME'] if ENV['GROUPER_HOME']
51
- shell = new do |shell|
52
- Pry.start shell,
53
- :prompt => [ proc { |obj, nest_level| "#{obj.class.name}:#{nest_level}> " },
54
- proc { "> " }
55
- ]
56
- end
57
- end
58
-
59
- #
60
- # Access JGrouper::Stem commands
61
- #
62
- def stem
63
- JGrouper::Stem
64
- end
65
-
66
- #
67
- # Access JGrouper::Subject commands
68
- #
69
- def subject
70
- JGrouper::Subject
71
- end
72
-
73
- end
74
- end
75
-