<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.kie</groupId>
    <artifactId>kie-docs</artifactId>
    <version>6.3.0.Final</version>
  </parent>

  <artifactId>kie-docs-code</artifactId>
  <packaging>jar</packaging>

  <name>KIE :: Documentation :: Example Code</name>
  <description>Example (callout) Code for various KIE Documentation</description>

  <!-- clean: delete ${code.xml.dir} and ${examples.dir} -->
  <!-- process-classes/copy-java-to-examples-dir: copy src/main/java to ${code.xml.dir} -->
  <!-- process-classes/java-to-xml-1: transform *Examples.java to XML files in ${code.xml.dir} -->
  <!-- process-classes/java-to-xml-2: more XML transformations in ${code.xml.dir} -->
  <!-- process-classes/split-examples: use XSLT to split the examples up into individual examples -->
  <!-- prepare-package/remote-xml-from-examples: more XML transformations in ${code.xml.dir} -->
  
  <properties>
    <code.xml.dir>${project.build.directory}/xml</code.xml.dir>
    <examples.dir>${project.build.directory}/examples</examples.dir>
  </properties>

  <dependencies>
    <!-- kie-remote-services remote API -->
    <dependency>
      <groupId>org.kie.remote</groupId>
      <artifactId>kie-remote-client</artifactId>
    </dependency>
    <dependency>
      <groupId>org.kie.remote</groupId>
      <artifactId>kie-remote-jaxb</artifactId>
    </dependency>

    <!-- kie-remote-services remote API -->
    <dependency>
      <groupId>org.guvnor</groupId>
      <artifactId>guvnor-rest-backend</artifactId>
    </dependency>
    <dependency>
      <groupId>org.guvnor</groupId>
      <artifactId>guvnor-rest-client</artifactId>
    </dependency>

    <dependency>
      <groupId>org.kie</groupId>
      <artifactId>kie-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>

  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <executions>
          <execution>
            <id>generated-files</id>
            <phase>clean</phase>
            <goals>
              <goal>clean</goal>
            </goals>
            <configuration>
              <filesets>
                <fileset>
                  <directory>${code.xml.dir}</directory>
                </fileset>
                <fileset>
                  <directory>${examples.dir}</directory>
                </fileset>
              </filesets>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-java-to-examples-dir</id>
            <phase>process-classes</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${code.xml.dir}</outputDirectory>
              <resources>
                <resource>
                  <directory>src/main/java</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>com.google.code.maven-replacer-plugin</groupId>
        <artifactId>replacer</artifactId>
        <executions>
          <execution>
            <id>java-to-xml-1</id>
            <phase>process-classes</phase>
            <goals>
              <goal>replace</goal>
            </goals>
            <configuration>
              <basedir>${code.xml.dir}/org/kie/remote/client/documentation</basedir>
              <includes>
                <include>**/*.java</include>
              </includes>
              <inputFilePattern>([\w\/]+Examples).java</inputFilePattern>
              <outputFilePattern>$1.xml</outputFilePattern>
              <replacements>
                <replacement>
                  <token>&lt;</token>
                  <value><![CDATA[&lt;]]></value>
                </replacement>
                <replacement>
                  <token>&gt;</token>
                  <value><![CDATA[&gt;]]></value>
                </replacement>
              </replacements>
            </configuration>
          </execution>
          <execution>
            <id>java-to-xml-2</id>
            <phase>process-classes</phase>
            <goals>
              <goal>replace</goal>
            </goals>
            <configuration>
              <basedir>${code.xml.dir}/org/kie/remote/client/documentation</basedir>
              <includes>
                <include>**/*.xml</include>
              </includes>
              <regexFlag>MULTILINE</regexFlag>
              <replacements>
                <!--  add root xml elements -->
                <replacement>
                  <token>/\*${line.separator} \* Copyright (\d+) JBoss </token>
                  <value>&lt;?xml version="1.0"
                    encoding="UTF-8"?&gt;${line.separator}&lt;root&gt;${line.separator}/*${line.separator} * Copyright $1 JBoss</value>
                </replacement>
                <replacement>
                  <token>// END</token>
                  <value>&lt;/root&gt;${line.separator}</value>
                </replacement>
                <!--  convert tag/code elements -->
                <replacement>
                  <token>// tag::(\w+)\[\]</token>
                  <value>&lt;code id="$1"&gt;</value>
                </replacement>
                <replacement>
                  <token>// end::(\w+)\[\]</token>
                  <value>&lt;/code&gt;</value>
                </replacement>
                <!--  convert callout elements 
                <replacement>
                  <token><![CDATA[//\s+\&lt;(\d+)\&gt;]]></token>
                  <value>&lt;co id="$1-co" linkends="$1" /&gt;</value>
                </replacement>
                -->
              </replacements>
            </configuration>
          </execution>
           <execution>
            <id>remove-xml-from-examples</id>
            <!--  first phase after 'process-classes' -->
            <phase>prepare-package</phase>
            <goals>
              <goal>replace</goal>
            </goals>
            <configuration>
              <basedir>${examples.dir}</basedir>
              <includes>
                <include>*.java</include>
              </includes>
              <regexFlag>MULTILINE</regexFlag>
              <replacements>
                <replacement>
                  <token>&lt;\?xml.*${line.separator}(\s?)</token>
                  <value>$1</value>
                </replacement>
                <replacement>
                  <token>${line.separator}(\s*)&lt;/code.*</token>
                  <value>$1</value>
                </replacement>
              </replacements>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>xml-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>split-examples</id>
            <phase>process-classes</phase>
            <goals>
              <goal>transform</goal>
            </goals>
            <configuration>
              <transformationSets>
                <transformationSet>
                  <dir>${code.xml.dir}/org/kie/remote/client/documentation</dir>
                  <outputDir>${code.xml.dir}/org/kie/remote/client/documentation</outputDir>
                  <includes>
                    <include>**/*.xml</include>
                  </includes>
                  <stylesheet>${project.build.directory}/classes/xslt/splitExamples.xslt</stylesheet>
                </transformationSet>
              </transformationSets>
            </configuration>
          </execution>
        </executions> 
        <dependencies>
          <dependency>
            <groupId>net.sf.saxon</groupId>
            <artifactId>saxon</artifactId>
            <version>8.7</version>
          </dependency>
        </dependencies>
      </plugin>

      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/code-examples.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id> 
            <phase>package</phase> 
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

</project>
