1 /** 2 * This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 5 * 6 * If it is not possible or desirable to put the notice in a particular 7 * file, then You may include the notice in a location (such as a LICENSE 8 * file in a relevant directory) where a recipient would be likely to look 9 * for such a notice. 10 11 * 12 */ 13 14 /* --------------------------------------------------------------------------- 15 * U.S. Government, Department of the Army 16 * Army Materiel Command 17 * Research Development Engineering Command 18 * Communications Electronics Research Development and Engineering Center 19 * --------------------------------------------------------------------------- 20 */ 21 22 package org.miloss.fgsms.plugins.federation; 23 24 import java.util.List; 25 import java.util.concurrent.atomic.AtomicReference; 26 import org.miloss.fgsms.plugins.PluginCommon; 27 import org.miloss.fgsms.services.interfaces.common.NameValuePair; 28 import org.miloss.fgsms.services.interfaces.dataaccessservice.QuickStatWrapper; 29 import org.miloss.fgsms.services.interfaces.policyconfiguration.FederationPolicy; 30 import org.miloss.fgsms.services.interfaces.policyconfiguration.ServicePolicy; 31 32 /** 33 * Implementors provide the ability to publish summarized data from fgsms to 34 * an external system on a periodic basis. Non periodic federation publishers 35 * (such as a web service MUST also implement this interface. In this case, the 36 * Publish method does nothing. Constructor functions should be non blocking. 37 * 38 * @author AO 39 */ 40 public interface FederationInterface extends PluginCommon { 41 42 /** 43 * This is called by both the user interface as well as whenever someone 44 * attempts to add or change a service policy containing this federation 45 * target. 46 * 47 * @param fp the proposed federation policy 48 * @param outMessage returns the error message, if any. Null or empty string 49 * can be returned if there is no error. The message should be a human 50 * readable reason for why the policy is invalid or misconfigured. 51 * @return True if the configuration is valid, false otherwise 52 */ 53 public boolean ValidateConfiguration(FederationPolicy fp, AtomicReference<String> outMessage); 54 55 /** 56 * Called by a Quartz timer job 57 * 58 * @param pooled indicates where or not we are using pooled database 59 * connections 60 * @param data represents the last known data set for a web service, 61 * availability info for all policy types 62 * @param sp the complete service policy of the thing we are publishing 63 * @param fp the federation policy, which should allow users to dictate 64 * implementation specific parameters and settings 65 * @see org.miloss.fgsms.common.Utility.GetConfigurationDBConnection 66 */ 67 public void Publish(boolean pooled, QuickStatWrapper data, ServicePolicy sp, FederationPolicy fp); 68 69 70 }