1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.jclouds.trmk.vcloud_0_8.config;
20
21 import static com.google.common.base.Preconditions.checkNotNull;
22 import static com.google.common.base.Preconditions.checkState;
23 import static org.jclouds.trmk.vcloud_0_8.reference.VCloudConstants.PROPERTY_VCLOUD_DEFAULT_ORG;
24
25 import javax.inject.Inject;
26 import javax.inject.Singleton;
27
28 import org.jclouds.config.ValueOfConfigurationKeyOrNull;
29 import org.jclouds.trmk.vcloud_0_8.domain.ReferenceType;
30 import org.jclouds.trmk.vcloud_0_8.domain.VCloudSession;
31 import org.jclouds.trmk.vcloud_0_8.endpoints.Org;
32 import org.jclouds.trmk.vcloud_0_8.suppliers.OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault;
33
34 import com.google.common.base.Function;
35 import com.google.common.base.Predicate;
36 import com.google.common.base.Supplier;
37
38
39
40
41
42 @Singleton
43 public class DefaultOrgForUser implements Function<String, ReferenceType> {
44
45 private final OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault selector;
46 private final Supplier<VCloudSession> sessionSupplier;
47
48 @Inject
49 public DefaultOrgForUser(ValueOfConfigurationKeyOrNull valueOfConfigurationKeyOrNull,
50 @Org Predicate<ReferenceType> defaultSelector, Supplier<VCloudSession> sessionSupplier) {
51 this.selector = new OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault(checkNotNull(
52 valueOfConfigurationKeyOrNull, "valueOfConfigurationKeyOrNull"), PROPERTY_VCLOUD_DEFAULT_ORG, checkNotNull(
53 defaultSelector, "defaultSelector"));
54 this.sessionSupplier = checkNotNull(sessionSupplier, "sessionSupplier");
55 }
56
57 @Override
58 public ReferenceType apply(String user) {
59 VCloudSession session = sessionSupplier.get();
60 checkState(session != null, "could not retrieve Session at %s", user);
61 return selector.apply(session.getOrgs().values());
62 }
63
64 }