001/* 002 * (C) Copyright 2006-2018 Nuxeo (http://nuxeo.com/) and others. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 * 016 * Contributors: 017 * Bogdan Stefanescu 018 * Damien Metzler (Leroy Merlin, http://www.leroymerlin.fr/) 019 */ 020package org.nuxeo.runtime.test.runner; 021 022import java.io.File; 023import java.net.URISyntaxException; 024import java.net.URL; 025import java.util.List; 026import java.util.Properties; 027import java.util.Set; 028 029import org.nuxeo.osgi.OSGiAdapter; 030import org.nuxeo.runtime.model.RuntimeContext; 031import org.nuxeo.runtime.test.WorkingDirectoryConfigurator; 032 033/** 034 * TODO: Move this to org.nuxeo.runtime package 035 * 036 * @author <a href="mailto:[email protected]">Bogdan Stefanescu</a> 037 */ 038public interface RuntimeHarness { 039 040 /** 041 * Gets the framework working directory. 042 */ 043 File getWorkingDir(); 044 045 /** 046 * Resume the runtime 047 */ 048 void fireFrameworkStarted() throws Exception; 049 050 /** 051 * Deploys a whole OSGI bundle. 052 * <p> 053 * The lookup is first done on symbolic name, as set in <code>MANIFEST.MF</code> and then falls back to the bundle 054 * url (e.g., <code>nuxeo-platform-search-api</code>) for backwards compatibility. 055 * 056 * @param bundle the symbolic name 057 */ 058 void deployBundle(String bundle) throws Exception; 059 060 /** 061 * Undeploys a contribution from a given bundle. 062 * <p> 063 * The path will be relative to the bundle root. Example: <code> 064 * undeployContrib("org.nuxeo.ecm.core", "OSGI-INF/CoreExtensions.xml") 065 * </code> 066 * 067 * @param bundle the bundle 068 * @param contrib the contribution 069 */ 070 void undeployContrib(String bundle, String contrib) throws Exception; 071 072 /** 073 * @deprecated since 10.1, use {@link #deployContrib(String, String)} 074 */ 075 @Deprecated 076 RuntimeContext deployTestContrib(String bundle, URL contrib) throws Exception; 077 078 /** 079 * Deploys an XML contribution from outside a bundle. 080 * <p> 081 * This should be used by tests wiling to deploy test contribution as part of a real bundle. 082 * <p> 083 * The bundle owner is important since the contribution may depend on resources deployed in that bundle. 084 * <p> 085 * Note that the owner bundle MUST be an already deployed bundle. 086 * 087 * @param bundle the bundle that becomes the contribution owner 088 * @param contrib the contribution to deploy as part of the given bundle 089 * @deprecated since 10.1, use {@link #deployContrib(String, String)} 090 */ 091 @Deprecated 092 RuntimeContext deployTestContrib(String bundle, String contrib) throws Exception; 093 094 /** 095 * Deploys a contribution from a given bundle. 096 * <p> 097 * The path will be relative to the bundle root. Example: <code> 098 * deployContrib("org.nuxeo.ecm.core", "OSGI-INF/CoreExtensions.xml") 099 * </code> 100 * <p> 101 * For compatibility reasons the name of the bundle may be a jar name, but this use is discouraged and deprecated. 102 * 103 * @param bundle the name of the bundle to peek the contrib in 104 * @param contrib the path to contrib in the bundle. 105 */ 106 void deployContrib(String bundle, String contrib) throws Exception; 107 108 void start() throws Exception; 109 110 void stop() throws Exception; 111 112 boolean isStarted(); 113 114 /** 115 * Deploys a subset of a Bundle defined per the targetExtensions parameter 116 * 117 * @param bundle the name of the component 118 * @param targetExtensions Set of allowed TargetExtensions in the final contribution 119 * @since 9.1 120 */ 121 RuntimeContext deployPartial(String bundle, Set<TargetExtensions> targetExtensions) throws Exception; 122 123 /** 124 * @deprecated since 10.2, unused and badly implemented 125 */ 126 @Deprecated 127 void deployFolder(File folder, ClassLoader loader) throws Exception; 128 129 void addWorkingDirectoryConfigurator(WorkingDirectoryConfigurator config); 130 131 /** 132 * Framework properties for variable injections 133 * 134 * @since 5.4.2 135 * @deprecated since 10.2, unused and useless 136 */ 137 @Deprecated 138 Properties getProperties(); 139 140 /** 141 * Runtime context for deployment 142 * 143 * @since 5.4.2 144 */ 145 RuntimeContext getContext(); 146 147 /** 148 * OSGI bridge 149 * 150 * @since 5.4.2 151 */ 152 OSGiAdapter getOSGiAdapter(); 153 154 /** 155 * @since 5.5 156 * @deprecated since 10.2, unused and useless 157 */ 158 @Deprecated 159 boolean isRestart(); 160 161 /** 162 * @since 5.5 163 * @throws Exception 164 * @deprecated since 10.2, unused and useless 165 */ 166 @Deprecated 167 void restart() throws Exception; 168 169 /** 170 * @throws URISyntaxException 171 * @since 5.7 172 * @deprecated since 10.2, unused and useless 173 */ 174 @Deprecated 175 List<String> getClassLoaderFiles() throws URISyntaxException; 176 177}