ManagedRepository.java 9.3 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.granite.jmx.annotation.OpenAnnotatedStandardMBean
 *  com.adobe.granite.license.License
 *  com.adobe.granite.license.ProductInfoService
 *  com.day.crx.CRXRepository
 *  javax.jcr.RepositoryException
 *  javax.jcr.UnsupportedRepositoryOperationException
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Property
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.Service
 *  org.apache.jackrabbit.oak.api.jmx.RepositoryManagementMBean
 */
package com.day.crx.sling.server.impl.jmx;

import com.adobe.granite.jmx.annotation.OpenAnnotatedStandardMBean;
import com.adobe.granite.license.License;
import com.adobe.granite.license.ProductInfoService;
import com.day.crx.CRXRepository;
import com.day.crx.core.backup.FileStoreBackupService;
import com.day.crx.sling.server.jmx.ClusterNodeInfoTabular;
import com.day.crx.sling.server.jmx.ManagedRepositoryMBean;
import com.day.crx.sling.server.jmx.SimpleMap;
import java.io.File;
import javax.jcr.RepositoryException;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.management.NotCompliantMBeanException;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.TabularData;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.jackrabbit.oak.api.jmx.RepositoryManagementMBean;

@Component
@Service(value={ManagedRepositoryMBean.class})
public class ManagedRepository
extends OpenAnnotatedStandardMBean
implements ManagedRepositoryMBean {
    @Property(value={"com.adobe.granite:type=Repository"})
    static final String JMX_OBJECTNAME = "jmx.objectname";
    @Property
    static final String REPOSITORY_CONFIG = "repository.config";
    @Property
    static final String BOOTSTRAP_PROPERTIES = "bootstrap.properties";
    @Reference
    private ProductInfoService productInfo;
    @Reference
    private CRXRepository repository;
    @Reference
    private FileStoreBackupService backup;
    @Reference
    private RepositoryManagementMBean repositoryManagementMBean;
    private Integer dataStoreGarbageCollectionDelay = 10;
    private Integer tarOptimizationDelay = 1;

    public ManagedRepository() throws NotCompliantMBeanException {
        super(ManagedRepositoryMBean.class);
    }

    @Override
    public String getName() {
        return "Granite Oak";
    }

    @Override
    public String getVersion() {
        return "0.3.0";
    }

    @Override
    public String getCustomerName() {
        License license = this.productInfo.getLicense();
        return license != null ? license.getCustomerName() : "";
    }

    @Override
    public String getLicenseKey() {
        License license = this.productInfo.getLicense();
        return license != null ? license.getDownloadId() : "";
    }

    @Override
    public Long getAvailableDiskSpace() {
        return 0;
    }

    @Override
    public Integer getMaximumNumberOfOpenFiles() {
        return 0;
    }

    @Override
    public Boolean getSessionTracker() {
        return Boolean.FALSE;
    }

    @Override
    public void setSessionTracker(Boolean tracker) {
    }

    @Override
    public TabularData getDescriptors() {
        SimpleMap map = new SimpleMap();
        for (String key : this.repository.getDescriptorKeys()) {
            String value = this.repository.getDescriptor(key);
            map.put(key, value);
        }
        return map.toTabularData();
    }

    @Override
    public String[] getWorkspaceNames() {
        return new String[]{"default"};
    }

    @Override
    public void createWorkspace(String name) throws RepositoryException {
        throw new UnsupportedRepositoryOperationException();
    }

    @Override
    public Integer getDataStoreGarbageCollectionDelay() {
        return this.dataStoreGarbageCollectionDelay;
    }

    @Override
    public void setDataStoreGarbageCollectionDelay(Integer delay) {
        this.dataStoreGarbageCollectionDelay = delay;
    }

    @Override
    public void runDataStoreGarbageCollection(Boolean delete) throws RepositoryException {
        this.repositoryManagementMBean.startDataStoreGC(delete == false);
    }

    @Override
    public Integer getBackupDelay() {
        return this.backup.getBackupDelay();
    }

    @Override
    public void setBackupDelay(Integer delay) {
        this.backup.setBackupDelay(delay);
    }

    @Override
    public Boolean getBackupInProgress() {
        return this.backup.getBackupInProgress();
    }

    @Override
    public Integer getBackupProgress() {
        return this.backup.getBackupProgress();
    }

    @Override
    public String getCurrentBackupTarget() {
        return this.backup.getCurrentBackupTarget();
    }

    @Override
    public Boolean getBackupWasSuccessful() {
        return this.backup.getBackupWasSuccessful();
    }

    @Override
    public String getBackupResult() {
        return this.backup.getBackupResult();
    }

    @Override
    public void startBackup(String target) throws RepositoryException {
        this.backup.startBackup(target);
    }

    @Override
    public void startBackup(String installDir, String target) throws RepositoryException {
        this.backup.startBackup(installDir, target);
    }

    @Override
    public void cancelBackup() {
        this.backup.cancelBackup();
    }

    @Override
    public void blockRepositoryWrites() throws RepositoryException {
        throw new UnsupportedRepositoryOperationException();
    }

    @Override
    public void unblockRepositoryWrites() {
    }

    @Override
    public Long getTarOptimizationRunningSince() {
        return 0;
    }

    @Override
    public Integer getTarOptimizationDelay() {
        return this.tarOptimizationDelay;
    }

    @Override
    public void setTarOptimizationDelay(Integer delay) {
        this.tarOptimizationDelay = delay;
    }

    @Override
    public void startTarOptimization() throws RepositoryException {
        throw new UnsupportedRepositoryOperationException();
    }

    @Override
    public void stopTarOptimization() throws RepositoryException {
        throw new UnsupportedRepositoryOperationException();
    }

    @Override
    public void tarIndexMerge(Boolean background) throws RepositoryException {
        throw new UnsupportedRepositoryOperationException();
    }

    @Override
    public TabularData getClusterProperties() {
        SimpleMap map = new SimpleMap();
        return map.toTabularData();
    }

    @Override
    public TabularData getClusterNodes() {
        ClusterNodeInfoTabular map = new ClusterNodeInfoTabular();
        return map.toTabularData();
    }

    @Override
    public String getClusterId() {
        return "";
    }

    @Override
    public String getClusterMasterId() {
        return "";
    }

    @Override
    public String getClusterNodeId() {
        return "";
    }

    @Override
    public Long getClusterNodeRevision() {
        return 0;
    }

    @Override
    public void becomeClusterMaster() throws RepositoryException {
        throw new UnsupportedRepositoryOperationException();
    }

    @Override
    public void joinCluster(String master, String username, String password) throws Exception {
        throw new UnsupportedRepositoryOperationException();
    }

    @Override
    public String getHomeDir() {
        return this.repository.getHomeDir().getPath();
    }

    @Override
    public String traversalCheck(String rootNodeName, Boolean logEach, Boolean fixInconsistencies) {
        return null;
    }

    @Override
    public String consistencyCheck(String rootNodeName, Boolean fixInconsistencies) {
        return null;
    }

    @Override
    public void nodeStoreRestore(String sourceDirectory) throws RepositoryException {
        this.backup.nodeStoreRestore(sourceDirectory);
    }

    @Override
    public String checkpoint(Long lifetime) {
        return this.backup.checkpoint(lifetime);
    }

    protected void bindProductInfo(ProductInfoService productInfoService) {
        this.productInfo = productInfoService;
    }

    protected void unbindProductInfo(ProductInfoService productInfoService) {
        if (this.productInfo == productInfoService) {
            this.productInfo = null;
        }
    }

    protected void bindRepository(CRXRepository cRXRepository) {
        this.repository = cRXRepository;
    }

    protected void unbindRepository(CRXRepository cRXRepository) {
        if (this.repository == cRXRepository) {
            this.repository = null;
        }
    }

    protected void bindBackup(FileStoreBackupService fileStoreBackupService) {
        this.backup = fileStoreBackupService;
    }

    protected void unbindBackup(FileStoreBackupService fileStoreBackupService) {
        if (this.backup == fileStoreBackupService) {
            this.backup = null;
        }
    }

    protected void bindRepositoryManagementMBean(RepositoryManagementMBean repositoryManagementMBean) {
        this.repositoryManagementMBean = repositoryManagementMBean;
    }

    protected void unbindRepositoryManagementMBean(RepositoryManagementMBean repositoryManagementMBean) {
        if (this.repositoryManagementMBean == repositoryManagementMBean) {
            this.repositoryManagementMBean = null;
        }
    }
}