1 package org.apache.archiva.admin.repository.runtime;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import net.sf.beanlib.provider.replicator.BeanReplicator;
22 import org.apache.archiva.admin.model.RepositoryAdminException;
23 import org.apache.archiva.admin.model.beans.ArchivaRuntimeConfiguration;
24 import org.apache.archiva.admin.model.beans.CacheConfiguration;
25 import org.apache.archiva.admin.model.runtime.ArchivaRuntimeConfigurationAdmin;
26 import org.apache.archiva.configuration.ArchivaConfiguration;
27 import org.apache.archiva.configuration.Configuration;
28 import org.apache.archiva.configuration.IndeterminateConfigurationException;
29 import org.apache.archiva.redback.components.cache.Cache;
30 import org.apache.archiva.redback.components.registry.RegistryException;
31 import org.springframework.stereotype.Service;
32
33 import javax.annotation.PostConstruct;
34 import javax.inject.Inject;
35 import javax.inject.Named;
36
37
38
39
40
41 @Service("archivaRuntimeConfigurationAdmin#default")
42 public class DefaultArchivaRuntimeConfigurationAdmin
43 implements ArchivaRuntimeConfigurationAdmin
44 {
45
46 @Inject
47 private ArchivaConfiguration archivaConfiguration;
48
49 @Inject
50 @Named( value = "cache#url-failures-cache" )
51 private Cache urlFailureCache;
52
53 @PostConstruct
54 public void initialize()
55 throws RepositoryAdminException
56 {
57 ArchivaRuntimeConfiguration archivaRuntimeConfiguration = getArchivaRuntimeConfiguration();
58
59 boolean save = false;
60
61
62 if ( archivaRuntimeConfiguration.getUrlFailureCacheConfiguration() == null )
63 {
64 archivaRuntimeConfiguration.setUrlFailureCacheConfiguration( new CacheConfiguration() );
65 }
66
67
68 if ( archivaRuntimeConfiguration.getUrlFailureCacheConfiguration().getTimeToIdleSeconds() < 0 )
69 {
70 archivaRuntimeConfiguration.getUrlFailureCacheConfiguration().setTimeToIdleSeconds(
71 urlFailureCache.getTimeToIdleSeconds() );
72 save = true;
73
74 }
75 urlFailureCache.setTimeToIdleSeconds(
76 archivaRuntimeConfiguration.getUrlFailureCacheConfiguration().getTimeToIdleSeconds() );
77
78 if ( archivaRuntimeConfiguration.getUrlFailureCacheConfiguration().getTimeToLiveSeconds() < 0 )
79 {
80 archivaRuntimeConfiguration.getUrlFailureCacheConfiguration().setTimeToLiveSeconds(
81 urlFailureCache.getTimeToLiveSeconds() );
82 save = true;
83
84 }
85 urlFailureCache.setTimeToLiveSeconds(
86 archivaRuntimeConfiguration.getUrlFailureCacheConfiguration().getTimeToLiveSeconds() );
87
88 if ( archivaRuntimeConfiguration.getUrlFailureCacheConfiguration().getMaxElementsInMemory() < 0 )
89 {
90 archivaRuntimeConfiguration.getUrlFailureCacheConfiguration().setMaxElementsInMemory(
91 urlFailureCache.getMaxElementsInMemory() );
92 save = true;
93 }
94 urlFailureCache.setMaxElementsInMemory(
95 archivaRuntimeConfiguration.getUrlFailureCacheConfiguration().getMaxElementsInMemory() );
96
97 if ( archivaRuntimeConfiguration.getUrlFailureCacheConfiguration().getMaxElementsOnDisk() < 0 )
98 {
99 archivaRuntimeConfiguration.getUrlFailureCacheConfiguration().setMaxElementsOnDisk(
100 urlFailureCache.getMaxElementsOnDisk() );
101 save = true;
102 }
103 urlFailureCache.setMaxElementsOnDisk(
104 archivaRuntimeConfiguration.getUrlFailureCacheConfiguration().getMaxElementsOnDisk() );
105
106 if ( save )
107 {
108 updateArchivaRuntimeConfiguration( archivaRuntimeConfiguration );
109 }
110
111 }
112
113 public ArchivaRuntimeConfiguration getArchivaRuntimeConfiguration()
114 throws RepositoryAdminException
115 {
116 return build( archivaConfiguration.getConfiguration().getArchivaRuntimeConfiguration() );
117 }
118
119 public void updateArchivaRuntimeConfiguration( ArchivaRuntimeConfiguration archivaRuntimeConfiguration )
120 throws RepositoryAdminException
121 {
122 Configuration configuration = archivaConfiguration.getConfiguration();
123 configuration.setArchivaRuntimeConfiguration( build( archivaRuntimeConfiguration ) );
124 try
125 {
126 archivaConfiguration.save( configuration );
127 }
128 catch ( RegistryException e )
129 {
130 throw new RepositoryAdminException( e.getMessage(), e );
131 }
132 catch ( IndeterminateConfigurationException e )
133 {
134 throw new RepositoryAdminException( e.getMessage(), e );
135 }
136 }
137
138 protected ArchivaRuntimeConfiguration build(
139 org.apache.archiva.configuration.ArchivaRuntimeConfiguration archivaRuntimeConfiguration )
140 {
141 if ( archivaRuntimeConfiguration == null )
142 {
143 return new ArchivaRuntimeConfiguration();
144 }
145
146 ArchivaRuntimeConfiguration res =
147 new BeanReplicator().replicateBean( archivaRuntimeConfiguration, ArchivaRuntimeConfiguration.class );
148
149 if ( archivaRuntimeConfiguration.getUrlFailureCacheConfiguration() != null )
150 {
151
152 res.setUrlFailureCacheConfiguration(
153 new BeanReplicator().replicateBean( archivaRuntimeConfiguration.getUrlFailureCacheConfiguration(),
154 CacheConfiguration.class ) );
155
156 }
157
158 return res;
159 }
160
161 protected org.apache.archiva.configuration.ArchivaRuntimeConfiguration build(
162 ArchivaRuntimeConfiguration archivaRuntimeConfiguration )
163 {
164 if ( archivaRuntimeConfiguration == null )
165 {
166 return new org.apache.archiva.configuration.ArchivaRuntimeConfiguration();
167 }
168
169 org.apache.archiva.configuration.ArchivaRuntimeConfiguration res =
170 new BeanReplicator().replicateBean( archivaRuntimeConfiguration,
171 org.apache.archiva.configuration.ArchivaRuntimeConfiguration.class );
172
173 if ( archivaRuntimeConfiguration.getUrlFailureCacheConfiguration() != null )
174 {
175
176 res.setUrlFailureCacheConfiguration(
177 new BeanReplicator().replicateBean( archivaRuntimeConfiguration.getUrlFailureCacheConfiguration(),
178 org.apache.archiva.configuration.CacheConfiguration.class ) );
179
180 }
181
182 return res;
183 }
184 }
185
186