/* See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * Esri Inc. licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.esri.gpt.sdisuite; import com.esri.gpt.framework.collection.StringAttributeMap; import com.esri.gpt.framework.security.identity.NotAuthorizedException; import com.esri.gpt.framework.security.principal.User; /** * Provides an integration context for sde.suite components. */ public abstract class IntegrationContext { /** instance variables ====================================================== */ private StringAttributeMap config = new StringAttributeMap(); /** constructors ============================================================ */ /** Default constructor */ public IntegrationContext() {} /** properties ============================================================== */ /** * Gets the configuration parameters. * @return the configuration parameters */ public StringAttributeMap getConfig() { return this.config; } /** * Sets the configuration parameters. * @param config the configuration parameters */ public void setConfig(StringAttributeMap config) { this.config = config; } /** methods ================================================================= */ /** * Authorizes access to a URL. * @param url the URL * @param user the active user * @param username the username * @param password the password * @param licenseReturnUrl the return URL (called following license negotiation) * @return the integration response * @throws NotAuthorizedException if authorization for the supplied URL was denied * @throws Exception if a processing exception occurs */ public abstract IntegrationResponse checkUrl(String url, User user, String username, String password, String licenseReturnUrl) throws NotAuthorizedException, Exception; /** * Ensure that the active user has a valid SAML token. * <br/>This would typically be called following login. * @param user the active user * @throws Exception if an exception occurs */ public abstract void ensureToken(User user) throws Exception; /** * Base64 encodes the SAML token associated with the active user. * <br/>This would typically be called prior to launching an sdi.suite component. * @param user the active user * @throws Exception if an exception occurs */ public abstract String getBase64EncodedToken(User user) throws Exception; /** * Gets the license id associated with a license reference. * @param licenseReference the license reference * @return the license id * @throws Exception if an exception occurs */ public String getLicenseId(String licenseReference) throws Exception { return null; } /** * Gets the username encoded within a SAML token. * <br/>This would typically be called when an external client executes a Geoportal * request (e.g. when the smart editor saves, a SAML token is passed as part of the * SOAP request) * @param samlToken the SAML token * @throws Exception if an exception occurs */ public abstract String getUsernameFromSAMLToken(String samlToken) throws Exception; /** * Provides an opportunity to initialize additional user properties. * <br/>Called following login (?? following authentication ?? prior to ??). * @param user the active user * @throws Exception if an exception occurs */ public abstract void initializeUser(User user) throws Exception; /** * Executed on web-app shutdown. * @throws Exception if an exception occurs */ public abstract void shutdown() throws Exception; }