<type>CacheConfiguration</type>
</association>
</field>
+ <field>
+ <name>fileLockConfiguration</name>
+ <description>the FileLocking configuration</description>
+ <version>1.4.0+</version>
+ <association>
+ <type>FileLockConfiguration</type>
+ </association>
+ </field>
</fields>
</class>
</fields>
</class>
+ <class>
+ <name>FileLockConfiguration</name>
+ <version>1.4.0+</version>
+ <description>File Locking configuration.</description>
+ <fields>
+ <field>
+ <name>skipLocking</name>
+ <description>skipping the locking mechanism</description>
+ <version>1.4.0+</version>
+ <type>boolean</type>
+ <defaultValue>true</defaultValue>
+ </field>
+ <field>
+ <name>lockingTimeout</name>
+ <description>maximum time to wait to get the file lock (0 infinite)</description>
+ <version>1.4.0+</version>
+ <type>int</type>
+ <defaultValue>0</defaultValue>
+ </field>
+ </fields>
+ </class>
<class>
<name>CacheConfiguration</name>
* @author Olivier Lamy
* @since 1.4-M4
*/
-@XmlRootElement( name = "archivaRuntimeConfiguration" )
+@XmlRootElement(name = "archivaRuntimeConfiguration")
public class ArchivaRuntimeConfiguration
{
private CacheConfiguration urlFailureCacheConfiguration;
+ /**
+ * @since 2.0.0
+ */
+ private FileLockConfiguration fileLockConfiguration;
+
public ArchivaRuntimeConfiguration()
{
// no op
this.urlFailureCacheConfiguration = urlFailureCacheConfiguration;
}
+ public FileLockConfiguration getFileLockConfiguration()
+ {
+ return fileLockConfiguration;
+ }
+
+ public void setFileLockConfiguration( FileLockConfiguration fileLockConfiguration )
+ {
+ this.fileLockConfiguration = fileLockConfiguration;
+ }
+
@Override
public String toString()
{
- final StringBuilder sb = new StringBuilder();
- sb.append( "ArchivaRuntimeConfiguration" );
- sb.append( "{urlFailureCacheConfiguration=" ).append( urlFailureCacheConfiguration );
+ final StringBuilder sb = new StringBuilder( "ArchivaRuntimeConfiguration{" );
+ sb.append( "urlFailureCacheConfiguration=" ).append( urlFailureCacheConfiguration );
+ sb.append( ", fileLockConfiguration=" ).append( fileLockConfiguration );
sb.append( '}' );
return sb.toString();
}
+
}
--- /dev/null
+// =================== DO NOT EDIT THIS FILE ====================
+// Generated by Modello 1.7,
+// any modifications will be overwritten.
+// ==============================================================
+
+package org.apache.archiva.admin.model.beans;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+
+/**
+ * File Locking configuration.
+ *
+ * @since 2.0.0
+ */
+@XmlRootElement( name = "fileLockConfiguration" )
+public class FileLockConfiguration
+ implements Serializable
+{
+
+ /**
+ * skipping the locking mechanism.
+ */
+ private boolean skipLocking = true;
+
+ /**
+ * maximum time to wait to get the file lock (0 infinite).
+ */
+ private int lockingTimeout = 0;
+
+
+ /**
+ * Get maximum time to wait to get the file lock (0 infinite).
+ *
+ * @return int
+ */
+ public int getLockingTimeout()
+ {
+ return this.lockingTimeout;
+ }
+
+ /**
+ * Get skipping the locking mechanism.
+ *
+ * @return boolean
+ */
+ public boolean isSkipLocking()
+ {
+ return this.skipLocking;
+ }
+
+ /**
+ * Set maximum time to wait to get the file lock (0 infinite).
+ *
+ * @param lockingTimeout
+ */
+ public void setLockingTimeout( int lockingTimeout )
+ {
+ this.lockingTimeout = lockingTimeout;
+ }
+
+ /**
+ * Set skipping the locking mechanism.
+ *
+ * @param skipLocking
+ */
+ public void setSkipLocking( boolean skipLocking )
+ {
+ this.skipLocking = skipLocking;
+ }
+
+}
import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.beans.ArchivaRuntimeConfiguration;
import org.apache.archiva.admin.model.beans.CacheConfiguration;
+import org.apache.archiva.admin.model.beans.FileLockConfiguration;
import org.apache.archiva.admin.model.runtime.ArchivaRuntimeConfigurationAdmin;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.configuration.Configuration;
* @author Olivier Lamy
* @since 1.4-M4
*/
-@Service("archivaRuntimeConfigurationAdmin#default")
+@Service( "archivaRuntimeConfigurationAdmin#default" )
public class DefaultArchivaRuntimeConfigurationAdmin
implements ArchivaRuntimeConfigurationAdmin
{
boolean save = false;
+ // NPE free
+ if ( archivaRuntimeConfiguration.getFileLockConfiguration() == null )
+ {
+ archivaRuntimeConfiguration.setFileLockConfiguration( new FileLockConfiguration() );
+ }
+
// NPE free
if ( archivaRuntimeConfiguration.getUrlFailureCacheConfiguration() == null )
{
}
+ if ( archivaRuntimeConfiguration.getFileLockConfiguration() != null )
+ {
+ res.setFileLockConfiguration(
+ new BeanReplicator().replicateBean( archivaRuntimeConfiguration.getFileLockConfiguration(),
+ org.apache.archiva.configuration.FileLockConfiguration.class ) );
+ }
+
return res;
}
}
import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.beans.ArchivaRuntimeConfiguration;
import org.apache.archiva.admin.model.beans.CacheConfiguration;
+import org.apache.archiva.admin.model.beans.FileLockConfiguration;
import org.apache.archiva.admin.model.runtime.ArchivaRuntimeConfigurationAdmin;
+import org.apache.archiva.common.filelock.FileLockManager;
import org.apache.archiva.redback.components.cache.Cache;
import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
import org.apache.archiva.rest.api.services.ArchivaRuntimeConfigurationService;
@Named( value = "cache#url-failures-cache" )
private Cache usersCache;
+ @Inject
+ @Named( value = "fileLockManager#default" )
+ private FileLockManager fileLockManager;
+
public ArchivaRuntimeConfiguration getArchivaRuntimeConfiguration()
throws ArchivaRestServiceException
{
usersCache.setMaxElementsOnDisk( cacheConfiguration.getMaxElementsOnDisk() );
usersCache.setMaxElementsInMemory( cacheConfiguration.getMaxElementsInMemory() );
}
+
+ FileLockConfiguration fileLockConfiguration = archivaRuntimeConfiguration.getFileLockConfiguration();
+ if ( fileLockConfiguration != null )
+ {
+ fileLockManager.setTimeout( fileLockConfiguration.getLockingTimeout() );
+ fileLockConfiguration.setSkipLocking( fileLockConfiguration.isSkipLocking() );
+ }
+
+
}
catch ( RepositoryAdminException e )
{