| | |
| | | * |
| | | * |
| | | * Copyright 2006-2008 Sun Microsystems, Inc. |
| | | * Portions copyright 2013 ForgeRock AS |
| | | */ |
| | | package org.opends.server.loggers; |
| | | import org.opends.messages.Message; |
| | | |
| | | import static org.opends.messages.LoggerMessages.*; |
| | | import static org.opends.server.loggers.debug.DebugLogger.*; |
| | | import static org.opends.server.util.StaticUtils.*; |
| | | |
| | | import java.io.File; |
| | | import java.lang.reflect.Method; |
| | | import java.util.Arrays; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | import static org.opends.server.loggers.debug.DebugLogger.*; |
| | | import static org.opends.messages.LoggerMessages.*; |
| | | import org.opends.server.loggers.debug.DebugTracer; |
| | | import org.opends.server.types.DebugLogLevel; |
| | | import org.opends.server.types.ResultCode; |
| | | import org.opends.server.types.ConfigChangeResult; |
| | | import org.opends.server.types.DirectoryException; |
| | | import org.opends.server.admin.std.server.FreeDiskSpaceLogRetentionPolicyCfg; |
| | | import org.opends.messages.Message; |
| | | import org.opends.server.admin.server.ConfigurationChangeListener; |
| | | import org.opends.server.admin.std.server.FreeDiskSpaceLogRetentionPolicyCfg; |
| | | import org.opends.server.core.DirectoryServer; |
| | | import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString; |
| | | |
| | | import org.opends.server.loggers.debug.DebugTracer; |
| | | import org.opends.server.types.ConfigChangeResult; |
| | | import org.opends.server.types.DebugLogLevel; |
| | | import org.opends.server.types.DirectoryException; |
| | | import org.opends.server.types.ResultCode; |
| | | |
| | | /** |
| | | * This class implements a retention policy based on the free disk |
| | | * space available expressed as a percentage. This policy is only |
| | | * available on Java 6. |
| | | * This class implements a retention policy based on the free disk space |
| | | * available expressed as a percentage. |
| | | */ |
| | | public class FreeDiskSpaceRetentionPolicy implements |
| | | RetentionPolicy<FreeDiskSpaceLogRetentionPolicyCfg>, |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public void initializeLogRetentionPolicy( |
| | | FreeDiskSpaceLogRetentionPolicyCfg config) |
| | | { |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public boolean isConfigurationChangeAcceptable( |
| | | FreeDiskSpaceLogRetentionPolicyCfg config, |
| | | List<Message> unacceptableReasons) |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public ConfigChangeResult applyConfigurationChange( |
| | | FreeDiskSpaceLogRetentionPolicyCfg config) |
| | | { |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public File[] deleteFiles(FileNamingPolicy fileNamingPolicy) |
| | | throws DirectoryException |
| | | { |
| | |
| | | message); |
| | | } |
| | | |
| | | ArrayList<File> filesToDelete = new ArrayList<File>(); |
| | | List<File> filesToDelete = new ArrayList<File>(); |
| | | |
| | | if(files.length <= 0) |
| | | { |
| | |
| | | } |
| | | |
| | | long freeSpace = 0; |
| | | |
| | | try |
| | | { |
| | | // Use reflection to see use the getFreeSpace method if available. |
| | | // this method is only available on Java 6. |
| | | Method meth = File.class.getMethod("getFreeSpace", new Class[0]); |
| | | Object value = meth.invoke(files[0]); |
| | | freeSpace = ((Long) value).longValue(); |
| | | freeSpace = files[0].getFreeSpace(); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | return filesToDelete.toArray(new File[0]); |
| | | return filesToDelete.toArray(new File[filesToDelete.size()]); |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public String toString() |
| | | { |
| | | return "Free Disk Retention Policy " + config.dn().toString(); |