/* (non-Javadoc)
   * @see org.jboss.arquillian.spi.DeploymentPackager#generateDeployment(org.jboss.arquillian.spi.TestDeployment)
   */
  public Archive<?> generateDeployment(
      TestDeployment testDeployment, Collection<ProtocolArchiveProcessor> processors) {
    WebArchive protocol = new ProtocolDeploymentAppender().createAuxiliaryArchive();

    Archive<?> applicationArchive = testDeployment.getApplicationArchive();
    Collection<Archive<?>> auxiliaryArchives = testDeployment.getAuxiliaryArchives();

    Processor processor = new Processor(testDeployment, processors);

    if (Validate.isArchiveOfType(EnterpriseArchive.class, applicationArchive)) {
      return handleArchive(
          applicationArchive.as(EnterpriseArchive.class),
          auxiliaryArchives,
          protocol,
          processor,
          testDeployment);
    }

    if (Validate.isArchiveOfType(WebArchive.class, applicationArchive)) {
      return handleArchive(
          applicationArchive.as(WebArchive.class), auxiliaryArchives, protocol, processor);
    }

    if (Validate.isArchiveOfType(JavaArchive.class, applicationArchive)) {
      return handleArchive(
          applicationArchive.as(JavaArchive.class), auxiliaryArchives, protocol, processor);
    }

    throw new IllegalArgumentException(
        ServletProtocolDeploymentPackager.class.getName()
            + " can not handle archive of type "
            + applicationArchive.getClass().getName());
  }
  @Override
  public void validate() throws ConfigurationException {
    super.validate();

    Validate.configurationDirectoryExists(jbossHome, "jbossHome must exist");
    if (javaHome != null) {
      Validate.configurationDirectoryExists(javaHome, "javaHome must exist");
    }
  }
 /**
  * {@inheritDoc}
  *
  * @see org.jboss.as.arquillian.container.CommonContainerConfiguration#validate()
  */
 @Override
 public void validate() throws ConfigurationException {
   super.validate();
   Validate.configurationDirectoryExists(jbossHome, "jbossHome '" + jbossHome + "' must exist");
   Validate.configurationDirectoryExists(modulePath, "modulePath '" + modulePath + "' must exist");
   if (bundlePath != null) {
     Validate.configurationDirectoryExists(
         bundlePath, "bundlePath '" + bundlePath + "' must exist");
   }
 }
  /** Adds Warp archive to the protocol archive to make it available for WARs and EARs. */
  @Override
  public void process(TestDeployment testDeployment, Archive<?> protocolArchive) {
    final TestClass testClass = this.testClass.get();
    final Archive<?> applicationArchive = testDeployment.getApplicationArchive();

    if (WarpCommons.isWarpTest(testClass.getJavaClass())) {
      if (!Validate.isArchiveOfType(WebArchive.class, protocolArchive)) {
        throw new IllegalArgumentException(
            "Protocol archives of type "
                + protocolArchive.getClass()
                + " not supported by Warp. Please use the Servlet 3.0 protocol.");
      }

      addWarpPackageToDeployment(protocolArchive.as(WebArchive.class));

      addWarpExtensionsDeployment(protocolArchive.as(WebArchive.class));

      removeTestClassFromDeployment(applicationArchive, testClass);
    }
  }