Author: alien11689 Date: Sun Aug 6 10:53:10 2017 New Revision: 1804230 URL: http://svn.apache.org/viewvc?rev=1804230&view=rev Log: [ARIES-1735] Detect beans with the same id, but different classes
Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/ aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/invoker.properties aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/pom.xml aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/ aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/ aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/ aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p1/ aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p1/T1.java aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p1/T2.java aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p2/ aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p2/T1.java aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/verify.groovy aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ConflictDetected.java Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/pom.xml aries/trunk/blueprint/plugin/blueprint-maven-plugin-spi/pom.xml aries/trunk/blueprint/plugin/blueprint-maven-plugin/pom.xml aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/GenerateMojo.java aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRefStore.java Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/pom.xml?rev=1804230&r1=1804229&r2=1804230&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/pom.xml (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin-annotation/pom.xml Sun Aug 6 10:53:10 2017 @@ -47,6 +47,6 @@ </aries.osgi.export.pkg> <aries.osgi.import.pkg /> <aries.osgi.private.pkg /> - <lastReleaseVersion>1.0.0</lastReleaseVersion> + <lastReleaseVersion>1.1.0</lastReleaseVersion> </properties> </project> Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/invoker.properties URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/invoker.properties?rev=1804230&view=auto ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/invoker.properties (added) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/invoker.properties Sun Aug 6 10:53:10 2017 @@ -0,0 +1 @@ +invoker.buildResult = failure \ No newline at end of file Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/pom.xml?rev=1804230&view=auto ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/pom.xml (added) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/pom.xml Sun Aug 6 10:53:10 2017 @@ -0,0 +1,54 @@ +<!-- + 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/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.aries.blueprint.plugin.itest</groupId> + <artifactId>simple-project</artifactId> + <version>1.0.0-SNAPSHOT</version> + <packaging>jar</packaging> + + <dependencies> + <dependency> + <groupId>javax.inject</groupId> + <artifactId>javax.inject</artifactId> + <version>1</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.aries.blueprint</groupId> + <artifactId>blueprint-maven-plugin</artifactId> + <version>@blueprint-maven-plugin.version@</version> + <executions> + <execution> + <goals> + <goal>add-resource-dir</goal> + <goal>blueprint-generate</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> \ No newline at end of file Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p1/T1.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p1/T1.java?rev=1804230&view=auto ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p1/T1.java (added) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p1/T1.java Sun Aug 6 10:53:10 2017 @@ -0,0 +1,26 @@ +/** + * 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 + * <p/> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p/> + * 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. + */ +package p1; + +import javax.inject.Singleton; + +@Singleton +public class T1 { + +} \ No newline at end of file Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p1/T2.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p1/T2.java?rev=1804230&view=auto ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p1/T2.java (added) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p1/T2.java Sun Aug 6 10:53:10 2017 @@ -0,0 +1,22 @@ +/** + * 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 + * <p/> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p/> + * 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. + */ +package p1; + +public class T2 { +} Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p2/T1.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p2/T1.java?rev=1804230&view=auto ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p2/T1.java (added) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/src/main/java/p2/T1.java Sun Aug 6 10:53:10 2017 @@ -0,0 +1,26 @@ +/** + * 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 + * <p/> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p/> + * 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. + */ +package p2; + +import javax.inject.Singleton; + +@Singleton +public class T1 { + +} \ No newline at end of file Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/verify.groovy URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/verify.groovy?rev=1804230&view=auto ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/verify.groovy (added) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin-itest/src/it/fail-on-conflict/verify.groovy Sun Aug 6 10:53:10 2017 @@ -0,0 +1,24 @@ +/* + * 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. + */ + +def file = new File(basedir, 'target/generated-sources/blueprint/OSGI-INF/blueprint/autowire.xml') +assert !file.exists() +def log = new File(basedir, 'build.log') +log.text.contains('Found two beans with id `t1`, but different classes: [p1.T1, p2.T1]') + Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin-spi/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin-spi/pom.xml?rev=1804230&r1=1804229&r2=1804230&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin-spi/pom.xml (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin-spi/pom.xml Sun Aug 6 10:53:10 2017 @@ -30,6 +30,7 @@ <groupId>org.apache.aries.blueprint</groupId> <artifactId>blueprint-maven-plugin-spi</artifactId> <version>1.0.1-SNAPSHOT</version> + <name>Apache Aries Blueprint Maven Plugin SPI</name> <scm> <connection>scm:svn:http://svn.apache.org/repos/asf/aries/trunk/blueprint/plugin/blueprint-maven-plugin-spi</connection> @@ -49,5 +50,4 @@ </plugins> </build> - <name>Apache Aries Blueprint Maven Plugin SPI</name> </project> Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/pom.xml?rev=1804230&r1=1804229&r2=1804230&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/pom.xml (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/pom.xml Sun Aug 6 10:53:10 2017 @@ -17,7 +17,8 @@ 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/xsd/maven-4.0.0.xsd"> +<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> @@ -25,7 +26,7 @@ <groupId>org.apache.aries</groupId> <artifactId>parent</artifactId> <version>2.0.1</version> - <relativePath /> + <relativePath/> </parent> <groupId>org.apache.aries.blueprint</groupId> @@ -40,14 +41,38 @@ <properties> <maven.version>3.0.5</maven.version> <aether.version>1.11</aether.version> + <maven-plugin-plugin.version>3.4</maven-plugin-plugin.version> + <lifecycle-mapping.version>1.0.0</lifecycle-mapping.version> + + <blueprint-maven-plugin-spi.version>1.0.1-SNAPSHOT</blueprint-maven-plugin-spi.version> + <blueprint-maven-plugin-spring-handlers.version>1.0.0</blueprint-maven-plugin-spring-handlers.version> + <blueprint-maven-plugin-annotation.version>1.1.1-SNAPSHOT</blueprint-maven-plugin-annotation.version> + + <javax.inject.version>1</javax.inject.version> + <javax.transaction-api.version>1.2</javax.transaction-api.version> + <javax.transaction.cdi-api.version>1.2-b03</javax.transaction.cdi-api.version> + <cdi-api.version>1.2</cdi-api.version> + <persistence-api.version>1.0.2</persistence-api.version> + <pax-cdi-api.version>0.8.0</pax-cdi-api.version> + + <wagon-http-lightweight.version>2.6</wagon-http-lightweight.version> + <slf4j-jdk14.version>1.7.7</slf4j-jdk14.version> + <maven-filtering.version>1.0-beta-4</maven-filtering.version> + <plexus-build-api.version>0.0.7</plexus-build-api.version> + <plexus-utils.version>3.0</plexus-utils.version> + <osgi.cmpn.version>6.0.0</osgi.cmpn.version> + <xbean-finder-shaded.version>4.5</xbean-finder-shaded.version> + + <org.apache.aries.blueprint.api.version>1.0.1</org.apache.aries.blueprint.api.version> + <org.apache.aries.blueprint.core.version>1.7.1</org.apache.aries.blueprint.core.version> + <org.apache.aries.transaction.blueprint.version>1.1.1</org.apache.aries.transaction.blueprint.version> + <org.apache.aries.jpa.blueprint.aries.version>1.0.2</org.apache.aries.jpa.blueprint.aries.version> + <org.apache.aries.blueprint.cm.version>1.0.9</org.apache.aries.blueprint.cm.version> </properties> <scm> - <connection>scm:svn:http://svn.apache.org/repos/asf/aries/trunk/blueprint/plugin/blueprint-maven-plugin - </connection> - <developerConnection> - scm:svn:https://svn.apache.org/repos/asf/aries/trunk/blueprint/plugin/blueprint-maven-plugin - </developerConnection> + <connection>scm:svn:http://svn.apache.org/repos/asf/aries/trunk/blueprint/plugin/blueprint-maven-plugin</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/aries/trunk/blueprint/plugin/blueprint-maven-plugin</developerConnection> <url>http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin</url> </scm> @@ -62,7 +87,7 @@ </plugin> <plugin> <artifactId>maven-plugin-plugin</artifactId> - <version>3.4</version> + <version>${maven-plugin-plugin.version}</version> <executions> <execution> <id>default-descriptor</id> @@ -107,7 +132,7 @@ <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> - <version>1.0.0</version> + <version>${lifecycle-mapping.version}</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> @@ -127,7 +152,7 @@ </goals> </pluginExecutionFilter> <action> - <ignore /> + <ignore/> </action> </pluginExecution> </pluginExecutions> @@ -143,54 +168,54 @@ <dependency> <groupId>org.apache.aries.blueprint</groupId> <artifactId>blueprint-maven-plugin-spi</artifactId> - <version>1.0.1-SNAPSHOT</version> + <version>${blueprint-maven-plugin-spi.version}</version> </dependency> <dependency> <groupId>org.apache.aries.blueprint</groupId> <artifactId>blueprint-maven-plugin-spring-handlers</artifactId> - <version>1.0.0</version> + <version>${blueprint-maven-plugin-spring-handlers.version}</version> </dependency> <dependency> <groupId>org.apache.maven.plugin-tools</groupId> <artifactId>maven-plugin-annotations</artifactId> - <version>3.4</version> + <version>${maven-plugin-plugin.version}</version> </dependency> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> - <version>1</version> + <version>${javax.inject.version}</version> </dependency> <dependency> <groupId>javax.transaction</groupId> <artifactId>javax.transaction-api</artifactId> - <version>1.2</version> + <version>${javax.transaction-api.version}</version> </dependency> <dependency> <groupId>javax.enterprise</groupId> <artifactId>cdi-api</artifactId> - <version>1.2</version> + <version>${cdi-api.version}</version> </dependency> <dependency> <groupId>javax.persistence</groupId> <artifactId>persistence-api</artifactId> - <version>1.0.2</version> + <version>${persistence-api.version}</version> </dependency> <dependency> <groupId>org.ops4j.pax.cdi</groupId> <artifactId>pax-cdi-api</artifactId> - <version>0.8.0</version> + <version>${pax-cdi-api.version}</version> </dependency> <dependency> <groupId>org.osgi</groupId> <artifactId>osgi.cmpn</artifactId> - <version>6.0.0</version> + <version>${osgi.cmpn.version}</version> </dependency> <dependency> <groupId>org.apache.aries.blueprint</groupId> <artifactId>blueprint-maven-plugin-annotation</artifactId> - <version>1.1.1-SNAPSHOT</version> + <version>${blueprint-maven-plugin-annotation.version}</version> </dependency> <dependency> <groupId>org.apache.maven</groupId> @@ -225,7 +250,7 @@ <dependency> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-http-lightweight</artifactId> - <version>2.6</version> + <version>${wagon-http-lightweight.version}</version> </dependency> <dependency> <groupId>org.osgi</groupId> @@ -235,35 +260,35 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> - <version>1.7.7</version> + <version>${slf4j-jdk14.version}</version> </dependency> <dependency> <groupId>org.apache.maven.shared</groupId> <artifactId>maven-filtering</artifactId> - <version>1.0-beta-4</version> + <version>${maven-filtering.version}</version> </dependency> <dependency> <groupId>org.sonatype.plexus</groupId> <artifactId>plexus-build-api</artifactId> - <version>0.0.7</version> + <version>${plexus-build-api.version}</version> </dependency> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-utils</artifactId> - <version>3.0</version> + <version>${plexus-utils.version}</version> </dependency> <dependency> <groupId>org.apache.xbean</groupId> <artifactId>xbean-finder-shaded</artifactId> - <version>4.5</version> + <version>${xbean-finder-shaded.version}</version> </dependency> <!-- For the CDI annotations --> <dependency> <groupId>javax.transaction.cdi</groupId> <artifactId>javax.transaction.cdi-api</artifactId> - <version>1.2-b03</version> + <version>${javax.transaction.cdi-api.version}</version> </dependency> <dependency> @@ -275,34 +300,33 @@ <dependency> <groupId>org.apache.aries.blueprint</groupId> <artifactId>org.apache.aries.blueprint.api</artifactId> - <version>1.0.1</version> + <version>${org.apache.aries.blueprint.api.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.aries.blueprint</groupId> <artifactId>org.apache.aries.blueprint.core</artifactId> - <version>1.7.1</version> + <version>${org.apache.aries.blueprint.core.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.aries.transaction</groupId> <artifactId>org.apache.aries.transaction.blueprint</artifactId> - <version>1.1.1</version> + <version>${org.apache.aries.transaction.blueprint.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.aries.jpa</groupId> <artifactId>org.apache.aries.jpa.blueprint.aries</artifactId> - <version>1.0.2</version> + <version>${org.apache.aries.jpa.blueprint.aries.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.aries.blueprint</groupId> <artifactId>org.apache.aries.blueprint.cm</artifactId> - <version>1.0.9</version> + <version>${org.apache.aries.blueprint.cm.version}</version> <scope>test</scope> </dependency> - </dependencies> </project> Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/GenerateMojo.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/GenerateMojo.java?rev=1804230&r1=1804229&r2=1804230&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/GenerateMojo.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/GenerateMojo.java Sun Aug 6 10:53:10 2017 @@ -19,6 +19,7 @@ package org.apache.aries.blueprint.plugin; import org.apache.aries.blueprint.plugin.model.Blueprint; +import org.apache.aries.blueprint.plugin.model.ConflictDetected; import org.apache.aries.blueprint.plugin.spi.Activation; import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.AbstractMojo; @@ -112,15 +113,21 @@ public class GenerateMojo extends Abstra BlueprintConfigurationImpl blueprintConfiguration = new BlueprintConfigurationImpl(namespaces, defaultActivation, customParameters); try { - ClassFinder classFinder = createProjectScopeFinder(); - Set<Class<?>> classes = FilteredClassFinder.findClasses(classFinder, toScan); - Blueprint blueprint = new Blueprint(blueprintConfiguration, classes); - writeBlueprintIfNeeded(blueprint); + generateBlueprint(toScan, blueprintConfiguration); + } catch (ConflictDetected e) { + throw new MojoExecutionException(e.getMessage(), e); } catch (Exception e) { - throw new MojoExecutionException("Error building commands help", e); + throw new MojoExecutionException("Error during blueprint generation", e); } } + private void generateBlueprint(List<String> toScan, BlueprintConfigurationImpl blueprintConfiguration) throws Exception { + ClassFinder classFinder = createProjectScopeFinder(); + Set<Class<?>> classes = FilteredClassFinder.findClasses(classFinder, toScan); + Blueprint blueprint = new Blueprint(blueprintConfiguration, classes); + writeBlueprintIfNeeded(blueprint); + } + private void writeBlueprintIfNeeded(Blueprint blueprint) throws Exception { if (blueprint.shouldBeGenerated()) { writeBlueprint(blueprint); Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java?rev=1804230&r1=1804229&r2=1804230&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRef.java Sun Aug 6 10:53:10 2017 @@ -21,9 +21,9 @@ package org.apache.aries.blueprint.plugi import java.lang.annotation.Annotation; import java.util.Set; -class BeanRef implements Comparable<BeanRef> { +final class BeanRef implements Comparable<BeanRef> { final String id; - private final Class<?> clazz; + final Class<?> clazz; private final Set<Annotation> qualifiers; BeanRef(Class<?> clazz, String id, Annotation[] qualifiers) { @@ -42,4 +42,7 @@ class BeanRef implements Comparable<Bean return this.id.compareTo(other.id); } + boolean conflictsWith(BeanRef bean) { + return id.equals(bean.id) && !clazz.equals(bean.clazz); + } } Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRefStore.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRefStore.java?rev=1804230&r1=1804229&r2=1804230&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRefStore.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/BeanRefStore.java Sun Aug 6 10:53:10 2017 @@ -28,11 +28,16 @@ class BeanRefStore { private SortedSet<BeanRef> reg = new TreeSet<BeanRef>(); void addBean(BeanRef beanRef) { + rejectOnConflict(beanRef); reg.add(beanRef); } - Collection<BeanRef> getBeans() { - return reg; + private void rejectOnConflict(BeanRef beanRef) { + for (BeanRef bean : reg) { + if(beanRef.conflictsWith(bean)){ + throw new ConflictDetected(beanRef, bean); + } + } } BeanRef getMatching(BeanTemplate template) { Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ConflictDetected.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ConflictDetected.java?rev=1804230&view=auto ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ConflictDetected.java (added) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/model/ConflictDetected.java Sun Aug 6 10:53:10 2017 @@ -0,0 +1,25 @@ +/** + * 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 + * <p/> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p/> + * 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. + */ +package org.apache.aries.blueprint.plugin.model; + +public class ConflictDetected extends RuntimeException { + ConflictDetected(BeanRef bean1, BeanRef bean2) { + super(String.format("Found two beans with id `%s`, but different classes: [%s, %s]", bean1.id, bean1.clazz.getName(), bean2.clazz.getName())); + } +}