Skip to content

Commit e4ad93d

Browse files
Jeka1978JBaruch
authored andcommitted
create directory
security permission target
1 parent 1ef8667 commit e4ad93d

File tree

11 files changed

+219
-16
lines changed

11 files changed

+219
-16
lines changed

api/src/main/java/org/jfrog/artifactory/client/Security.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package org.jfrog.artifactory.client;
22

3+
import org.jfrog.artifactory.client.model.Group;
4+
import org.jfrog.artifactory.client.model.PermissionTarget;
35
import org.jfrog.artifactory.client.model.User;
46
import org.jfrog.artifactory.client.model.builder.SecurityBuilders;
57

68
import java.util.Collection;
9+
import java.util.List;
710

811
/**
912
* Date: 10/18/12
@@ -15,14 +18,28 @@ public interface Security {
1518

1619
final static String SECURITY_API = "/api/security/";
1720
final static String SECURITY_USERS_API = SECURITY_API + "users";
21+
final static String SECURITY_PERMISSIONS = SECURITY_API + "permissions";
22+
final static String SECURITY_USER_GROUPS_API = SECURITY_API + "groups";
1823

1924
SecurityBuilders builders();
2025

2126
Collection<String> userNames();
2227

2328
User user(String name);
2429

30+
Group group(String name);
31+
32+
List<String> groupNames();
33+
34+
PermissionTarget permissionTarget(String name);
35+
36+
List<String> permissionTargets();
37+
2538
void createOrUpdate(User user);
2639

40+
void createOrUpdateGroup(Group group);
41+
2742
String deleteUser(String name);
43+
44+
String deleteGroup(String name);
2845
}

api/src/main/java/org/jfrog/artifactory/client/model/PermissionTarget.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ public interface PermissionTarget {
1212
String getIncludesPattern();
1313
String getExcludesPattern();
1414
List<String> getRepositories();
15+
1516
List<ItemPermission> getItemPermissions();
1617
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.jfrog.artifactory.client.model.builder;
2+
3+
import org.jfrog.artifactory.client.model.Group;
4+
5+
/**
6+
* Created by Jeka on 06/12/13.
7+
*/
8+
public interface GroupBuilder {
9+
10+
GroupBuilder name(String name);
11+
12+
GroupBuilder autoJoin(boolean autoJoin);
13+
14+
GroupBuilder description(String description);
15+
16+
Group build();
17+
18+
}

