<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.camel</groupId>
        <artifactId>components</artifactId>
        <version>2.17.0</version>
    </parent>

    <artifactId>camel-blueprint</artifactId>
    <name>Camel :: Blueprint</name>
    <description>Camel OSGi Blueprint support</description>
    <packaging>bundle</packaging>

    <properties>
        <camel.osgi.import>
            !org.apache.camel.blueprint.*,
            !org.apache.camel.util.blueprint.*,
            org.apache.camel.*;${camel.osgi.import.strict.version},
            org.osgi.service.event*;resolution:=optional,
            org.apache.aries*;version="[1.0,2)",
            ${camel.osgi.import.defaults},
            *
        </camel.osgi.import>
        <camel.osgi.export>
            org.apache.camel.blueprint*;${camel.osgi.version},
            org.apache.camel.util.blueprint*;${camel.osgi.version}
        </camel.osgi.export>
		<camel.osgi.private.pkg>
			org.apache.camel.core.osgi*,
			org.apache.camel.core.xml*
		</camel.osgi.private.pkg>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core-xml</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core-osgi</artifactId>
        </dependency>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.compendium</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.aries.blueprint</groupId>
            <artifactId>org.apache.aries.blueprint.core</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.aries</groupId>
            <artifactId>org.apache.aries.util</artifactId>
            <version>${aries-util-version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- for testing -->
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>target/schema</directory>
                <includes>
                    <include>**/*</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>

        <plugins>

            <!-- add the sources from camel-core-osgi and camel-core-xml as source code in the camel-blueprint-sources.jar -->
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>build-helper-maven-plugin</artifactId>
              <executions>
                <execution>
                  <id>attach-artifacts</id>
                  <phase>package</phase>
                  <goals>
                    <goal>attach-artifact</goal>
                  </goals>
                  <configuration>
                    <artifacts>
                      <artifact>
                        <file>${project.build.directory}/schema/camel-blueprint.xsd</file>
                        <type>xsd</type>
                      </artifact>
                    </artifacts>
                  </configuration>
                </execution>
              </executions>
            </plugin>

            <!-- enrich the schemas with documentation -->
            <plugin>
              <groupId>org.apache.camel</groupId>
              <artifactId>camel-eip-documentation-enricher-maven-plugin</artifactId>
              <version>${project.version}</version>
              <executions>
                <execution>
                  <id>eip-documentation-enricher</id>
                  <!-- need to run earlier so we use the process-test-resources phase -->
                  <phase>process-test-resources</phase>
                  <goals>
                    <goal>eip-documentation-enricher</goal>
                  </goals>
                  <configuration>
                    <inputCamelSchemaFile>${project.build.directory}/schema/camel-blueprint.xsd</inputCamelSchemaFile>
                    <outputCamelSchemaFile>${project.build.directory}/schema/camel-blueprint.xsd</outputCamelSchemaFile>
                  </configuration>
                </execution>
              </executions>
            </plugin>


        </plugins>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>org.apache.camel</groupId>
                                <artifactId>camel-blueprint</artifactId>
                                <version>${project.version}</version>
                                <type>jar</type>
                                <overWrite>false</overWrite>
                                <outputDirectory>${project.build.directory}/schema</outputDirectory>
                                <includes>camel-blueprint.xsd</includes>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </plugin>
                <!-- Eclipse m2e Lifecycle Management -->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>${lifecycle-mapping-version}</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-antrun-plugin</artifactId>
                                        <versionRange>${maven-antrun-plugin-version}</versionRange>
                                        <goals>
                                            <goal>run</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <profiles>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>package</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <links>
                                <link>http://download.oracle.com/javase/6/docs/api/</link>
                                <link>http://download.oracle.com/javaee/6/api/</link>
                            </links>
                            <stylesheetfile>${basedir}/../../etc/css/stylesheet.css</stylesheetfile>
                            <linksource>true</linksource>
                            <source>${jdk.version}</source>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- The next three profiles are used to bypass the schemagen plugin on HP and IBM JDKs.

             TODO: Whenever Maven supports profile activations based on multiple properties, we
             should combine the on-ibmjdk and on-hpjdk profiles as they do exactly the same thing. -->
        <profile>
          <id>enable-schemagen</id>
          <activation>
            <activeByDefault>true</activeByDefault>
          </activation>

          <build>
            <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <inherited>true</inherited>
                  <dependencies>
                    <!-- need JAXB on the classpath to use the xjc SchemaGenTask -->
                    <dependency>
                      <groupId>com.sun.xml.bind</groupId>
                      <artifactId>jaxb-core</artifactId>
                      <version>${jaxb-version}</version>
                    </dependency>
                    <dependency>
                      <groupId>com.sun.xml.bind</groupId>
                      <artifactId>jaxb-impl</artifactId>
                      <version>${jaxb-version}</version>
                    </dependency>
                    <dependency>
                      <groupId>com.sun.xml.bind</groupId>
                      <artifactId>jaxb-xjc</artifactId>
                      <version>${jaxb-version}</version>
                    </dependency>
                  </dependencies>
                  <executions>
                      <execution>
                          <id>process-sources</id>
                          <phase>process-classes</phase>
                          <configuration>
                              <target>
                                  <taskdef name="schemagen" classname="com.sun.tools.jxc.SchemaGenTask" classpathref="maven.plugin.classpath" />

                                  <echo>Copying to code together for the XSD generation</echo>
                                  <mkdir dir="${project.build.directory}/schema-src" />
                                  <mkdir dir="${project.build.directory}/schema" />
                                  <copy todir="${project.build.directory}/schema-src">
                                      <fileset dir="${basedir}/src/main/java">
                                          <include name="org/apache/camel/blueprint/Camel*.java" />
                                          <include name="org/apache/camel/blueprint/ErrorHandler*.java" />
                                          <include name="org/apache/camel/blueprint/package-info.java" />
                                          <include name="org/apache/camel/util/blueprint/**/*.java" />
                                      </fileset>
                                      <fileset dir="${basedir}/../camel-core-xml/src/main/java">
                                          <include name="org/apache/camel/core/xml/*.java" />
                                          <include name="org/apache/camel/core/xml/util/**/*.java" />
                                      </fileset>
                                      <fileset dir="${basedir}/../../camel-core/src/main/java">
                                          <include name="org/apache/camel/model/**/*.java" />
                                          <include name="org/apache/camel/ExchangePattern.java" />
                                          <include name="org/apache/camel/LoggingLevel.java" />
                                          <include name="org/apache/camel/ManagementStatisticsLevel.java" />
                                          <include name="**/package-info.java" />
                                      </fileset>
                                  </copy>

                                  <echo>Generating XSD schema</echo>
                                  <schemagen srcdir="${project.build.directory}/schema-src" destdir="${project.build.directory}/schema">
                                      <schema namespace="http://camel.apache.org/schema/spring" file="camel-blueprint.xsd" />
                                      <classpath refid="maven.compile.classpath" />
                                  </schemagen>

                              </target>
                          </configuration>
                          <goals>
                              <goal>run</goal>
                          </goals>
                      </execution>
                      <execution>
                        <id>include-sources</id>
                        <phase>package</phase>
                        <configuration>
                          <target>
                            <echo>Including source code from camel-core-xml in the camel-blueprint-sources.jar</echo>
                            <jar destfile="${project.build.directory}/${project.artifactId}-${project.version}-sources.jar" update="true">
                              <fileset dir="${basedir}/../camel-core-osgi/src/main/java" includes="**/*" />
                              <fileset dir="${basedir}/../camel-core-xml/src/main/java" includes="**/*" />
                            </jar>
                          </target>
                        </configuration>
                        <goals>
                          <goal>run</goal>
                        </goals>
                      </execution>
                      <!-- after the eip-documentation-enricher we need to copy some shchema files -->
                      <execution>
                        <id>include-schemas</id>
                        <phase>prepare-package</phase>
                        <configuration>
                          <target>
                            <echo>Copying XSD schema to be included in JAR</echo>
                            <replace file="${project.build.directory}/schema/camel-blueprint.xsd" token="http://camel.apache.org/schema/spring" value="http://camel.apache.org/schema/blueprint" />
                            <copy todir="${project.build.directory}/classes">
                              <fileset dir="${project.build.directory}/schema" />
                            </copy>
                            <!-- copy modified schemas back again in classes so they are included in the JAR -->
                            <copy todir="${project.build.directory}/classes">
                              <fileset dir="${project.build.directory}/schema" />
                            </copy>
                          </target>
                        </configuration>
                        <goals>
                          <goal>run</goal>
                        </goals>
                      </execution>
                  </executions>
              </plugin>
            </plugins>
          </build>
        </profile>        
        <profile>
          <id>on-ibmjdk</id>
          <activation>
            <property>
              <name>java.vendor</name>
              <value>IBM Corporation</value>
            </property>
          </activation>
          <build>
            <plugins>
              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>

                  <execution>
                    <id>unpack</id>
                    <phase>generate-sources</phase>
                    <goals>
                      <goal>unpack</goal>
                    </goals>
                  </execution>

                </executions>
              </plugin>                  
            </plugins>
          </build>

        </profile>    
        <profile>
          <id>on-hpjdk</id>
          <activation>
            <property>
              <name>java.vendor</name>
              <value>Hewlett-Packard Co.</value>
            </property>
          </activation>
          <build>
            <plugins>
              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                  <execution>
                    <id>unpack</id>
                    <phase>generate-sources</phase>
                    <goals>
                      <goal>unpack</goal>
                    </goals>
                  </execution>
                </executions>
              </plugin>                          
            </plugins>
          </build>
        </profile>      
    </profiles>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <links>
                        <link>http://download.oracle.com/javase/6/docs/api/</link>
                        <link>http://download.oracle.com/javaee/6/api/</link>
                        <link>http://static.springsource.org/spring/docs/${spring-version}/javadoc-api/</link>
                    </links>
                    <stylesheetfile>${basedir}/../../etc/css/stylesheet.css</stylesheetfile>
                    <linksource>true</linksource>
                    <maxmemory>256m</maxmemory>
                    <source>${jdk.version}</source>

                    <groups>
                        <group>
                            <title>Camel Blueprint Classes</title>
                            <packages>org.apache.camel.blueprint</packages>
                        </group>
                    </groups>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

</project>
