[maven-release-plugin] copy for tag maven-scr-plugin-1.0.6
git-svn-id: https://svn.apache.org/repos/asf/felix/releases/maven-scr-plugin-1.0.6@673339 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index b6b57fd..42d6da3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
<groupId>org.apache.felix</groupId>
<artifactId>maven-scr-plugin</artifactId>
- <version>1.0.6-SNAPSHOT</version>
+ <version>1.0.6</version>
<packaging>maven-plugin</packaging>
<name>Maven SCR Plugin</name>
@@ -37,9 +37,9 @@
</description>
<scm>
- <connection>scm:svn:http://svn.apache.org/repos/asf/felix/trunk/scrplugin</connection>
- <developerConnection>scm:svn:http://svn.apache.org/repos/asf/felix/trunk/scrplugin</developerConnection>
- <url>http://svn.apache.org/repos/asf/felix/scrplugin</url>
+ <connection>scm:svn:https://svn.apache.org/repos/asf/felix/releases/maven-scr-plugin-1.0.6</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/felix/releases/maven-scr-plugin-1.0.6</developerConnection>
+ <url>scm:svn:https://svn.apache.org/repos/asf/felix/releases/maven-scr-plugin-1.0.6</url>
</scm>
<dependencies>
diff --git a/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java b/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
index d6277f5..37b6678 100644
--- a/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
+++ b/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
@@ -346,7 +346,7 @@
component.setEnabled(Boolean.valueOf(getBoolean(tag, Constants.COMPONENT_ENABLED, true)));
component.setFactory(tag.getNamedParameter(Constants.COMPONENT_FACTORY));
-
+
// FELIX-593: immediate attribute does not default to true all the
// times hence we only set it if declared in the tag
if (tag.getNamedParameter(Constants.COMPONENT_IMMEDIATE) != null) {
@@ -404,13 +404,19 @@
component.setService(service);
boolean serviceFactory = false;
for (int i=0; i < services.length; i++) {
- String name = services[i].getNamedParameter(Constants.SERVICE_INTERFACE);
+ final String name = services[i].getNamedParameter(Constants.SERVICE_INTERFACE);
if (StringUtils.isEmpty(name)) {
this.addInterfaces(service, services[i], description);
} else {
+ // check if the value points to a class/interface
+ // and search through the imports
+ final JavaClassDescription serviceClass = description.getReferencedClass(name);
+ if ( serviceClass == null ) {
+ throw new MojoExecutionException("Interface '"+ name + "' in class " + description.getName() + " does not point to a valid class/interface.");
+ }
final Interface interf = new Interface(services[i]);
- interf.setInterfacename(name);
+ interf.setInterfacename(serviceClass.getName());
service.addInterface(interf);
}
diff --git a/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescription.java b/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescription.java
index 724a395..af008e4 100644
--- a/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescription.java
+++ b/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescription.java
@@ -125,4 +125,15 @@
* @throws MojoExecutionException
*/
boolean isA(String type) throws MojoExecutionException;
+
+ /**
+ * Search for the class.
+ * If the referenced name is not fully qualified, the imports
+ * of the class are searched.
+ * @param referencedName
+ * @return The java class description or null
+ * @throws MojoExecutionException
+ */
+ JavaClassDescription getReferencedClass(String referencedName)
+ throws MojoExecutionException;
}
diff --git a/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java b/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java
index e93455d..d133121 100644
--- a/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java
+++ b/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java
@@ -140,7 +140,8 @@
final Artifact declared = (Artifact) it.next();
this.log.debug("Checking artifact " + declared);
if (Artifact.SCOPE_COMPILE.equals(declared.getScope())
- || Artifact.SCOPE_RUNTIME.equals(declared.getScope())) {
+ || Artifact.SCOPE_RUNTIME.equals(declared.getScope())
+ || Artifact.SCOPE_PROVIDED.equals(declared.getScope())) {
this.log.debug("Resolving artifact " + declared);
final Artifact artifact = (Artifact) resolved.get(ArtifactUtils.versionlessKey(declared));
if (artifact != null) {
diff --git a/src/main/java/org/apache/felix/scrplugin/tags/cl/ClassLoaderJavaClassDescription.java b/src/main/java/org/apache/felix/scrplugin/tags/cl/ClassLoaderJavaClassDescription.java
index cb69ee2..576c08a 100644
--- a/src/main/java/org/apache/felix/scrplugin/tags/cl/ClassLoaderJavaClassDescription.java
+++ b/src/main/java/org/apache/felix/scrplugin/tags/cl/ClassLoaderJavaClassDescription.java
@@ -88,6 +88,14 @@
}
/**
+ * @see org.apache.felix.scrplugin.tags.JavaClassDescription#getReferencedClass(java.lang.String)
+ */
+ public JavaClassDescription getReferencedClass(String referencedName)
+ throws MojoExecutionException {
+ throw new MojoExecutionException("getDescription not support for this class.");
+ }
+
+ /**
* @see org.apache.felix.scrplugin.tags.JavaClassDescription#getImplementedInterfaces()
*/
public JavaClassDescription[] getImplementedInterfaces() throws MojoExecutionException {
diff --git a/src/main/java/org/apache/felix/scrplugin/tags/qdox/QDoxJavaClassDescription.java b/src/main/java/org/apache/felix/scrplugin/tags/qdox/QDoxJavaClassDescription.java
index db58728..e87c2ae 100644
--- a/src/main/java/org/apache/felix/scrplugin/tags/qdox/QDoxJavaClassDescription.java
+++ b/src/main/java/org/apache/felix/scrplugin/tags/qdox/QDoxJavaClassDescription.java
@@ -203,6 +203,28 @@
}
/**
+ * @see org.apache.felix.scrplugin.tags.JavaClassDescription#getReferencedClass(java.lang.String)
+ */
+ public JavaClassDescription getReferencedClass(final String referencedName) {
+ String className = referencedName;
+ int pos = className.indexOf('.');
+ if ( pos == -1 ) {
+ className = this.searchImport('.' + referencedName);
+ }
+ if ( className == null ) {
+ if ( pos != -1 ) {
+ return null;
+ }
+ className = this.javaClass.getSource().getPackage() + '.' + referencedName;
+ }
+ try {
+ return this.manager.getJavaClassDescription(className);
+ } catch (MojoExecutionException mee) {
+ return null;
+ }
+ }
+
+ /**
* @see org.apache.felix.scrplugin.tags.JavaClassDescription#getImplementedInterfaces()
*/
public JavaClassDescription[] getImplementedInterfaces()