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 org.jclouds.Constants.PROPERTY_IDENTITY;
22
23 import java.net.URI;
24 import java.util.Map;
25
26 import javax.inject.Named;
27 import javax.inject.Singleton;
28
29 import org.jclouds.trmk.vcloud_0_8.domain.Catalog;
30 import org.jclouds.trmk.vcloud_0_8.domain.ReferenceType;
31
32 import com.google.common.base.Function;
33 import com.google.common.base.Predicate;
34 import com.google.common.base.Predicates;
35 import com.google.common.base.Supplier;
36 import com.google.common.base.Suppliers;
37 import com.google.common.collect.ImmutableMap;
38 import com.google.common.collect.ImmutableMap.Builder;
39 import com.google.inject.AbstractModule;
40 import com.google.inject.Injector;
41 import com.google.inject.Provides;
42
43
44
45
46
47 public class DefaultVCloudReferencesModule extends AbstractModule {
48
49 @Override
50 protected void configure() {
51
52 }
53
54 @Provides
55 @org.jclouds.trmk.vcloud_0_8.endpoints.Org
56 @Singleton
57 protected ReferenceType provideDefaultOrg(DefaultOrgForUser defaultOrgURIForUser,
58 @Named(PROPERTY_IDENTITY) String user) {
59 return defaultOrgURIForUser.apply(user);
60 }
61
62 @Provides
63 @Singleton
64 @org.jclouds.trmk.vcloud_0_8.endpoints.Org
65 protected Predicate<ReferenceType> provideDefaultOrgSelector(Injector i) {
66 return Predicates.alwaysTrue();
67 }
68
69 @Provides
70 @org.jclouds.trmk.vcloud_0_8.endpoints.TasksList
71 @Singleton
72 protected ReferenceType provideDefaultTasksList(DefaultTasksListForOrg defaultTasksListURIForOrg,
73 @org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultOrg) {
74 return defaultTasksListURIForOrg.apply(defaultOrg);
75 }
76
77 @Provides
78 @Singleton
79 @org.jclouds.trmk.vcloud_0_8.endpoints.TasksList
80 protected Predicate<ReferenceType> provideDefaultTasksListSelector(Injector i) {
81 return Predicates.alwaysTrue();
82 }
83
84 @Provides
85 @org.jclouds.trmk.vcloud_0_8.endpoints.Catalog
86 @Singleton
87 protected ReferenceType provideDefaultCatalog(DefaultCatalogForOrg defaultCatalogURIForOrg,
88 @org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultOrg) {
89 return defaultCatalogURIForOrg.apply(defaultOrg);
90 }
91
92 @Provides
93 @Singleton
94 @org.jclouds.trmk.vcloud_0_8.endpoints.Catalog
95 protected Predicate<ReferenceType> provideDefaultCatalogSelector(Injector i) {
96 return Predicates.alwaysTrue();
97 }
98
99 @Provides
100 @Singleton
101 protected Supplier<Map<URI, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>> provideCatalogsById(
102 Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>>> supplier) {
103 return Suppliers
104 .compose(
105 new Function<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>>, Map<URI, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>>() {
106
107 @Override
108 public Map<URI, ? extends Catalog> apply(Map<String, Map<String, ? extends Catalog>> arg0) {
109 Builder<URI, Catalog> builder = ImmutableMap.<URI, Catalog> builder();
110 for (Map<String, ? extends Catalog> v1 : arg0.values()) {
111 for (Catalog v2 : v1.values()) {
112 builder.put(v2.getHref(), v2);
113 }
114 }
115 return builder.build();
116 }
117
118 }, supplier);
119 }
120
121 @Provides
122 @org.jclouds.trmk.vcloud_0_8.endpoints.VDC
123 @Singleton
124 protected ReferenceType provideDefaultVDC(DefaultVDCForOrg defaultVDCURIForOrg,
125 @org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultOrg) {
126 return defaultVDCURIForOrg.apply(defaultOrg);
127 }
128
129 @Provides
130 @Singleton
131 @org.jclouds.trmk.vcloud_0_8.endpoints.VDC
132 protected Predicate<ReferenceType> provideDefaultVDCSelector(Injector i) {
133 return Predicates.alwaysTrue();
134 }
135
136 @Provides
137 @org.jclouds.trmk.vcloud_0_8.endpoints.Network
138 @Singleton
139 protected ReferenceType provideDefaultNetwork(DefaultNetworkForVDC defaultNetworkURIForVDC,
140 @org.jclouds.trmk.vcloud_0_8.endpoints.VDC ReferenceType defaultVDC) {
141 return defaultNetworkURIForVDC.apply(defaultVDC);
142 }
143
144 @Provides
145 @Singleton
146 @org.jclouds.trmk.vcloud_0_8.endpoints.Network
147 protected Predicate<ReferenceType> provideDefaultNetworkSelector(Injector i) {
148 return Predicates.alwaysTrue();
149 }
150 }