All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jodconverter.office.PooledOfficeFactory Maven / Gradle / Ivy

The newest version!
package org.jodconverter.office;

import cn.patterncat.converter.JodConverterProperties;
import org.apache.commons.pool2.BasePooledObjectFactory;
import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.impl.DefaultPooledObject;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * Created by patterncat on 2017-10-22.
 */
public class PooledOfficeFactory extends BasePooledObjectFactory {

    final AtomicInteger portNumber = new AtomicInteger(2001);

    JodConverterProperties properties;

    public PooledOfficeFactory(JodConverterProperties properties) {
        this.properties = properties;
    }

    @Override
    public OfficeProcessManager create() throws Exception {
        //TODO CONFIG DEFAULT
        OfficeProcessManagerConfig config = new OfficeProcessManagerConfig();
        OfficeUrl officeurl = new OfficeUrl(portNumber.incrementAndGet());
        OfficeProcessManager officeProcessManager = new OfficeProcessManager(officeurl,config);
        // Listen to any connection events to the office instance.
        officeProcessManager.getConnection().addConnectionEventListener(new DefaultConnectionEventListener());
        officeProcessManager.startAndWait();
        return officeProcessManager;
    }

    @Override
    public PooledObject wrap(OfficeProcessManager obj) {
        return new DefaultPooledObject(obj);
    }

    @Override
    public void destroyObject(PooledObject p) throws Exception {
        OfficeProcessManager manager = p.getObject();
        manager.stopAndWait();
    }

    @Override
    public boolean validateObject(PooledObject p) {
        return super.validateObject(p);
    }

    @Override
    public void activateObject(PooledObject p) throws Exception {
        super.activateObject(p);
    }

    @Override
    public void passivateObject(PooledObject p) throws Exception {
        super.passivateObject(p);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy