Package com.salesforce.ide.core.factories

Source Code of com.salesforce.ide.core.factories.ToolingFactory

/*******************************************************************************
* Copyright (c) 2014 Salesforce.com, inc..
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Salesforce.com, inc. - initial API and implementation
******************************************************************************/
package com.salesforce.ide.core.factories;

import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import com.salesforce.ide.core.project.ForceProject;
import com.salesforce.ide.core.remote.Connection;
import com.salesforce.ide.core.remote.ForceConnectionException;
import com.salesforce.ide.core.remote.ForceRemoteException;
import com.salesforce.ide.core.remote.ToolingStubExt;

/**
* Encapsulates functionality related to creating, storing and removing Tooling API stubs per project.
*
* @see MetadataFactory
* @author nchen
*
*/
public class ToolingFactory extends BaseFactory {
    private static ConcurrentMap<ForceProject, ToolingStubExt> toolingStubs = new ConcurrentHashMap<ForceProject, ToolingStubExt>();

    public ToolingFactory() {
        super();
    }

    public ToolingStubExt getToolingStubExtInstance() {
        return new ToolingStubExt();
    }

    private ToolingStubExt getNewToolingStubExt(ForceProject forceProject) throws ForceConnectionException,
            ForceRemoteException {
        ToolingStubExt stub = getToolingStubExtInstance();
        Connection connection = getConnectionFactory().getConnection(forceProject);
        stub.initializeToolingConnection(connection);
        return stub;
    }

    public ToolingStubExt refreshToolingStubExt(Connection connection) throws ForceRemoteException {
        ForceProject project = connection.getForceProject();
        ToolingStubExt stub = toolingStubs.get(project);
        if (stub != null) {
            stub.initializeToolingConnection(connection);
        }
        return stub;
    }

    public boolean removeToolingStubExt(ForceProject project) {
        ToolingStubExt stub = toolingStubs.remove(project);
        return stub != null ? true : false;
    }

    public ToolingStubExt getToolingStubExt(Connection connection) throws ForceConnectionException,
            ForceRemoteException {
        return getToolingStubExt(connection.getForceProject());
    }

    public ToolingStubExt getToolingStubExt(ForceProject forceProject) throws ForceConnectionException,
            ForceRemoteException {
        ToolingStubExt stub = toolingStubs.get(forceProject);

        if (stub == null) {
            stub = getNewToolingStubExt(forceProject);
            cacheToolingStubExt(forceProject, stub);
        }
        return stub;
    }

    private void cacheToolingStubExt(ForceProject forceProject, ToolingStubExt stub) {
        toolingStubs.put(forceProject, stub);
    }

    public void clearCache() {
        toolingStubs.clear();
    }
}
TOP

Related Classes of com.salesforce.ide.core.factories.ToolingFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.