├── .github
├── dependabot.yml
└── workflows
│ └── maven.yml
├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── bom
└── pom.xml
├── container-api
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── org
│ │ └── jboss
│ │ └── forge
│ │ └── furnace
│ │ ├── ContainerStatus.java
│ │ ├── Furnace.java
│ │ ├── addons
│ │ ├── Addon.java
│ │ ├── AddonCompatibilityStrategy.java
│ │ ├── AddonDependency.java
│ │ ├── AddonFilter.java
│ │ ├── AddonId.java
│ │ ├── AddonRegistry.java
│ │ ├── AddonStatus.java
│ │ └── AddonView.java
│ │ ├── event
│ │ ├── EventException.java
│ │ ├── EventManager.java
│ │ ├── PostStartup.java
│ │ └── PreShutdown.java
│ │ ├── exception
│ │ └── ContainerException.java
│ │ ├── lifecycle
│ │ ├── AddonLifecycleProvider.java
│ │ └── ControlType.java
│ │ ├── lock
│ │ ├── LockManager.java
│ │ └── LockMode.java
│ │ ├── repositories
│ │ ├── AddonDependencyEntry.java
│ │ ├── AddonRepository.java
│ │ ├── AddonRepositoryMode.java
│ │ └── MutableAddonRepository.java
│ │ ├── services
│ │ └── Imported.java
│ │ ├── spi
│ │ ├── ContainerLifecycleListener.java
│ │ ├── ExportedInstance.java
│ │ ├── FurnaceProvider.java
│ │ ├── ListenerRegistration.java
│ │ └── ServiceRegistry.java
│ │ ├── util
│ │ ├── AddonCompatibilityStrategies.java
│ │ ├── AddonFilters.java
│ │ ├── Addons.java
│ │ ├── Annotations.java
│ │ ├── Assert.java
│ │ ├── Callables.java
│ │ ├── ClassLoaders.java
│ │ ├── Iterators.java
│ │ ├── Lists.java
│ │ ├── OperatingSystemUtils.java
│ │ ├── Predicate.java
│ │ ├── SecurityActions.java
│ │ ├── Sets.java
│ │ ├── Specialized.java
│ │ ├── Streams.java
│ │ ├── Strings.java
│ │ ├── ValuedVisitor.java
│ │ ├── Visitor.java
│ │ ├── Weighted.java
│ │ └── WeightedComparator.java
│ │ └── versions
│ │ ├── ComparableVersion.java
│ │ ├── DefaultVersionRange.java
│ │ ├── EmptyVersion.java
│ │ ├── EmptyVersionRange.java
│ │ ├── MultipleVersionRange.java
│ │ ├── SingleVersion.java
│ │ ├── SingleVersionRange.java
│ │ ├── Version.java
│ │ ├── VersionException.java
│ │ ├── VersionRange.java
│ │ └── Versions.java
│ └── test
│ └── java
│ └── org
│ └── jboss
│ └── forge
│ └── furnace
│ ├── AddonIdTest.java
│ ├── util
│ ├── OperatingSystemUtilsTest.java
│ └── StringsTest.java
│ └── versions
│ ├── SingleVersionTest.java
│ └── VersionsTest.java
├── container-tests
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── test
│ │ │ └── org
│ │ │ └── jboss
│ │ │ └── forge
│ │ │ └── furnace
│ │ │ └── mocks
│ │ │ ├── MockImpl1.java
│ │ │ ├── MockImpl2.java
│ │ │ ├── MockInterface.java
│ │ │ ├── SubMockImpl1.java
│ │ │ └── services
│ │ │ ├── MockService.java
│ │ │ ├── MockServiceConsumer.java
│ │ │ └── MockServicePayload.java
│ └── resources
│ │ └── META-INF
│ │ └── beans.xml
│ └── test
│ ├── java
│ └── test
│ │ └── org
│ │ └── jboss
│ │ └── forge
│ │ └── furnace
│ │ ├── api
│ │ ├── AddonArchiveDefaultSmokeTest.java
│ │ ├── AddonArchiveSmokeTest.java
│ │ ├── ExportedInstanceApiTest.java
│ │ ├── LockManagerDeadlockTest.java
│ │ └── TestModeTest.java
│ │ ├── classpath
│ │ ├── AppleScriptTest.java
│ │ ├── CORBALookupTest.java
│ │ ├── ForgeGetVersionIsCallableTest.java
│ │ ├── ForgeSetArgsTest.java
│ │ ├── JAXBLookupTest.java
│ │ ├── JavaxSoundLookupTest.java
│ │ ├── NashornTest.java
│ │ ├── SunJDKLookupTest.java
│ │ ├── XATransactionLookupTest.java
│ │ └── XPathLookupTest.java
│ │ ├── harness
│ │ ├── AddonDependenciesDeploymentsTest.java
│ │ └── AssumptionViolatedTest.java
│ │ ├── lifecycle
│ │ ├── ContainerLifecycleListenerTest.java
│ │ ├── DuplicateAddonLifecycleProviderTest.java
│ │ ├── MockAddonLifecycleProvider.java
│ │ ├── MockAddonLifecycleProvider2.java
│ │ ├── PostStartupEventTest.java
│ │ ├── PreShutdownEventTest.java
│ │ ├── RecordingEventManager.java
│ │ └── TestLifecycleListener.java
│ │ ├── repositories
│ │ ├── AddonRepositoryLoadingTest.java
│ │ ├── MultipleRepositoryLoadingTest.java
│ │ ├── StrictModeDisabledTest.java
│ │ └── StrictModeEnabledByDefaultTest.java
│ │ ├── services
│ │ ├── ImportedLookupTest.java
│ │ ├── ImportedTest.java
│ │ └── ServiceLookupTest.java
│ │ ├── spi
│ │ ├── AddonDeploymentEnhancerTest.java
│ │ └── MockAddonDeploymentScenarioEnhancer.java
│ │ ├── util
│ │ ├── FurnaceDisableStrictModeDeploymentListener.java
│ │ ├── FurnaceVersion_2_14_0_DeploymentListener.java
│ │ └── TestRepositoryDeploymentListener.java
│ │ └── views
│ │ ├── MultipleRepositoryTest.java
│ │ └── MultipleRepositoryViewTest.java
│ └── resources
│ ├── META-INF
│ └── services
│ │ └── org.jboss.forge.arquillian.spi.AddonDeploymentScenarioEnhancer
│ ├── profiles
│ └── settings.xml
│ └── repository
│ ├── org
│ └── jboss
│ │ └── forge
│ │ └── furnace
│ │ └── furnace-api
│ │ ├── 9999.9.9.Final
│ │ ├── furnace-api-9999.9.9.Final-sources.jar
│ │ ├── furnace-api-9999.9.9.Final-sources.jar.md5
│ │ ├── furnace-api-9999.9.9.Final-sources.jar.sha1
│ │ ├── furnace-api-9999.9.9.Final.jar
│ │ ├── furnace-api-9999.9.9.Final.jar.md5
│ │ ├── furnace-api-9999.9.9.Final.jar.sha1
│ │ ├── furnace-api-9999.9.9.Final.pom
│ │ ├── furnace-api-9999.9.9.Final.pom.md5
│ │ └── furnace-api-9999.9.9.Final.pom.sha1
│ │ └── maven-metadata-local.xml
│ └── test
│ ├── indirect_dep
│ ├── 1.0.0.Final
│ │ ├── indirect_dep-1.0.0.Final-forge-addon.jar
│ │ ├── indirect_dep-1.0.0.Final.jar
│ │ └── indirect_dep-1.0.0.Final.pom
│ └── maven-metadata-local.xml
│ ├── lib
│ ├── 1.0.0.Final
│ │ ├── lib-1.0.0.Final.jar
│ │ └── lib-1.0.0.Final.pom
│ └── maven-metadata-local.xml
│ ├── no_dep
│ ├── 1.0.0.Final
│ │ ├── no_dep-1.0.0.Final-forge-addon.jar
│ │ ├── no_dep-1.0.0.Final.jar
│ │ └── no_dep-1.0.0.Final.pom
│ ├── 1.0.1.Final
│ │ ├── no_dep-1.0.1.Final-forge-addon.jar
│ │ ├── no_dep-1.0.1.Final.jar
│ │ └── no_dep-1.0.1.Final.pom
│ ├── 1.1.0.Final
│ │ ├── no_dep-1.1.0.Final-forge-addon.jar
│ │ ├── no_dep-1.1.0.Final.jar
│ │ └── no_dep-1.1.0.Final.pom
│ ├── 1.1.1.Final
│ │ ├── no_dep-1.1.1.Final-forge-addon.jar
│ │ ├── no_dep-1.1.1.Final.jar
│ │ └── no_dep-1.1.1.Final.pom
│ ├── 1.1.2-SNAPSHOT
│ │ ├── no_dep-1.1.2-SNAPSHOT-forge-addon.jar
│ │ ├── no_dep-1.1.2-SNAPSHOT.jar
│ │ └── no_dep-1.1.2-SNAPSHOT.pom
│ ├── 2.0.0.Final
│ │ ├── no_dep-2.0.0.Final-forge-addon.jar
│ │ ├── no_dep-2.0.0.Final.jar
│ │ └── no_dep-2.0.0.Final.pom
│ └── maven-metadata-local.xml
│ ├── one_dep
│ ├── 1.0.0.Final
│ │ ├── one_dep-1.0.0.Final-forge-addon.jar
│ │ ├── one_dep-1.0.0.Final.jar
│ │ └── one_dep-1.0.0.Final.pom
│ ├── 2.0.0.Final
│ │ ├── one_dep-2.0.0.Final-forge-addon.jar
│ │ ├── one_dep-2.0.0.Final.jar
│ │ └── one_dep-2.0.0.Final.pom
│ └── maven-metadata-local.xml
│ ├── one_dep_a
│ ├── 1.0.0.Final
│ │ ├── one_dep_a-1.0.0.Final-forge-addon.jar
│ │ ├── one_dep_a-1.0.0.Final.jar
│ │ └── one_dep_a-1.0.0.Final.pom
│ └── maven-metadata-local.xml
│ ├── one_dep_incompatible_version
│ ├── 9999.0.0.Final
│ │ ├── one_dep_incompatible_version-9999.0.0.Final-forge-addon.jar
│ │ ├── one_dep_incompatible_version-9999.0.0.Final.jar
│ │ └── one_dep_incompatible_version-9999.0.0.Final.pom
│ └── maven-metadata-local.xml
│ ├── one_dep_lib
│ ├── 1.0.0.Final
│ │ ├── one_dep_lib-1.0.0.Final-forge-addon.jar
│ │ ├── one_dep_lib-1.0.0.Final.jar
│ │ └── one_dep_lib-1.0.0.Final.pom
│ └── maven-metadata-local.xml
│ └── two_deps
│ ├── 1.0.0.Final
│ ├── two_deps-1.0.0.Final-forge-addon.jar
│ ├── two_deps-1.0.0.Final.jar
│ └── two_deps-1.0.0.Final.pom
│ └── maven-metadata-local.xml
├── container
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── org
│ │ │ └── jboss
│ │ │ └── forge
│ │ │ └── furnace
│ │ │ └── impl
│ │ │ ├── FurnaceImpl.java
│ │ │ ├── LoggingRepair.java
│ │ │ ├── addons
│ │ │ ├── AbstractFileSystemAddonRepository.java
│ │ │ ├── AddonDependencyImpl.java
│ │ │ ├── AddonImpl.java
│ │ │ ├── AddonLifecycleManager.java
│ │ │ ├── AddonLoader.java
│ │ │ ├── AddonRegistryImpl.java
│ │ │ ├── AddonRepositoryImpl.java
│ │ │ ├── AddonRepositoryStateStrategy.java
│ │ │ ├── AddonRepositoryStateStrategyImpl.java
│ │ │ ├── AddonRepositoryStorageStrategy.java
│ │ │ ├── AddonRepositoryStorageStrategyImpl.java
│ │ │ ├── AddonRunnable.java
│ │ │ ├── AddonState.java
│ │ │ ├── AddonStateManager.java
│ │ │ ├── CompositeDirtyChecker.java
│ │ │ ├── DirtyCheckableRepository.java
│ │ │ ├── DirtyChecker.java
│ │ │ ├── FileSystemDirtyChecker.java
│ │ │ ├── ImmutableAddonRepository.java
│ │ │ ├── ImportedImpl.java
│ │ │ ├── LazyDirtyChecker.java
│ │ │ ├── MissingAddonDependencyImpl.java
│ │ │ ├── MutableAddonRepositoryStateStrategy.java
│ │ │ ├── MutableAddonRepositoryStorageStrategy.java
│ │ │ ├── NullServiceRegistry.java
│ │ │ ├── StartEnabledAddonCallable.java
│ │ │ ├── StopAddonCallable.java
│ │ │ └── VersionDirtyChecker.java
│ │ │ ├── event
│ │ │ ├── AddonViewEventManager.java
│ │ │ └── NullEventManager.java
│ │ │ ├── graph
│ │ │ ├── AddonDependencyEdge.java
│ │ │ ├── AddonDependencyEdgeNameProvider.java
│ │ │ ├── AddonGraph.java
│ │ │ ├── AddonVertex.java
│ │ │ ├── AddonVertexNameProvider.java
│ │ │ ├── CompleteAddonGraph.java
│ │ │ ├── MasterGraph.java
│ │ │ ├── MasterGraphChangeHandler.java
│ │ │ ├── OptimizedAddonGraph.java
│ │ │ └── PrintGraphTraversalListener.java
│ │ │ ├── lock
│ │ │ ├── DeadlockError.java
│ │ │ └── LockManagerImpl.java
│ │ │ ├── modules
│ │ │ ├── AddonModuleFileCache.java
│ │ │ ├── AddonModuleIdentifierCache.java
│ │ │ ├── AddonModuleLoader.java
│ │ │ ├── ModuleSpecProvider.java
│ │ │ └── providers
│ │ │ │ ├── AbstractModuleSpecProvider.java
│ │ │ │ ├── AppleScriptClasspathSpec.java
│ │ │ │ ├── CORBAClasspathSpec.java
│ │ │ │ ├── FurnaceContainerSpec.java
│ │ │ │ ├── JAXBJDKClasspathSpec.java
│ │ │ │ ├── NashornJDKClasspathSpec.java
│ │ │ │ ├── SunJDKClasspathSpec.java
│ │ │ │ ├── SystemClasspathSpec.java
│ │ │ │ ├── XATransactionJDKClasspathSpec.java
│ │ │ │ └── XPathJDKClasspathSpec.java
│ │ │ └── util
│ │ │ ├── ExceptionFuture.java
│ │ │ ├── Files.java
│ │ │ └── NullFuture.java
│ └── resources
│ │ └── META-INF
│ │ └── services
│ │ ├── org.jboss.forge.furnace.Furnace
│ │ └── org.jboss.forge.furnace.impl.modules.ModuleSpecProvider
│ └── test
│ ├── java
│ └── org
│ │ └── jboss
│ │ └── forge
│ │ └── furnace
│ │ ├── AddonRepositoryImplTest.java
│ │ ├── FurnaceImplTest.java
│ │ ├── impl
│ │ └── addons
│ │ │ └── AddonRepositoryStateStrategyImplTest.java
│ │ ├── mock
│ │ ├── AnnotatedWithRemote.java
│ │ ├── ExtendsRemoteInterface.java
│ │ ├── InheritsRemote.java
│ │ ├── InheritsRemoteFromExtendedInterface.java
│ │ ├── InheritsRemoteFromSuperClassInheriting.java
│ │ ├── MockAnnotation.java
│ │ ├── MockInterface.java
│ │ ├── MockLockManager.java
│ │ ├── MockMethodAnnotation.java
│ │ ├── SuperClassAnnotatedWithRemote.java
│ │ └── SuperClassInheritsFromInterface.java
│ │ └── util
│ │ └── AnnotationsTest.java
│ └── resources
│ └── invalid.xml
├── manager
├── api
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── org
│ │ └── jboss
│ │ └── forge
│ │ └── furnace
│ │ └── manager
│ │ ├── AddonManager.java
│ │ └── request
│ │ ├── AddonActionRequest.java
│ │ ├── DeployRequest.java
│ │ ├── DisableRequest.java
│ │ ├── EnableRequest.java
│ │ ├── InstallRequest.java
│ │ ├── RemoveRequest.java
│ │ └── UpdateRequest.java
├── impl
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── org
│ │ │ └── jboss
│ │ │ └── forge
│ │ │ └── furnace
│ │ │ └── manager
│ │ │ └── impl
│ │ │ ├── AddonManagerImpl.java
│ │ │ ├── ShallowAddonInfo.java
│ │ │ └── request
│ │ │ ├── AbstractAddonActionRequest.java
│ │ │ ├── AddonActionRequestFactory.java
│ │ │ ├── ConfigurationScanListener.java
│ │ │ ├── DeployRequestImpl.java
│ │ │ ├── DisableRequestImpl.java
│ │ │ ├── EnableRequestImpl.java
│ │ │ ├── InstallRequestImpl.java
│ │ │ ├── RemoveRequestImpl.java
│ │ │ └── UpdateRequestImpl.java
│ │ └── resources
│ │ └── META-INF
│ │ └── beans.xml
├── pom.xml
├── resolver
│ ├── maven
│ │ ├── pom.xml
│ │ └── src
│ │ │ ├── main
│ │ │ ├── java
│ │ │ │ └── org
│ │ │ │ │ └── jboss
│ │ │ │ │ └── forge
│ │ │ │ │ └── furnace
│ │ │ │ │ └── manager
│ │ │ │ │ └── maven
│ │ │ │ │ ├── ClasspathWorkspaceReader.java
│ │ │ │ │ ├── JULMavenTransferListener.java
│ │ │ │ │ ├── LazyAuthenticationSelector.java
│ │ │ │ │ ├── LogTransferListener.java
│ │ │ │ │ ├── ManualWagonProvider.java
│ │ │ │ │ ├── MavenContainer.java
│ │ │ │ │ ├── MavenOperationException.java
│ │ │ │ │ ├── addon
│ │ │ │ │ ├── AddonDependencySelector.java
│ │ │ │ │ ├── AddonDependencyTraverser.java
│ │ │ │ │ ├── AddonInfoBuilder.java
│ │ │ │ │ ├── LazyAddonInfo.java
│ │ │ │ │ └── MavenAddonDependencyResolver.java
│ │ │ │ │ ├── result
│ │ │ │ │ └── MavenResponseBuilder.java
│ │ │ │ │ └── util
│ │ │ │ │ └── MavenRepositories.java
│ │ │ └── resources
│ │ │ │ └── META-INF
│ │ │ │ └── services
│ │ │ │ └── org.jboss.forge.furnace.manager.spi.AddonDependencyResolver
│ │ │ └── test
│ │ │ ├── java
│ │ │ └── org
│ │ │ │ └── jboss
│ │ │ │ └── forge
│ │ │ │ └── furnace
│ │ │ │ └── manager
│ │ │ │ ├── AddonDependencyResolverTest.java
│ │ │ │ ├── MavenAddonDependencyResolverTest.java
│ │ │ │ └── maven
│ │ │ │ └── util
│ │ │ │ └── MavenRepositoriesTest.java
│ │ │ └── resources
│ │ │ ├── profiles
│ │ │ ├── mirror-settings.xml
│ │ │ ├── resolver-settings.xml
│ │ │ └── settings.xml
│ │ │ └── repository
│ │ │ └── test
│ │ │ ├── furnace_api_dep
│ │ │ ├── 1.0.0-SNAPSHOT
│ │ │ │ ├── furnace_api_dep-1.0.0-SNAPSHOT-forge-addon.jar
│ │ │ │ ├── furnace_api_dep-1.0.0-SNAPSHOT.jar
│ │ │ │ └── furnace_api_dep-1.0.0-SNAPSHOT.pom
│ │ │ ├── 1.0.0.Final
│ │ │ │ ├── furnace_api_dep-1.0.0.Final-forge-addon.jar
│ │ │ │ ├── furnace_api_dep-1.0.0.Final.jar
│ │ │ │ └── furnace_api_dep-1.0.0.Final.pom
│ │ │ └── maven-metadata.xml
│ │ │ ├── furnace_api_indirect_dep
│ │ │ ├── 1.0.0.Final
│ │ │ │ ├── furnace_api_indirect_dep-1.0.0.Final-forge-addon.jar
│ │ │ │ ├── furnace_api_indirect_dep-1.0.0.Final.jar
│ │ │ │ └── furnace_api_indirect_dep-1.0.0.Final.pom
│ │ │ └── maven-metadata.xml
│ │ │ ├── furnace_api_snapshot
│ │ │ ├── 1.0.0-SNAPSHOT
│ │ │ │ ├── furnace_api_snapshot-1.0.0-SNAPSHOT-forge-addon.jar
│ │ │ │ ├── furnace_api_snapshot-1.0.0-SNAPSHOT.jar
│ │ │ │ └── furnace_api_snapshot-1.0.0-SNAPSHOT.pom
│ │ │ └── maven-metadata.xml
│ │ │ ├── indirect_dep
│ │ │ ├── 1.0.0.Final
│ │ │ │ ├── indirect_dep-1.0.0.Final-forge-addon.jar
│ │ │ │ ├── indirect_dep-1.0.0.Final.jar
│ │ │ │ └── indirect_dep-1.0.0.Final.pom
│ │ │ └── maven-metadata.xml
│ │ │ ├── lib
│ │ │ ├── 1.0.0.Final
│ │ │ │ ├── lib-1.0.0.Final.jar
│ │ │ │ └── lib-1.0.0.Final.pom
│ │ │ └── maven-metadata.xml
│ │ │ ├── lib2
│ │ │ ├── 1.0.0.Final
│ │ │ │ ├── lib2-1.0.0.Final.jar
│ │ │ │ └── lib2-1.0.0.Final.pom
│ │ │ └── maven-metadata.xml
│ │ │ ├── no_dep
│ │ │ ├── 1.0.0.Final
│ │ │ │ ├── no_dep-1.0.0.Final-forge-addon.jar
│ │ │ │ ├── no_dep-1.0.0.Final.jar
│ │ │ │ └── no_dep-1.0.0.Final.pom
│ │ │ ├── 1.0.1.Final
│ │ │ │ ├── no_dep-1.0.1.Final-forge-addon.jar
│ │ │ │ ├── no_dep-1.0.1.Final.jar
│ │ │ │ └── no_dep-1.0.1.Final.pom
│ │ │ ├── 1.1.0.Final
│ │ │ │ ├── no_dep-1.1.0.Final-forge-addon.jar
│ │ │ │ ├── no_dep-1.1.0.Final.jar
│ │ │ │ └── no_dep-1.1.0.Final.pom
│ │ │ ├── 1.1.1.Final
│ │ │ │ ├── no_dep-1.1.1.Final-forge-addon.jar
│ │ │ │ ├── no_dep-1.1.1.Final.jar
│ │ │ │ └── no_dep-1.1.1.Final.pom
│ │ │ ├── 1.1.2-SNAPSHOT
│ │ │ │ ├── no_dep-1.1.2-SNAPSHOT-forge-addon.jar
│ │ │ │ ├── no_dep-1.1.2-SNAPSHOT.jar
│ │ │ │ └── no_dep-1.1.2-SNAPSHOT.pom
│ │ │ ├── 2.0.0.Final
│ │ │ │ ├── no_dep-2.0.0.Final-forge-addon.jar
│ │ │ │ ├── no_dep-2.0.0.Final.jar
│ │ │ │ └── no_dep-2.0.0.Final.pom
│ │ │ └── maven-metadata.xml
│ │ │ ├── one_dep
│ │ │ ├── 1.0.0.Final
│ │ │ │ ├── one_dep-1.0.0.Final-forge-addon.jar
│ │ │ │ ├── one_dep-1.0.0.Final.jar
│ │ │ │ └── one_dep-1.0.0.Final.pom
│ │ │ └── maven-metadata.xml
│ │ │ ├── one_dep_a
│ │ │ ├── 1.0.0.Final
│ │ │ │ ├── one_dep_a-1.0.0.Final-forge-addon.jar
│ │ │ │ ├── one_dep_a-1.0.0.Final.jar
│ │ │ │ └── one_dep_a-1.0.0.Final.pom
│ │ │ └── maven-metadata.xml
│ │ │ ├── one_dep_lib
│ │ │ ├── 1.0.0.Final
│ │ │ │ ├── one_dep_lib-1.0.0.Final-forge-addon.jar
│ │ │ │ ├── one_dep_lib-1.0.0.Final.jar
│ │ │ │ └── one_dep_lib-1.0.0.Final.pom
│ │ │ └── maven-metadata.xml
│ │ │ ├── one_optional_dep
│ │ │ ├── 1.0.0.Final
│ │ │ │ ├── one_optional_dep-1.0.0.Final-forge-addon.jar
│ │ │ │ ├── one_optional_dep-1.0.0.Final.jar
│ │ │ │ └── one_optional_dep-1.0.0.Final.pom
│ │ │ └── maven-metadata.xml
│ │ │ └── two_deps
│ │ │ ├── 1.0.0.Final
│ │ │ ├── two_deps-1.0.0.Final-forge-addon.jar
│ │ │ ├── two_deps-1.0.0.Final.jar
│ │ │ └── two_deps-1.0.0.Final.pom
│ │ │ └── maven-metadata.xml
│ └── pom.xml
├── spi
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── org
│ │ └── jboss
│ │ └── forge
│ │ └── furnace
│ │ └── manager
│ │ └── spi
│ │ ├── AddonDependencyResolver.java
│ │ ├── AddonInfo.java
│ │ └── Response.java
└── tests
│ ├── pom.xml
│ └── src
│ └── test
│ ├── java
│ └── org
│ │ └── jboss
│ │ └── forge
│ │ └── furnace
│ │ └── manager
│ │ └── impl
│ │ ├── AddonManagerHotswapTest.java
│ │ ├── AddonManagerInstallTest.java
│ │ ├── AddonManagerRealTest.java
│ │ ├── AddonManagerRepositoryTest.java
│ │ └── ClassesNotLeakedOnClasspathTest.java
│ └── resources
│ ├── profiles
│ └── settings.xml
│ └── repository
│ └── test
│ ├── indirect_dep
│ └── 1.0.0.Final
│ │ ├── indirect_dep-1.0.0.Final-forge-addon.jar
│ │ ├── indirect_dep-1.0.0.Final.jar
│ │ └── indirect_dep-1.0.0.Final.pom
│ ├── indirect_indirect_lib
│ └── 1.0.0.Final
│ │ ├── indirect_indirect_lib-1.0.0.Final.jar
│ │ └── indirect_indirect_lib-1.0.0.Final.pom
│ ├── indirect_lib
│ └── 1.0.0.Final
│ │ ├── indirect_lib-1.0.0.Final.jar
│ │ └── indirect_lib-1.0.0.Final.pom
│ ├── lib
│ └── 1.0.0.Final
│ │ ├── lib-1.0.0.Final.jar
│ │ └── lib-1.0.0.Final.pom
│ ├── no_dep
│ ├── 1.0.0.Final
│ │ ├── no_dep-1.0.0.Final-forge-addon.jar
│ │ ├── no_dep-1.0.0.Final.jar
│ │ └── no_dep-1.0.0.Final.pom
│ ├── 1.0.1.Final
│ │ ├── no_dep-1.0.1.Final-forge-addon.jar
│ │ ├── no_dep-1.0.1.Final.jar
│ │ └── no_dep-1.0.1.Final.pom
│ ├── 1.1.0.Final
│ │ ├── no_dep-1.1.0.Final-forge-addon.jar
│ │ ├── no_dep-1.1.0.Final.jar
│ │ └── no_dep-1.1.0.Final.pom
│ ├── 1.1.1.Final
│ │ ├── no_dep-1.1.1.Final-forge-addon.jar
│ │ ├── no_dep-1.1.1.Final.jar
│ │ └── no_dep-1.1.1.Final.pom
│ ├── 1.1.2-SNAPSHOT
│ │ ├── no_dep-1.1.2-SNAPSHOT-forge-addon.jar
│ │ ├── no_dep-1.1.2-SNAPSHOT.jar
│ │ └── no_dep-1.1.2-SNAPSHOT.pom
│ └── 2.0.0.Final
│ │ ├── no_dep-2.0.0.Final-forge-addon.jar
│ │ ├── no_dep-2.0.0.Final.jar
│ │ └── no_dep-2.0.0.Final.pom
│ ├── no_dep_one_lib_excluding_indirect_lib
│ └── 1.0.0.Final
│ │ ├── no_dep_one_lib_excluding_indirect_lib-1.0.0.Final-forge-addon.jar
│ │ ├── no_dep_one_lib_excluding_indirect_lib-1.0.0.Final.jar
│ │ └── no_dep_one_lib_excluding_indirect_lib-1.0.0.Final.pom
│ ├── one_dep
│ └── 1.0.0.Final
│ │ ├── one_dep-1.0.0.Final-forge-addon.jar
│ │ ├── one_dep-1.0.0.Final.jar
│ │ └── one_dep-1.0.0.Final.pom
│ ├── one_dep_a
│ └── 1.0.0.Final
│ │ ├── one_dep_a-1.0.0.Final-forge-addon.jar
│ │ ├── one_dep_a-1.0.0.Final.jar
│ │ └── one_dep_a-1.0.0.Final.pom
│ ├── one_dep_lib
│ └── 1.0.0.Final
│ │ ├── one_dep_lib-1.0.0.Final-forge-addon.jar
│ │ ├── one_dep_lib-1.0.0.Final.jar
│ │ └── one_dep_lib-1.0.0.Final.pom
│ └── two_deps
│ └── 1.0.0.Final
│ ├── two_deps-1.0.0.Final-forge-addon.jar
│ ├── two_deps-1.0.0.Final.jar
│ └── two_deps-1.0.0.Final.pom
├── maven-plugin
├── README.asciidoc
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── org
│ │ └── jboss
│ │ └── forge
│ │ └── furnace
│ │ └── maven
│ │ └── plugin
│ │ ├── AddonInstallMojo.java
│ │ ├── AddonRemoveMojo.java
│ │ └── GenerateDOTMojo.java
│ └── test
│ ├── java
│ └── org
│ │ └── jboss
│ │ └── forge
│ │ └── furnace
│ │ └── maven
│ │ └── plugin
│ │ └── AddonInstallMojoTest.java
│ └── resources
│ └── plugin-config.xml
├── pom.xml
├── proxy-tests
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── org
│ │ └── jboss
│ │ └── forge
│ │ └── classloader
│ │ └── mock
│ │ ├── CustomPrintStream.java
│ │ ├── CustomPrintStreamFactory.java
│ │ ├── IterableFactory.java
│ │ ├── JavaIOFactory.java
│ │ ├── JavaUtilLoggingFactory.java
│ │ ├── MockFinalResult.java
│ │ ├── MockInterface1.java
│ │ ├── MockInterface2.java
│ │ ├── MockOptionalService.java
│ │ ├── MockParentInterface1.java
│ │ ├── MockParentInterface2.java
│ │ ├── MockResult.java
│ │ ├── MockService.java
│ │ ├── MockService2.java
│ │ ├── MockSimpleCountService.java
│ │ ├── Result.java
│ │ ├── SimpleEnum.java
│ │ ├── SimpleEnumFactory.java
│ │ ├── collections
│ │ ├── Profile.java
│ │ ├── ProfileCommand.java
│ │ ├── ProfileFactory.java
│ │ ├── ProfileManager.java
│ │ └── ProfileManagerImpl.java
│ │ ├── collisions
│ │ ├── ClassCreatesInstanceFromClassLoader.java
│ │ ├── ClassImplementsInterfaceExtendsInterfaceValue.java
│ │ ├── ClassImplementsInterfaceModifiableContext.java
│ │ ├── ClassImplementsInterfaceWithArrayParameterModification.java
│ │ ├── ClassImplementsInterfaceWithGetterAndSetter.java
│ │ ├── ClassImplementsInterfaceWithPassthroughMethod.java
│ │ ├── ClassWithClassAsParameter.java
│ │ ├── ClassWithGetterAndSetter.java
│ │ ├── ClassWithInterfaceGetterAndSetter.java
│ │ ├── ClassWithJavaLangGetterAndSetter.java
│ │ ├── ClassWithListAsParameter.java
│ │ ├── ClassWithPassthroughMethod.java
│ │ ├── InterfaceExtendsInterfaceValue.java
│ │ ├── InterfaceModifiableContext.java
│ │ ├── InterfaceValue.java
│ │ ├── InterfaceWithArrayParameterModification.java
│ │ ├── InterfaceWithGetterAndSetter.java
│ │ └── InterfaceWithPassthroughMethod.java
│ │ ├── dispatch
│ │ ├── AbstractA.java
│ │ ├── AbstractB.java
│ │ └── ConcreteC.java
│ │ ├── exceptions
│ │ ├── ExceptionFactory.java
│ │ └── MockException.java
│ │ ├── result
│ │ ├── AbstractClass.java
│ │ ├── BasicInterface.java
│ │ ├── Implementation.java
│ │ ├── InstanceFactory.java
│ │ ├── InstanceFactoryImpl.java
│ │ └── SuperInterface.java
│ │ ├── sidewaysproxy
│ │ ├── AbstractExtra.java
│ │ ├── Action.java
│ │ ├── Action1.java
│ │ ├── Context.java
│ │ ├── ContextImpl.java
│ │ ├── ContextValue.java
│ │ ├── ContextValueImpl.java
│ │ ├── Extra.java
│ │ ├── Payload.java
│ │ └── Payload1.java
│ │ └── system
│ │ ├── ArrayListFactory.java
│ │ └── EmptyClassLoader.java
│ └── test
│ └── java
│ └── org
│ └── jboss
│ └── forge
│ └── furnace
│ └── proxy
│ ├── classloader
│ ├── ClassLoaderAdapterCallbackTest.java
│ ├── ClassLoaderAdapterCollisionsTest.java
│ ├── ClassLoaderAdapterDuplicateMethodCallbackTest.java
│ ├── ClassLoaderAdapterEnumTranslationTest.java
│ ├── ClassLoaderAdapterExceptionProxyTest.java
│ ├── ClassLoaderAdapterJavaIOSubclassTest.java
│ ├── ClassLoaderAdapterJavaIOTest.java
│ ├── ClassLoaderAdapterJavaOptionalTest.java
│ ├── ClassLoaderAdapterJavaUtilLoggingTest.java
│ ├── ClassLoaderAdapterPassthroughTest.java
│ ├── ClassLoaderAdapterProxiedTest.java
│ ├── ClassLoaderAdapterResultProxyTest.java
│ ├── ClassLoaderListParameterProxiedTest.java
│ ├── ClassLoaderNestedInterfaceProxyTest.java
│ ├── ClassLoaderParameterUnwrappedTest.java
│ ├── SidewaysProxyAnonymousCollisionTest.java
│ ├── SystemClassLoaderNullClassLoaderAdapterTest.java
│ ├── collections
│ │ ├── CLACProxiedCollectionsReturnTypeUnwrappingTest.java
│ │ ├── CLACProxiedCollectionsTest.java
│ │ └── CLACProxiedIterableTest.java
│ └── whitelist
│ │ ├── ClassLoaderAdapterWhitelistLoaderLookupTest.java
│ │ ├── ClassLoaderAdapterWhitelistLoaderPassthroughTest.java
│ │ ├── MockContext.java
│ │ ├── MockContextConsumer.java
│ │ ├── MockContextPayload.java
│ │ └── MockContextPayloadImpl.java
│ ├── dispatch
│ └── ProxyMethodHandlerDispatchTest.java
│ └── thread
│ └── ThreadProxyInterruptTest.java
├── proxy
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── org
│ │ └── jboss
│ │ └── forge
│ │ └── furnace
│ │ └── proxy
│ │ ├── Arrays.java
│ │ ├── ClassLoaderAdapterBuilder.java
│ │ ├── ClassLoaderAdapterBuilderCallingLoader.java
│ │ ├── ClassLoaderAdapterBuilderDelegateLoader.java
│ │ ├── ClassLoaderAdapterBuilderWhitelist.java
│ │ ├── ClassLoaderAdapterCallback.java
│ │ ├── ClassLoaderInterceptor.java
│ │ ├── ForgeProxy.java
│ │ ├── ForgeProxyMethodFilter.java
│ │ ├── Proxies.java
│ │ └── ProxyTypeInspector.java
│ └── test
│ └── java
│ └── org
│ └── jboss
│ └── forge
│ └── furnace
│ └── proxy
│ ├── ArraysTest.java
│ ├── ProxyTypeInspectorTest.java
│ ├── mock
│ └── MockBaseClassExternal.java
│ └── test
│ ├── Bean.java
│ ├── BeanWithSuperClass.java
│ ├── MockType.java
│ ├── ProxiesTest.java
│ └── TypeWithNonDefaultConstructor.java
├── se-tests
├── pom.xml
└── src
│ └── test
│ ├── java
│ └── test
│ │ └── org
│ │ └── jboss
│ │ └── forge
│ │ └── furnace
│ │ └── views
│ │ └── FurnaceSETest.java
│ └── resources
│ ├── profiles
│ └── settings.xml
│ └── repository
│ └── test
│ ├── indirect_dep
│ ├── 1.0.0.Final
│ │ ├── indirect_dep-1.0.0.Final-forge-addon.jar
│ │ ├── indirect_dep-1.0.0.Final.jar
│ │ └── indirect_dep-1.0.0.Final.pom
│ └── maven-metadata-local.xml
│ ├── lib
│ ├── 1.0.0.Final
│ │ ├── lib-1.0.0.Final.jar
│ │ └── lib-1.0.0.Final.pom
│ └── maven-metadata-local.xml
│ ├── no_dep
│ ├── 1.0.0.Final
│ │ ├── no_dep-1.0.0.Final-forge-addon.jar
│ │ ├── no_dep-1.0.0.Final.jar
│ │ └── no_dep-1.0.0.Final.pom
│ ├── 1.0.1.Final
│ │ ├── no_dep-1.0.1.Final-forge-addon.jar
│ │ ├── no_dep-1.0.1.Final.jar
│ │ └── no_dep-1.0.1.Final.pom
│ ├── 1.1.0.Final
│ │ ├── no_dep-1.1.0.Final-forge-addon.jar
│ │ ├── no_dep-1.1.0.Final.jar
│ │ └── no_dep-1.1.0.Final.pom
│ ├── 1.1.1.Final
│ │ ├── no_dep-1.1.1.Final-forge-addon.jar
│ │ ├── no_dep-1.1.1.Final.jar
│ │ └── no_dep-1.1.1.Final.pom
│ ├── 1.1.2-SNAPSHOT
│ │ ├── no_dep-1.1.2-SNAPSHOT-forge-addon.jar
│ │ ├── no_dep-1.1.2-SNAPSHOT.jar
│ │ └── no_dep-1.1.2-SNAPSHOT.pom
│ ├── 2.0.0.Final
│ │ ├── no_dep-2.0.0.Final-forge-addon.jar
│ │ ├── no_dep-2.0.0.Final.jar
│ │ └── no_dep-2.0.0.Final.pom
│ └── maven-metadata-local.xml
│ ├── one_dep
│ ├── 1.0.0.Final
│ │ ├── one_dep-1.0.0.Final-forge-addon.jar
│ │ ├── one_dep-1.0.0.Final.jar
│ │ └── one_dep-1.0.0.Final.pom
│ ├── 2.0.0.Final
│ │ ├── one_dep-2.0.0.Final-forge-addon.jar
│ │ ├── one_dep-2.0.0.Final.jar
│ │ └── one_dep-2.0.0.Final.pom
│ └── maven-metadata-local.xml
│ ├── one_dep_a
│ ├── 1.0.0.Final
│ │ ├── one_dep_a-1.0.0.Final-forge-addon.jar
│ │ ├── one_dep_a-1.0.0.Final.jar
│ │ └── one_dep_a-1.0.0.Final.pom
│ └── maven-metadata-local.xml
│ ├── one_dep_lib
│ ├── 1.0.0.Final
│ │ ├── one_dep_lib-1.0.0.Final-forge-addon.jar
│ │ ├── one_dep_lib-1.0.0.Final.jar
│ │ └── one_dep_lib-1.0.0.Final.pom
│ └── maven-metadata-local.xml
│ └── two_deps
│ ├── 1.0.0.Final
│ ├── two_deps-1.0.0.Final-forge-addon.jar
│ ├── two_deps-1.0.0.Final.jar
│ └── two_deps-1.0.0.Final.pom
│ └── maven-metadata-local.xml
├── se
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ ├── bootpath
│ │ └── BootpathMarker.java
│ │ └── org
│ │ └── jboss
│ │ └── forge
│ │ └── furnace
│ │ └── se
│ │ ├── BootstrapClassLoader.java
│ │ └── FurnaceFactory.java
│ └── test
│ └── java
│ └── org
│ └── jboss
│ └── forge
│ └── furnace
│ └── se
│ └── BootstrapClassLoaderTestCase.java
└── test-harness
├── arquillian
├── classpath
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── org
│ │ │ └── jboss
│ │ │ └── forge
│ │ │ └── arquillian
│ │ │ ├── ConfigurationScanListener.java
│ │ │ ├── FurnaceContainerConfiguration.java
│ │ │ ├── FurnaceDeployableContainer.java
│ │ │ └── FurnaceLoadableExtension.java
│ │ └── resources
│ │ └── META-INF
│ │ ├── arquillian.xml
│ │ └── services
│ │ └── org.jboss.arquillian.core.spi.LoadableExtension
├── core
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── org
│ │ │ │ └── jboss
│ │ │ │ └── forge
│ │ │ │ └── arquillian
│ │ │ │ ├── AddonDependencies.java
│ │ │ │ ├── AddonDependency.java
│ │ │ │ ├── AddonDeployment.java
│ │ │ │ ├── AddonDeployments.java
│ │ │ │ ├── Dependencies.java
│ │ │ │ ├── DeployToRepository.java
│ │ │ │ ├── DeploymentListener.java
│ │ │ │ ├── archive
│ │ │ │ ├── AddonArchive.java
│ │ │ │ ├── AddonArchiveBase.java
│ │ │ │ ├── AddonDependencyAware.java
│ │ │ │ ├── AddonDeploymentArchive.java
│ │ │ │ ├── DeploymentTimeoutAware.java
│ │ │ │ ├── RepositoryLocationAware.java
│ │ │ │ └── impl
│ │ │ │ │ ├── AddonArchiveImpl.java
│ │ │ │ │ └── AddonDeploymentArchiveImpl.java
│ │ │ │ ├── impl
│ │ │ │ ├── FurnaceAuxiliaryArchiveProcessor.java
│ │ │ │ ├── FurnaceDeploymentPackager.java
│ │ │ │ ├── FurnaceDeploymentScenarioGenerator.java
│ │ │ │ ├── FurnaceTestMethodExecutor.java
│ │ │ │ ├── NullException.java
│ │ │ │ └── ShrinkWrapUtil.java
│ │ │ │ ├── maven
│ │ │ │ ├── LazyAuthenticationSelector.java
│ │ │ │ ├── MavenModelResolver.java
│ │ │ │ ├── P2ArtifactRepositoryLayout.java
│ │ │ │ ├── PlexusContainer.java
│ │ │ │ ├── ProjectHelper.java
│ │ │ │ └── RepositoryUtils.java
│ │ │ │ ├── protocol
│ │ │ │ ├── FurnaceHolder.java
│ │ │ │ ├── FurnaceProtocol.java
│ │ │ │ ├── FurnaceProtocolConfiguration.java
│ │ │ │ └── FurnaceProtocolDescription.java
│ │ │ │ ├── services
│ │ │ │ ├── LocalServices.java
│ │ │ │ └── impl
│ │ │ │ │ ├── LazyServiceRegistryEventManager.java
│ │ │ │ │ ├── ReflectionExportedInstance.java
│ │ │ │ │ └── ReflectionServiceRegistry.java
│ │ │ │ └── spi
│ │ │ │ ├── AddonDeploymentScenarioEnhancer.java
│ │ │ │ └── TestClassRegistrationStrategy.java
│ │ └── resources
│ │ │ └── META-INF
│ │ │ ├── arquillian.xml
│ │ │ └── services
│ │ │ ├── org.jboss.forge.arquillian.archive.AddonArchive
│ │ │ └── org.jboss.forge.arquillian.archive.AddonDeploymentArchive
│ │ └── test
│ │ ├── java
│ │ └── org
│ │ │ └── jboss
│ │ │ └── forge
│ │ │ └── arquillian
│ │ │ └── maven
│ │ │ └── ProjectHelperTest.java
│ │ └── resources
│ │ └── org
│ │ └── jboss
│ │ └── forge
│ │ └── arquillian
│ │ └── maven
│ │ └── lib-1.0.0.Final.pom
└── pom.xml
├── pom.xml
└── test-harness
├── pom.xml
└── src
└── main
└── java
└── org
└── jboss
└── forge
└── package-info.java
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: maven
4 | directory: "/"
5 | schedule:
6 | interval: daily
7 | time: "07:00"
8 | timezone: America/Sao_Paulo
9 | open-pull-requests-limit: 10
10 | ignore:
11 | - dependency-name: org.apache.maven.wagon:wagon-http-lightweight
12 | versions:
13 | - 3.4.2
14 | - dependency-name: org.apache.maven.wagon:wagon-file
15 | versions:
16 | - 3.4.2
17 | - dependency-name: org.apache.maven:maven-plugin-api
18 | versions:
19 | - 3.6.3
20 | - dependency-name: org.apache.maven.plugin-tools:maven-plugin-annotations
21 | versions:
22 | - 3.6.0
23 |
--------------------------------------------------------------------------------
/.github/workflows/maven.yml:
--------------------------------------------------------------------------------
1 | name: GitHub CI
2 |
3 | on: [push]
4 |
5 | jobs:
6 | Build:
7 | strategy:
8 | matrix:
9 | java: [ 8, 11 ]
10 |
11 | runs-on: ubuntu-latest
12 |
13 | steps:
14 | - uses: actions/checkout@v3
15 | - name: Set up JDK ${{ matrix.java }}
16 | uses: actions/setup-java@v3
17 | with:
18 | java-version: ${{ matrix.java }}
19 | cache: maven
20 | distribution: 'temurin'
21 | - name: Build with Maven
22 | run: mvn -B install --file pom.xml
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .classpath
2 | .project
3 | .settings
4 | .DS_Store
5 | dependency-reduced-pom.xml
6 | target/
7 | *.iml
8 | *.ipr
9 | *.iws
10 | *.swp
11 | /*/src/main/java/META-INF
12 | .gitignore.swp
13 | docs/reference/src/main/docbook/en-US/version_info.xml
14 | .idea
15 | .forge_settings
16 | .factorypath
17 | atlassian-ide-plugin.xml
18 | .externalToolBuilders
19 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: java
2 | sudo: false
3 | jdk:
4 | - openjdk8
5 | - openjdk11
6 | install: true
7 | script: mvn clean install -B -V
8 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/ContainerStatus.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 |
8 | package org.jboss.forge.furnace;
9 |
10 | /**
11 | * The container status
12 | *
13 | * @author George Gastaldi
14 | *
15 | */
16 | public enum ContainerStatus
17 | {
18 | STARTING, STARTED, RELOADING, STOPPED;
19 |
20 | public boolean isStarting()
21 | {
22 | return this == STARTING;
23 | }
24 |
25 | public boolean isStarted()
26 | {
27 | return this == STARTED;
28 | }
29 |
30 | public boolean isReloading()
31 | {
32 | return this == RELOADING;
33 | }
34 |
35 | public boolean isStopped()
36 | {
37 | return this == STOPPED;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/addons/AddonCompatibilityStrategy.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2015 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 |
8 | package org.jboss.forge.furnace.addons;
9 |
10 | import org.jboss.forge.furnace.Furnace;
11 | import org.jboss.forge.furnace.versions.Version;
12 |
13 | /**
14 | * A {@link AddonCompatibilityStrategy} handles if an {@link Addon} should be loaded based on it's {@link Version}, for
15 | * example.
16 | *
17 | * @author George Gastaldi
18 | */
19 | public interface AddonCompatibilityStrategy
20 | {
21 | /**
22 | * Implementations should check if the given {@link AddonId} is compatible with the given {@link Furnace} instance
23 | *
24 | * @return true
if the {@link AddonId} is compatible with the given {@link Furnace} instance
25 | */
26 | boolean isCompatible(Furnace furnace, AddonId addonId);
27 | }
28 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/addons/AddonDependency.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.addons;
8 |
9 |
10 | /**
11 | * An edge in the registered {@link Addon} graph.
12 | *
13 | * @author Lincoln Baxter, III
14 | */
15 | public interface AddonDependency
16 | {
17 | /**
18 | * Get the {@link Addon} dependency of the {@link Addon} returned by {@link #getDependent()}.
19 | */
20 | public Addon getDependency();
21 |
22 | /**
23 | * Return true
if the {@link Addon} dependency returned by {@link #getDependency()} is exported by the
24 | * dependent {@link Addon}. If the dependency is not exported, return false
.
25 | */
26 | public boolean isExported();
27 |
28 | /**
29 | * Return true
if the {@link Addon} dependency returned by {@link #getDependency()} is an optional
30 | * dependency of the dependent {@link Addon}. If the dependency is not optional, return false
.
31 | */
32 | public boolean isOptional();
33 |
34 | }
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/addons/AddonFilter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2014 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.addons;
8 |
9 | import org.jboss.forge.furnace.util.Predicate;
10 |
11 | /**
12 | * Used to filter {@link Addon} instances.
13 | *
14 | * @author Lincoln Baxter, III
15 | *
16 | */
17 | public interface AddonFilter extends Predicate
18 | {
19 | }
20 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/event/EventException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.event;
8 |
9 | import org.jboss.forge.furnace.exception.ContainerException;
10 |
11 | /**
12 | * Thrown when an {@link Exception} is encountered during event processing.
13 | *
14 | * @author Lincoln Baxter, III
15 | */
16 | public class EventException extends ContainerException
17 | {
18 | private static final long serialVersionUID = 2990600221242735267L;
19 |
20 | public EventException(String message)
21 | {
22 | super(message);
23 | }
24 |
25 | public EventException(String message, Throwable cause)
26 | {
27 | super(message, cause);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/event/EventManager.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.event;
8 |
9 | import java.lang.annotation.Annotation;
10 |
11 | /**
12 | * Responsible for handling event propagation.
13 | *
14 | * @author Lincoln Baxter, III
15 | */
16 | public interface EventManager
17 | {
18 | /**
19 | * Fire an event and notify observers within the enclosing addon.
20 | *
21 | * @throws EventException if exceptions are encountered during event processing.
22 | */
23 | public void fireEvent(Object event, Annotation... qualifiers) throws EventException;
24 | }
25 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/event/PostStartup.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 |
8 | package org.jboss.forge.furnace.event;
9 |
10 | import org.jboss.forge.furnace.addons.Addon;
11 | import org.jboss.forge.furnace.util.Assert;
12 |
13 | /**
14 | * This event is fired by the container when a specific addon has started.
15 | *
16 | * @author Lincoln Baxter, III
17 | *
18 | */
19 | public final class PostStartup
20 | {
21 | private final Addon addon;
22 |
23 | public PostStartup(Addon addon)
24 | {
25 | Assert.notNull(addon, "Addon must not be null.");
26 | this.addon = addon;
27 | }
28 |
29 | public Addon getAddon()
30 | {
31 | return addon;
32 | }
33 |
34 | @Override
35 | public String toString()
36 | {
37 | return "PostStartup [addon=" + addon + "]";
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/event/PreShutdown.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 |
8 | package org.jboss.forge.furnace.event;
9 |
10 | import org.jboss.forge.furnace.addons.Addon;
11 | import org.jboss.forge.furnace.util.Assert;
12 |
13 | /**
14 | * Fired before the container begins its shutdown process.
15 | *
16 | * @author Lincoln Baxter, III
17 | *
18 | */
19 | public final class PreShutdown
20 | {
21 | private final Addon addon;
22 |
23 | public PreShutdown(Addon addon)
24 | {
25 | Assert.notNull(addon, "Addon must not be null.");
26 | this.addon = addon;
27 | }
28 |
29 | public Addon getAddon()
30 | {
31 | return addon;
32 | }
33 |
34 | @Override
35 | public String toString()
36 | {
37 | return "PreShutdown [addon=" + addon + "]";
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/exception/ContainerException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.exception;
8 |
9 | /**
10 | * @author Lincoln Baxter, III
11 | *
12 | */
13 | public class ContainerException extends RuntimeException
14 | {
15 | private static final long serialVersionUID = 5266075954460779189L;
16 |
17 | public ContainerException()
18 | {
19 | super();
20 | }
21 |
22 | public ContainerException(String message, Throwable cause)
23 | {
24 | super(message, cause);
25 | }
26 |
27 | public ContainerException(String message)
28 | {
29 | super(message);
30 | }
31 |
32 | public ContainerException(Throwable cause)
33 | {
34 | super(cause);
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/lock/LockManager.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.lock;
8 |
9 | import java.util.concurrent.Callable;
10 | import java.util.concurrent.locks.Lock;
11 |
12 | /**
13 | * An interface that provides read and write {@link Lock} instances for interacting with the underlying locking
14 | * mechanism.
15 | *
16 | * @author Lincoln Baxter, III
17 | *
18 | * @see {@link LockMode}
19 | */
20 | public interface LockManager
21 | {
22 | /**
23 | * Perform the given {@link Callable} task after acquiring a {@link Lock} of the given {@link LockMode} type. Return
24 | * the result, if any.
25 | */
26 | T performLocked(LockMode mode, Callable task);
27 | }
28 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/lock/LockMode.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.lock;
8 |
9 | import java.util.concurrent.locks.Lock;
10 |
11 | /**
12 | * A type-safe differentiation between read and write {@link Lock} instances.
13 | *
14 | * @author Lincoln Baxter, III
15 | */
16 | public enum LockMode
17 | {
18 | /**
19 | * Represents a read {@link Lock}.
20 | */
21 | READ,
22 |
23 | /**
24 | * Represents a write {@link Lock}.
25 | */
26 | WRITE;
27 | }
28 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/repositories/AddonRepositoryMode.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.repositories;
8 |
9 | /**
10 | * A set of modes for interacting with an {@link AddonRepository}.
11 | *
12 | * @author Lincoln Baxter, III
13 | */
14 | public enum AddonRepositoryMode
15 | {
16 | /**
17 | * A read-write repository.
18 | */
19 | MUTABLE,
20 |
21 | /**
22 | * A read-only repository.
23 | */
24 | IMMUTABLE;
25 |
26 | /**
27 | * Return true
if this {@link AddonRepositoryMode} instance is {@link AddonRepositoryMode#MUTABLE}
28 | */
29 | public boolean isMutable()
30 | {
31 | return this == MUTABLE;
32 | }
33 |
34 | /**
35 | * Return true
if this {@link AddonRepositoryMode} instance is {@link AddonRepositoryMode#IMMUTABLE}
36 | */
37 | public boolean isImmutable()
38 | {
39 | return this == IMMUTABLE;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/repositories/MutableAddonRepository.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.repositories;
8 |
9 | import java.io.File;
10 |
11 | import org.jboss.forge.furnace.addons.Addon;
12 | import org.jboss.forge.furnace.addons.AddonId;
13 |
14 | /**
15 | * Used to perform {@link Addon} installation/registration operations. May be obtained using CDI injection:
16 | *
17 | * @author Lincoln Baxter, III
18 | * @author Koen Aers
19 | * @author George Gastaldi
20 | */
21 | public interface MutableAddonRepository extends AddonRepository
22 | {
23 | public boolean deploy(AddonId addon, Iterable dependencies, Iterable resourceJars);
24 |
25 | public boolean disable(final AddonId addon);
26 |
27 | public boolean enable(AddonId addon);
28 |
29 | public boolean undeploy(AddonId addonEntry);
30 | }
31 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/spi/FurnaceProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2016 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 |
8 | package org.jboss.forge.furnace.spi;
9 |
10 | import org.jboss.forge.furnace.Furnace;
11 |
12 | /**
13 | * Returns the associated Furnace from a Furnace container
14 | *
15 | * @author George Gastaldi
16 | */
17 | public interface FurnaceProvider
18 | {
19 | Furnace getFurnace(ClassLoader loader);
20 | }
21 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/spi/ListenerRegistration.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 |
8 | package org.jboss.forge.furnace.spi;
9 |
10 | /**
11 | * Allows removal of a registered listener in the Furnace container
12 | *
13 | * @author George Gastaldi
14 | *
15 | * @param
16 | */
17 | public interface ListenerRegistration extends AutoCloseable
18 | {
19 | T removeListener();
20 |
21 | @Override
22 | default void close() throws Exception
23 | {
24 | removeListener();
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/util/AddonFilters.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.util;
8 |
9 | import org.jboss.forge.furnace.addons.AddonFilter;
10 |
11 | /**
12 | * @author Lincoln Baxter, III
13 | */
14 | public class AddonFilters
15 | {
16 | public static AddonFilter allLoaded()
17 | {
18 | return (addon) -> addon.getStatus().isLoaded();
19 | }
20 |
21 | public static AddonFilter allStarting()
22 | {
23 | return (addon) -> !addon.getFuture().isDone();
24 | }
25 |
26 | public static AddonFilter allStarted()
27 | {
28 | return (addon) -> addon.getStatus().isStarted();
29 | }
30 |
31 | public static AddonFilter allNotStarted()
32 | {
33 | return (addon) -> !addon.getStatus().isStarted();
34 | }
35 |
36 | public static AddonFilter all()
37 | {
38 | return (addon) -> true;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/util/Lists.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2014 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 |
8 | package org.jboss.forge.furnace.util;
9 |
10 | import java.util.ArrayList;
11 | import java.util.List;
12 |
13 | /**
14 | * Utilities for interacting with {@link List} instances.
15 | *
16 | * @author George Gastaldi
17 | */
18 | public class Lists
19 | {
20 | /**
21 | * Converts an {@link Iterable} to a {@link List}
22 | */
23 | public static List toList(Iterable iterable)
24 | {
25 | if (iterable == null)
26 | {
27 | return null;
28 | }
29 | else if (iterable instanceof List)
30 | {
31 | return (List) iterable;
32 | }
33 | else
34 | {
35 | List list = new ArrayList<>();
36 | for (T obj : iterable)
37 | {
38 | list.add(obj);
39 | }
40 | return list;
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/util/Predicate.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 |
8 | package org.jboss.forge.furnace.util;
9 |
10 | /**
11 | * Determines a true or false value for a given input.
12 | *
13 | * @author George Gastaldi
14 | * @author Lincoln Baxter, III
15 | *
16 | * @param
17 | */
18 | public interface Predicate
19 | {
20 | /**
21 | * Return true
if the given value should be accepted; otherwise return false
.
22 | */
23 | boolean accept(INPUTTYPE type);
24 | }
25 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/util/Specialized.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.util;
8 |
9 | /**
10 | * @author Lincoln Baxter, III
11 | */
12 | public interface Specialized
13 | {
14 | /**
15 | * Returns true if this object is appropriate for the given payload.
16 | */
17 | boolean handles(T payload);
18 | }
19 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/util/ValuedVisitor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.util;
8 |
9 | /**
10 | * @author Lincoln Baxter, III
11 | *
12 | * @param the instance type.
13 | * @param the result value type.
14 | */
15 | public abstract class ValuedVisitor implements Visitor
16 | {
17 | private VALUETYPE result;
18 |
19 | /**
20 | * Get the result value.
21 | */
22 | public VALUETYPE getResult()
23 | {
24 | return result;
25 | }
26 |
27 | /**
28 | * Set the result value.
29 | */
30 | protected void setResult(VALUETYPE result)
31 | {
32 | this.result = result;
33 | }
34 |
35 | /**
36 | * Return true
if the {@link #getResult()} is not null
.
37 | */
38 | public boolean hasResult()
39 | {
40 | return getResult() != null;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/util/Visitor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 |
8 | package org.jboss.forge.furnace.util;
9 |
10 | /**
11 | * Visits a given input.
12 | *
13 | * @author George Gastaldi
14 | * @author Lincoln Baxter, III
15 | *
16 | * @param the instance type.
17 | */
18 | public interface Visitor
19 | {
20 | void visit(INPUTTYPE instance);
21 | }
22 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/util/Weighted.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.util;
8 |
9 | /**
10 | * Defines a class as having a weight for ordering.
11 | *
12 | * @author Lincoln Baxter, III
13 | */
14 | public interface Weighted
15 | {
16 | int DEFAULT = 0;
17 | int HIGH = 1000;
18 | int MEDIUM = 100;
19 | int LOW = -100;
20 |
21 | int priority();
22 | }
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/util/WeightedComparator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.util;
8 |
9 | import java.util.Comparator;
10 |
11 | /**
12 | * Compares {@link Weighted} objects.
13 | *
14 | * @author Lincoln Baxter, III
15 | *
16 | */
17 | public enum WeightedComparator implements Comparator
18 | {
19 | INSTANCE;
20 |
21 | @Override
22 | public int compare(final Weighted left, final Weighted right)
23 | {
24 | if ((left == null) || (right == null))
25 | {
26 | return 0;
27 | }
28 | int thisVal = left.priority();
29 | int anotherVal = right.priority();
30 | return (thisVal < anotherVal ? -1 : (thisVal == anotherVal ? 0 : 1));
31 | }
32 |
33 | }
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/versions/EmptyVersion.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2014 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.versions;
8 |
9 | public class EmptyVersion extends SingleVersion implements Version
10 | {
11 | private static final EmptyVersion INSTANCE = new EmptyVersion();
12 |
13 | @SuppressWarnings("deprecation")
14 | private EmptyVersion()
15 | {
16 | super("");
17 | }
18 |
19 | public static Version getInstance()
20 | {
21 | return INSTANCE;
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/container-api/src/main/java/org/jboss/forge/furnace/versions/VersionException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2014 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package org.jboss.forge.furnace.versions;
8 |
9 | import org.jboss.forge.furnace.exception.ContainerException;
10 |
11 | public class VersionException extends ContainerException
12 | {
13 | private static final long serialVersionUID = -4959545545467948898L;
14 |
15 | public VersionException(String message, Throwable cause)
16 | {
17 | super(message, cause);
18 | }
19 |
20 | public VersionException(String message)
21 | {
22 | super(message);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/container-api/src/test/java/org/jboss/forge/furnace/util/OperatingSystemUtilsTest.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright 2015 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 |
8 | package org.jboss.forge.furnace.util;
9 |
10 | import static org.hamcrest.CoreMatchers.is;
11 |
12 | import java.io.File;
13 |
14 | import org.junit.Assert;
15 | import org.junit.Test;
16 |
17 | /**
18 | *
19 | * @author George Gastaldi
20 | */
21 | public class OperatingSystemUtilsTest
22 | {
23 |
24 | /**
25 | * Test method for {@link org.jboss.forge.furnace.util.OperatingSystemUtils#createTempDir()}.
26 | */
27 | @Test
28 | public void testCreateTempDir()
29 | {
30 | File tmpDir = OperatingSystemUtils.createTempDir();
31 | tmpDir.deleteOnExit();
32 | Assert.assertThat(tmpDir.isDirectory(), is(true));
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/container-tests/src/main/java/test/org/jboss/forge/furnace/mocks/MockImpl1.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package test.org.jboss.forge.furnace.mocks;
8 |
9 | /**
10 | * @author Lincoln Baxter, III
11 | *
12 | */
13 | public class MockImpl1 implements MockInterface
14 | {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/container-tests/src/main/java/test/org/jboss/forge/furnace/mocks/MockImpl2.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package test.org.jboss.forge.furnace.mocks;
8 |
9 | /**
10 | * @author Lincoln Baxter, III
11 | *
12 | */
13 | public class MockImpl2 implements MockInterface
14 | {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/container-tests/src/main/java/test/org/jboss/forge/furnace/mocks/MockInterface.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package test.org.jboss.forge.furnace.mocks;
8 |
9 | /**
10 | * @author Lincoln Baxter, III
11 | *
12 | */
13 | public interface MockInterface
14 | {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/container-tests/src/main/java/test/org/jboss/forge/furnace/mocks/SubMockImpl1.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2015 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 |
8 | package test.org.jboss.forge.furnace.mocks;
9 |
10 | /**
11 | *
12 | * @author George Gastaldi
13 | */
14 | public class SubMockImpl1 extends MockImpl1
15 | {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/container-tests/src/main/java/test/org/jboss/forge/furnace/mocks/services/MockService.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2014 Red Hat, Inc. and/or its affiliates.
3 | *
4 | * Licensed under the Eclipse Public License version 1.0, available at
5 | * http://www.eclipse.org/legal/epl-v10.html
6 | */
7 | package test.org.jboss.forge.furnace.mocks.services;
8 |
9 | import java.util.HashMap;
10 | import java.util.Map;
11 |
12 | /**
13 | * @author Lincoln Baxter, III
14 | *
15 | */
16 | public class MockService
17 | {
18 | private final Map