api/src/main/java/org/jfrog/artifactory/client/model/builder/SecurityBuilders.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
public interface SecurityBuilders {
1313
UserBuilder userBuilder();
1414

15+
GroupBuilder groupBuilder();
16+
1517
UserBuilder builderFrom(User from);
1618

1719
PermissionTargetBuilder permissionTargetBuilder();

services/src/main/groovy/org/jfrog/artifactory/client/impl/SecurityImpl.groovy

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@ package org.jfrog.artifactory.client.impl
33
import com.fasterxml.jackson.core.type.TypeReference
44
import groovyx.net.http.ContentType
55
import org.jfrog.artifactory.client.Security
6+
import org.jfrog.artifactory.client.model.Group
7+
import org.jfrog.artifactory.client.model.PermissionTarget
68
import org.jfrog.artifactory.client.model.User
79
import org.jfrog.artifactory.client.model.builder.SecurityBuilders
810
import org.jfrog.artifactory.client.model.builder.impl.SecurityBuildersImpl
11+
import org.jfrog.artifactory.client.model.impl.GroupImpl
12+
import org.jfrog.artifactory.client.model.impl.PermissionTargetImpl
913
import org.jfrog.artifactory.client.model.impl.UserImpl
1014

1115
/**
@@ -39,13 +43,48 @@ class SecurityImpl implements Security {
3943
artifactory.get("${SECURITY_USERS_API}/$name", ContentType.JSON, new TypeReference<UserImpl>() {})
4044
}
4145

46+
@Override
47+
Group group(String name) {
48+
artifactory.get("${SECURITY_USER_GROUPS_API}/$name", ContentType.JSON, new TypeReference<GroupImpl>() {})
49+
}
50+
51+
@Override
52+
PermissionTarget permissionTarget(String name) {
53+
artifactory.get("${SECURITY_PERMISSIONS}/$name", ContentType.JSON, new TypeReference<PermissionTargetImpl>() {})
54+
55+
}
56+
57+
@Override
58+
List<String> groupNames() {
59+
def groups = artifactory.get("${SECURITY_USER_GROUPS_API}", ContentType.JSON)
60+
def groupNames = groups.collect { it.name }
61+
groupNames
62+
}
63+
64+
@Override
65+
List<String> permissionTargets() {
66+
def permissionTargets = artifactory.get("${SECURITY_PERMISSIONS}", ContentType.JSON)
67+
def permissionTargetNames = permissionTargets.collect { it.name }
68+
return permissionTargetNames
69+
}
70+
4271
@Override
4372
void createOrUpdate(User user) {
4473
artifactory.put("${SECURITY_USERS_API}/${user.name}", [:], ContentType.ANY, null, ContentType.JSON, user)
4574
}
4675

76+
@Override
77+
void createOrUpdateGroup(Group group) {
78+
artifactory.put("${SECURITY_USER_GROUPS_API}/${group.name}", [:], ContentType.ANY, null, ContentType.JSON, group)
79+
}
80+
4781
@Override
4882
String deleteUser(String name) {
4983
artifactory.delete("${SECURITY_USERS_API}/$name")
5084
}
85+
86+
@Override
87+
String deleteGroup(String name) {
88+
artifactory.delete("${SECURITY_USER_GROUPS_API}/$name")
89+
}
5190
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package org.jfrog.artifactory.client.model.builder.impl
2+
3+
import org.jfrog.artifactory.client.model.Group
4+
import org.jfrog.artifactory.client.model.builder.GroupBuilder
5+
import org.jfrog.artifactory.client.model.impl.GroupImpl
6+
7+
/**
8+
* Created by Jeka on 08/12/13.
9+
*/
10+
class GroupBuilderImpl implements GroupBuilder {
11+
String name
12+
String description
13+
boolean autoJoin
14+
15+
@Override
16+
GroupBuilder name(String name) {
17+
this.name = name
18+
this
19+
}
20+
21+
@Override
22+
GroupBuilder autoJoin(boolean autoJoin) {
23+
this.autoJoin = autoJoin
24+
return this
25+
}
26+
27+
@Override
28+
GroupBuilder description(String description) {
29+
this.description = description
30+
return this
31+
}
32+
33+
@Override
34+
Group build() {
35+
new GroupImpl(name, autoJoin, description)
36+
}
37+
}

services/src/main/groovy/org/jfrog/artifactory/client/model/builder/impl/SecurityBuildersImpl.groovy

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.jfrog.artifactory.client.model.builder.impl
22

33
import org.jfrog.artifactory.client.model.PermissionTarget
44
import org.jfrog.artifactory.client.model.User
5+
import org.jfrog.artifactory.client.model.builder.GroupBuilder
56
import org.jfrog.artifactory.client.model.builder.PermissionTargetBuilder
67
import org.jfrog.artifactory.client.model.builder.SecurityBuilders
78
import org.jfrog.artifactory.client.model.builder.UserBuilder
@@ -23,7 +24,12 @@ class SecurityBuildersImpl implements SecurityBuilders {
2324

2425
@Override
2526
UserBuilder userBuilder() {
26-
return new UserBuilderImpl()
27+
new UserBuilderImpl()
28+
}
29+
30+
@Override
31+
GroupBuilder groupBuilder() {
32+
new GroupBuilderImpl()
2733
}
2834

2935
@Override

services/src/main/java/org/jfrog/artifactory/client/model/impl/GroupImpl.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ protected GroupImpl(String name) {
1414
super(name);
1515
}
1616

17-
public GroupImpl(String name, boolean autoJoin, String description) {
17+
private GroupImpl() {
18+
super(null);
19+
}
20+
21+
private GroupImpl(String name, boolean autoJoin, String description) {
1822
super(name);
1923
this.autoJoin = autoJoin;
2024
this.description = description;

services/src/main/java/org/jfrog/artifactory/client/model/impl/PermissionTargetImpl.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.jfrog.artifactory.client.model.impl;
22

3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
34
import org.jfrog.artifactory.client.model.ItemPermission;
45
import org.jfrog.artifactory.client.model.PermissionTarget;
56

@@ -9,13 +10,19 @@
910
* @author jbaruch
1011
* @since 26/11/12
1112
*/
13+
@JsonIgnoreProperties("principals")
1214
public class PermissionTargetImpl implements PermissionTarget {
1315

14-
private final String name;
15-
private final String includesPattern;
16-
private final String excludesPattern;
17-
private final List<String> repositories;
18-
private final List<ItemPermission> itemPermissions;
16+
private String name;
17+
private String includesPattern;
18+
private String excludesPattern;
19+
private List<String> repositories;
20+
// @JsonIgnore this 2 lines of code can be used instead of annotation above the class
21+
// private List<String> principals;
22+
private List<ItemPermission> itemPermissions;
23+
24+
public PermissionTargetImpl() {
25+
}
1926

2027
public PermissionTargetImpl(String name, String includesPattern, String excludesPattern, List<String> repositories, List<ItemPermission> itemPermissions) {
2128
this.name = name;
@@ -45,4 +52,5 @@ public List<String> getRepositories() {
4552
public List<ItemPermission> getItemPermissions() {
4653
return itemPermissions;
4754
}
55+
4856
}

services/src/main/java/org/jfrog/artifactory/client/model/impl/UserImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ private UserImpl(String name) {
3535
super(name);
3636
}
3737

38+
private UserImpl() {
39+
super(null);
40+
}
41+
42+
3843
public String getEmail() {
3944
return email;
4045
}

0 commit comments

Comments
 (0)