org.springframework.ide.eclipse.boot.dash.model.BootDashModelContext.java Source code

Java tutorial

Introduction

Here is the source code for org.springframework.ide.eclipse.boot.dash.model.BootDashModelContext.java

Source

/*******************************************************************************
 * Copyright (c) 2015, 2016 Pivotal Software, 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
 * https://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Pivotal Software, Inc. - initial API and implementation
 *******************************************************************************/
package org.springframework.ide.eclipse.boot.dash.model;

import java.util.regex.Pattern;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.runtime.IPath;
import org.eclipse.debug.core.ILaunchManager;
import org.springframework.ide.eclipse.boot.core.cli.BootInstallManager;
import org.springframework.ide.eclipse.boot.dash.cloudfoundry.debug.ssh.SshTunnelFactory;
import org.springframework.ide.eclipse.boot.dash.model.runtargettypes.RunTargetType;
import org.springframework.ide.eclipse.boot.pstore.IPropertyStore;
import org.springframework.ide.eclipse.boot.pstore.IScopedPropertyStore;
import org.springsource.ide.eclipse.commons.livexp.core.LiveExpression;

/**
 * @author Kris De Volder
 */
public interface BootDashModelContext {

    //TODO: many places where this being passed around it is accompanited by a BootDashViewModel.
    // These two parameters passed together represent the real 'BootDashModelContext'.
    //So the proper thing to do is:
    //
    //  - rename this interface to BootDashViewModelContext (it represents the context of the viewmodel not of the indivual sections within
    //  - create a new class or interface called BootDashModelContext which contains
    //      - a BootDashModelContext
    //      - a BootDashViewModel
    //  - where both of these types occur together, replace with a reference to the new BootDashViewModelContext

    IWorkspace getWorkspace();

    ILaunchManager getLaunchManager();

    IPath getStateLocation();

    IScopedPropertyStore<IProject> getProjectProperties();

    IScopedPropertyStore<RunTargetType> getRunTargetProperties();

    IPropertyStore getViewProperties();

    SecuredCredentialsStore getSecuredCredentialsStore();

    /**
     * A store for properties which is suitable for sensitive data with basic protection.
     * I.e. backed by a unencrypted file which is made only accessible to the current user
     * and protected by the os. The file is not encrypted in any way.
     */
    IPropertyStore getPrivatePropertyStore();

    void log(Exception e);

    /**
     *!!!!Warning!!!!<p>
     * This is 'injected' but in fact the injected filter is only used for
     * triggering refreshes. It is not actually used to filter projects.
     * Projects are filtered indirectly via static method BootPropertyTester.isBootProject.
     * that means that injecting a different filter than the one used by that method
     * will not work as expected.
     */
    LiveExpression<Pattern> getBootProjectExclusion();

    BootInstallManager getBootInstallManager();

    UserInteractions getUi();

    SshTunnelFactory getSshTunnelFactory();

}