You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Rembert Magri (JIRA)" <ji...@apache.org> on 2009/10/28 16:06:59 UTC

[jira] Created: (FELIX-1819) Problem trying

Problem trying 
---------------

                 Key: FELIX-1819
                 URL: https://issues.apache.org/jira/browse/FELIX-1819
             Project: Felix
          Issue Type: Bug
          Components: Maven SCR Plugin
    Affects Versions: maven-scr-plugin-1.2.0
            Reporter: Rembert Magri
             Fix For: maven-scr-plugin-1.4.1
         Attachments: JavaClassDescriptorManager.java

When adding dependencies with "provided" scope, the plugin cannot find the bundle correctly. I fixed the problem by changing the getManifest and getFile methods as follows:

protected Manifest getManifest(Artifact artifact) throws IOException {
    	if (!this.isJavaArtifact(artifact)) {
    		throw new IllegalArgumentException("Trying to load Manifest from a non-Java type");
    	}
    	
    	if ("bundle".equals(artifact.getType())) {
    		return getManifestFromBundle(artifact);
    	}
    	
    	return getManifestFromJarFile(artifact);
        
    }

	private Manifest getManifestFromBundle(Artifact artifact)
			throws FileNotFoundException, IOException {
		//artifact.getFile() returns {project}/target/classes, and I want {project}/META-INF/MANIFEST.MF
		File file = getFileFromBundle(artifact, "META-INF/MANIFEST.MF");
		FileInputStream manifestInputStream = null;
		try {
			manifestInputStream = new FileInputStream(file);
			return new Manifest(manifestInputStream);
		} finally {
			if (manifestInputStream != null) {
				try {
					manifestInputStream.close();
		        } catch (IOException ignore) {
		        }
			}
		}
	}

	private Manifest getManifestFromJarFile(Artifact artifact)
			throws IOException {
		JarFile file = null;
		try {
		    file = new JarFile(artifact.getFile());
		    return file.getManifest();
		} finally {
		    if (file != null) {
		        try {
		            file.close();
		        } catch (IOException ignore) {
		        }
		    }
		}
	}

    protected File getFile(Artifact artifact, String path) throws IOException {
    	if ("bundle".equals(artifact.getType())) {
    		return getFileFromBundle(artifact, path);
    	}
    	
        return getFileFromJar(artifact, path);
    }

	private File getFileFromBundle(Artifact artifact, String path) throws FileNotFoundException {
		//artifact.getFile() returns {project}/target/classes, and I want {project}/path
		File file = artifact.getFile();
		File targetFile = new File(file.getParentFile().getParentFile(),path);
		if (targetFile.canRead()) {
			return targetFile;
		}
		log.warn("Won't be able to read: " + targetFile);
		return null;
	}

	private File getFileFromJar(Artifact artifact, String path)
			throws IOException, FileNotFoundException {
		final int pos = path.lastIndexOf('.');
        final String suffix = path.substring(pos + 1);
        JarFile file = null;
        File tmpFile = null;
        try {
            file = new JarFile(artifact.getFile());
            final JarEntry entry = file.getJarEntry(path);
            if ( entry != null ) {
                tmpFile = File.createTempFile("scrjcdm" + artifact.getArtifactId(), suffix);
                tmpFile.deleteOnExit();
                final FileOutputStream fos = new FileOutputStream(tmpFile);
                IOUtil.copy(file.getInputStream(entry), fos);
                IOUtil.close(fos);
                return tmpFile;
            }
            return null;
        } finally {
            if (file != null) {
                try {
                    file.close();
                } catch (IOException ignore) {
                }
            }
        }
	}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (FELIX-1819) Problem with dependencies resolution

Posted by "Carsten Ziegeler (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/FELIX-1819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Carsten Ziegeler resolved FELIX-1819.
-------------------------------------

    Resolution: Cannot Reproduce

Many thanks for the update!
I'll resolve this bug to cannot reproduce.

> Problem with dependencies resolution
> ------------------------------------
>
>                 Key: FELIX-1819
>                 URL: https://issues.apache.org/jira/browse/FELIX-1819
>             Project: Felix
>          Issue Type: Bug
>          Components: Maven SCR Plugin
>    Affects Versions: maven-scr-plugin-1.2.0
>            Reporter: Rembert Magri
>            Assignee: Carsten Ziegeler
>             Fix For: maven-scr-plugin-1.4.1
>
>         Attachments: JavaClassDescriptorManager.java
>
>
> When adding dependencies with "provided" scope, the plugin cannot find the bundle correctly. I fixed the problem by changing the getManifest and getFile methods as follows:
> protected Manifest getManifest(Artifact artifact) throws IOException {
>     	if (!this.isJavaArtifact(artifact)) {
>     		throw new IllegalArgumentException("Trying to load Manifest from a non-Java type");
>     	}
>     	
>     	if ("bundle".equals(artifact.getType())) {
>     		return getManifestFromBundle(artifact);
>     	}
>     	
>     	return getManifestFromJarFile(artifact);
>         
>     }
> 	private Manifest getManifestFromBundle(Artifact artifact)
> 			throws FileNotFoundException, IOException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/META-INF/MANIFEST.MF
> 		File file = getFileFromBundle(artifact, "META-INF/MANIFEST.MF");
> 		FileInputStream manifestInputStream = null;
> 		try {
> 			manifestInputStream = new FileInputStream(file);
> 			return new Manifest(manifestInputStream);
> 		} finally {
> 			if (manifestInputStream != null) {
> 				try {
> 					manifestInputStream.close();
> 		        } catch (IOException ignore) {
> 		        }
> 			}
> 		}
> 	}
> 	private Manifest getManifestFromJarFile(Artifact artifact)
> 			throws IOException {
> 		JarFile file = null;
> 		try {
> 		    file = new JarFile(artifact.getFile());
> 		    return file.getManifest();
> 		} finally {
> 		    if (file != null) {
> 		        try {
> 		            file.close();
> 		        } catch (IOException ignore) {
> 		        }
> 		    }
> 		}
> 	}
>     protected File getFile(Artifact artifact, String path) throws IOException {
>     	if ("bundle".equals(artifact.getType())) {
>     		return getFileFromBundle(artifact, path);
>     	}
>     	
>         return getFileFromJar(artifact, path);
>     }
> 	private File getFileFromBundle(Artifact artifact, String path) throws FileNotFoundException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/path
> 		File file = artifact.getFile();
> 		File targetFile = new File(file.getParentFile().getParentFile(),path);
> 		if (targetFile.canRead()) {
> 			return targetFile;
> 		}
> 		log.warn("Won't be able to read: " + targetFile);
> 		return null;
> 	}
> 	private File getFileFromJar(Artifact artifact, String path)
> 			throws IOException, FileNotFoundException {
> 		final int pos = path.lastIndexOf('.');
>         final String suffix = path.substring(pos + 1);
>         JarFile file = null;
>         File tmpFile = null;
>         try {
>             file = new JarFile(artifact.getFile());
>             final JarEntry entry = file.getJarEntry(path);
>             if ( entry != null ) {
>                 tmpFile = File.createTempFile("scrjcdm" + artifact.getArtifactId(), suffix);
>                 tmpFile.deleteOnExit();
>                 final FileOutputStream fos = new FileOutputStream(tmpFile);
>                 IOUtil.copy(file.getInputStream(entry), fos);
>                 IOUtil.close(fos);
>                 return tmpFile;
>             }
>             return null;
>         } finally {
>             if (file != null) {
>                 try {
>                     file.close();
>                 } catch (IOException ignore) {
>                 }
>             }
>         }
> 	}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (FELIX-1819) Problem with dependencies resolution

Posted by "Rembert Magri (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/FELIX-1819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rembert Magri updated FELIX-1819:
---------------------------------

    Summary: Problem with dependencies resolution  (was: Problem trying )

> Problem with dependencies resolution
> ------------------------------------
>
>                 Key: FELIX-1819
>                 URL: https://issues.apache.org/jira/browse/FELIX-1819
>             Project: Felix
>          Issue Type: Bug
>          Components: Maven SCR Plugin
>    Affects Versions: maven-scr-plugin-1.2.0
>            Reporter: Rembert Magri
>             Fix For: maven-scr-plugin-1.4.1
>
>         Attachments: JavaClassDescriptorManager.java
>
>
> When adding dependencies with "provided" scope, the plugin cannot find the bundle correctly. I fixed the problem by changing the getManifest and getFile methods as follows:
> protected Manifest getManifest(Artifact artifact) throws IOException {
>     	if (!this.isJavaArtifact(artifact)) {
>     		throw new IllegalArgumentException("Trying to load Manifest from a non-Java type");
>     	}
>     	
>     	if ("bundle".equals(artifact.getType())) {
>     		return getManifestFromBundle(artifact);
>     	}
>     	
>     	return getManifestFromJarFile(artifact);
>         
>     }
> 	private Manifest getManifestFromBundle(Artifact artifact)
> 			throws FileNotFoundException, IOException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/META-INF/MANIFEST.MF
> 		File file = getFileFromBundle(artifact, "META-INF/MANIFEST.MF");
> 		FileInputStream manifestInputStream = null;
> 		try {
> 			manifestInputStream = new FileInputStream(file);
> 			return new Manifest(manifestInputStream);
> 		} finally {
> 			if (manifestInputStream != null) {
> 				try {
> 					manifestInputStream.close();
> 		        } catch (IOException ignore) {
> 		        }
> 			}
> 		}
> 	}
> 	private Manifest getManifestFromJarFile(Artifact artifact)
> 			throws IOException {
> 		JarFile file = null;
> 		try {
> 		    file = new JarFile(artifact.getFile());
> 		    return file.getManifest();
> 		} finally {
> 		    if (file != null) {
> 		        try {
> 		            file.close();
> 		        } catch (IOException ignore) {
> 		        }
> 		    }
> 		}
> 	}
>     protected File getFile(Artifact artifact, String path) throws IOException {
>     	if ("bundle".equals(artifact.getType())) {
>     		return getFileFromBundle(artifact, path);
>     	}
>     	
>         return getFileFromJar(artifact, path);
>     }
> 	private File getFileFromBundle(Artifact artifact, String path) throws FileNotFoundException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/path
> 		File file = artifact.getFile();
> 		File targetFile = new File(file.getParentFile().getParentFile(),path);
> 		if (targetFile.canRead()) {
> 			return targetFile;
> 		}
> 		log.warn("Won't be able to read: " + targetFile);
> 		return null;
> 	}
> 	private File getFileFromJar(Artifact artifact, String path)
> 			throws IOException, FileNotFoundException {
> 		final int pos = path.lastIndexOf('.');
>         final String suffix = path.substring(pos + 1);
>         JarFile file = null;
>         File tmpFile = null;
>         try {
>             file = new JarFile(artifact.getFile());
>             final JarEntry entry = file.getJarEntry(path);
>             if ( entry != null ) {
>                 tmpFile = File.createTempFile("scrjcdm" + artifact.getArtifactId(), suffix);
>                 tmpFile.deleteOnExit();
>                 final FileOutputStream fos = new FileOutputStream(tmpFile);
>                 IOUtil.copy(file.getInputStream(entry), fos);
>                 IOUtil.close(fos);
>                 return tmpFile;
>             }
>             return null;
>         } finally {
>             if (file != null) {
>                 try {
>                     file.close();
>                 } catch (IOException ignore) {
>                 }
>             }
>         }
> 	}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (FELIX-1819) Problem with dependencies resolution

Posted by "Carsten Ziegeler (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/FELIX-1819?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12773143#action_12773143 ] 

Carsten Ziegeler commented on FELIX-1819:
-----------------------------------------

Could you please create a proper patch for the current trunk?

> Problem with dependencies resolution
> ------------------------------------
>
>                 Key: FELIX-1819
>                 URL: https://issues.apache.org/jira/browse/FELIX-1819
>             Project: Felix
>          Issue Type: Bug
>          Components: Maven SCR Plugin
>    Affects Versions: maven-scr-plugin-1.2.0
>            Reporter: Rembert Magri
>            Assignee: Carsten Ziegeler
>             Fix For: maven-scr-plugin-1.4.1
>
>         Attachments: JavaClassDescriptorManager.java
>
>
> When adding dependencies with "provided" scope, the plugin cannot find the bundle correctly. I fixed the problem by changing the getManifest and getFile methods as follows:
> protected Manifest getManifest(Artifact artifact) throws IOException {
>     	if (!this.isJavaArtifact(artifact)) {
>     		throw new IllegalArgumentException("Trying to load Manifest from a non-Java type");
>     	}
>     	
>     	if ("bundle".equals(artifact.getType())) {
>     		return getManifestFromBundle(artifact);
>     	}
>     	
>     	return getManifestFromJarFile(artifact);
>         
>     }
> 	private Manifest getManifestFromBundle(Artifact artifact)
> 			throws FileNotFoundException, IOException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/META-INF/MANIFEST.MF
> 		File file = getFileFromBundle(artifact, "META-INF/MANIFEST.MF");
> 		FileInputStream manifestInputStream = null;
> 		try {
> 			manifestInputStream = new FileInputStream(file);
> 			return new Manifest(manifestInputStream);
> 		} finally {
> 			if (manifestInputStream != null) {
> 				try {
> 					manifestInputStream.close();
> 		        } catch (IOException ignore) {
> 		        }
> 			}
> 		}
> 	}
> 	private Manifest getManifestFromJarFile(Artifact artifact)
> 			throws IOException {
> 		JarFile file = null;
> 		try {
> 		    file = new JarFile(artifact.getFile());
> 		    return file.getManifest();
> 		} finally {
> 		    if (file != null) {
> 		        try {
> 		            file.close();
> 		        } catch (IOException ignore) {
> 		        }
> 		    }
> 		}
> 	}
>     protected File getFile(Artifact artifact, String path) throws IOException {
>     	if ("bundle".equals(artifact.getType())) {
>     		return getFileFromBundle(artifact, path);
>     	}
>     	
>         return getFileFromJar(artifact, path);
>     }
> 	private File getFileFromBundle(Artifact artifact, String path) throws FileNotFoundException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/path
> 		File file = artifact.getFile();
> 		File targetFile = new File(file.getParentFile().getParentFile(),path);
> 		if (targetFile.canRead()) {
> 			return targetFile;
> 		}
> 		log.warn("Won't be able to read: " + targetFile);
> 		return null;
> 	}
> 	private File getFileFromJar(Artifact artifact, String path)
> 			throws IOException, FileNotFoundException {
> 		final int pos = path.lastIndexOf('.');
>         final String suffix = path.substring(pos + 1);
>         JarFile file = null;
>         File tmpFile = null;
>         try {
>             file = new JarFile(artifact.getFile());
>             final JarEntry entry = file.getJarEntry(path);
>             if ( entry != null ) {
>                 tmpFile = File.createTempFile("scrjcdm" + artifact.getArtifactId(), suffix);
>                 tmpFile.deleteOnExit();
>                 final FileOutputStream fos = new FileOutputStream(tmpFile);
>                 IOUtil.copy(file.getInputStream(entry), fos);
>                 IOUtil.close(fos);
>                 return tmpFile;
>             }
>             return null;
>         } finally {
>             if (file != null) {
>                 try {
>                     file.close();
>                 } catch (IOException ignore) {
>                 }
>             }
>         }
> 	}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (FELIX-1819) Problem trying

Posted by "Rembert Magri (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/FELIX-1819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rembert Magri updated FELIX-1819:
---------------------------------

    Attachment: JavaClassDescriptorManager.java

> Problem trying 
> ---------------
>
>                 Key: FELIX-1819
>                 URL: https://issues.apache.org/jira/browse/FELIX-1819
>             Project: Felix
>          Issue Type: Bug
>          Components: Maven SCR Plugin
>    Affects Versions: maven-scr-plugin-1.2.0
>            Reporter: Rembert Magri
>             Fix For: maven-scr-plugin-1.4.1
>
>         Attachments: JavaClassDescriptorManager.java
>
>
> When adding dependencies with "provided" scope, the plugin cannot find the bundle correctly. I fixed the problem by changing the getManifest and getFile methods as follows:
> protected Manifest getManifest(Artifact artifact) throws IOException {
>     	if (!this.isJavaArtifact(artifact)) {
>     		throw new IllegalArgumentException("Trying to load Manifest from a non-Java type");
>     	}
>     	
>     	if ("bundle".equals(artifact.getType())) {
>     		return getManifestFromBundle(artifact);
>     	}
>     	
>     	return getManifestFromJarFile(artifact);
>         
>     }
> 	private Manifest getManifestFromBundle(Artifact artifact)
> 			throws FileNotFoundException, IOException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/META-INF/MANIFEST.MF
> 		File file = getFileFromBundle(artifact, "META-INF/MANIFEST.MF");
> 		FileInputStream manifestInputStream = null;
> 		try {
> 			manifestInputStream = new FileInputStream(file);
> 			return new Manifest(manifestInputStream);
> 		} finally {
> 			if (manifestInputStream != null) {
> 				try {
> 					manifestInputStream.close();
> 		        } catch (IOException ignore) {
> 		        }
> 			}
> 		}
> 	}
> 	private Manifest getManifestFromJarFile(Artifact artifact)
> 			throws IOException {
> 		JarFile file = null;
> 		try {
> 		    file = new JarFile(artifact.getFile());
> 		    return file.getManifest();
> 		} finally {
> 		    if (file != null) {
> 		        try {
> 		            file.close();
> 		        } catch (IOException ignore) {
> 		        }
> 		    }
> 		}
> 	}
>     protected File getFile(Artifact artifact, String path) throws IOException {
>     	if ("bundle".equals(artifact.getType())) {
>     		return getFileFromBundle(artifact, path);
>     	}
>     	
>         return getFileFromJar(artifact, path);
>     }
> 	private File getFileFromBundle(Artifact artifact, String path) throws FileNotFoundException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/path
> 		File file = artifact.getFile();
> 		File targetFile = new File(file.getParentFile().getParentFile(),path);
> 		if (targetFile.canRead()) {
> 			return targetFile;
> 		}
> 		log.warn("Won't be able to read: " + targetFile);
> 		return null;
> 	}
> 	private File getFileFromJar(Artifact artifact, String path)
> 			throws IOException, FileNotFoundException {
> 		final int pos = path.lastIndexOf('.');
>         final String suffix = path.substring(pos + 1);
>         JarFile file = null;
>         File tmpFile = null;
>         try {
>             file = new JarFile(artifact.getFile());
>             final JarEntry entry = file.getJarEntry(path);
>             if ( entry != null ) {
>                 tmpFile = File.createTempFile("scrjcdm" + artifact.getArtifactId(), suffix);
>                 tmpFile.deleteOnExit();
>                 final FileOutputStream fos = new FileOutputStream(tmpFile);
>                 IOUtil.copy(file.getInputStream(entry), fos);
>                 IOUtil.close(fos);
>                 return tmpFile;
>             }
>             return null;
>         } finally {
>             if (file != null) {
>                 try {
>                     file.close();
>                 } catch (IOException ignore) {
>                 }
>             }
>         }
> 	}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Assigned: (FELIX-1819) Problem with dependencies resolution

Posted by "Carsten Ziegeler (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/FELIX-1819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Carsten Ziegeler reassigned FELIX-1819:
---------------------------------------

    Assignee: Carsten Ziegeler

> Problem with dependencies resolution
> ------------------------------------
>
>                 Key: FELIX-1819
>                 URL: https://issues.apache.org/jira/browse/FELIX-1819
>             Project: Felix
>          Issue Type: Bug
>          Components: Maven SCR Plugin
>    Affects Versions: maven-scr-plugin-1.2.0
>            Reporter: Rembert Magri
>            Assignee: Carsten Ziegeler
>             Fix For: maven-scr-plugin-1.4.1
>
>         Attachments: JavaClassDescriptorManager.java
>
>
> When adding dependencies with "provided" scope, the plugin cannot find the bundle correctly. I fixed the problem by changing the getManifest and getFile methods as follows:
> protected Manifest getManifest(Artifact artifact) throws IOException {
>     	if (!this.isJavaArtifact(artifact)) {
>     		throw new IllegalArgumentException("Trying to load Manifest from a non-Java type");
>     	}
>     	
>     	if ("bundle".equals(artifact.getType())) {
>     		return getManifestFromBundle(artifact);
>     	}
>     	
>     	return getManifestFromJarFile(artifact);
>         
>     }
> 	private Manifest getManifestFromBundle(Artifact artifact)
> 			throws FileNotFoundException, IOException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/META-INF/MANIFEST.MF
> 		File file = getFileFromBundle(artifact, "META-INF/MANIFEST.MF");
> 		FileInputStream manifestInputStream = null;
> 		try {
> 			manifestInputStream = new FileInputStream(file);
> 			return new Manifest(manifestInputStream);
> 		} finally {
> 			if (manifestInputStream != null) {
> 				try {
> 					manifestInputStream.close();
> 		        } catch (IOException ignore) {
> 		        }
> 			}
> 		}
> 	}
> 	private Manifest getManifestFromJarFile(Artifact artifact)
> 			throws IOException {
> 		JarFile file = null;
> 		try {
> 		    file = new JarFile(artifact.getFile());
> 		    return file.getManifest();
> 		} finally {
> 		    if (file != null) {
> 		        try {
> 		            file.close();
> 		        } catch (IOException ignore) {
> 		        }
> 		    }
> 		}
> 	}
>     protected File getFile(Artifact artifact, String path) throws IOException {
>     	if ("bundle".equals(artifact.getType())) {
>     		return getFileFromBundle(artifact, path);
>     	}
>     	
>         return getFileFromJar(artifact, path);
>     }
> 	private File getFileFromBundle(Artifact artifact, String path) throws FileNotFoundException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/path
> 		File file = artifact.getFile();
> 		File targetFile = new File(file.getParentFile().getParentFile(),path);
> 		if (targetFile.canRead()) {
> 			return targetFile;
> 		}
> 		log.warn("Won't be able to read: " + targetFile);
> 		return null;
> 	}
> 	private File getFileFromJar(Artifact artifact, String path)
> 			throws IOException, FileNotFoundException {
> 		final int pos = path.lastIndexOf('.');
>         final String suffix = path.substring(pos + 1);
>         JarFile file = null;
>         File tmpFile = null;
>         try {
>             file = new JarFile(artifact.getFile());
>             final JarEntry entry = file.getJarEntry(path);
>             if ( entry != null ) {
>                 tmpFile = File.createTempFile("scrjcdm" + artifact.getArtifactId(), suffix);
>                 tmpFile.deleteOnExit();
>                 final FileOutputStream fos = new FileOutputStream(tmpFile);
>                 IOUtil.copy(file.getInputStream(entry), fos);
>                 IOUtil.close(fos);
>                 return tmpFile;
>             }
>             return null;
>         } finally {
>             if (file != null) {
>                 try {
>                     file.close();
>                 } catch (IOException ignore) {
>                 }
>             }
>         }
> 	}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (FELIX-1819) Problem with dependencies resolution

Posted by "Rembert Magri (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/FELIX-1819?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12775376#action_12775376 ] 

Rembert Magri commented on FELIX-1819:
--------------------------------------

Carsten,

I have just tested the issue using the latest version (trunk, 1.4.1), and the changes made by Felix Meschbe (revision 820997) solved the problem. This issue can be closed.

> Problem with dependencies resolution
> ------------------------------------
>
>                 Key: FELIX-1819
>                 URL: https://issues.apache.org/jira/browse/FELIX-1819
>             Project: Felix
>          Issue Type: Bug
>          Components: Maven SCR Plugin
>    Affects Versions: maven-scr-plugin-1.2.0
>            Reporter: Rembert Magri
>            Assignee: Carsten Ziegeler
>             Fix For: maven-scr-plugin-1.4.1
>
>         Attachments: JavaClassDescriptorManager.java
>
>
> When adding dependencies with "provided" scope, the plugin cannot find the bundle correctly. I fixed the problem by changing the getManifest and getFile methods as follows:
> protected Manifest getManifest(Artifact artifact) throws IOException {
>     	if (!this.isJavaArtifact(artifact)) {
>     		throw new IllegalArgumentException("Trying to load Manifest from a non-Java type");
>     	}
>     	
>     	if ("bundle".equals(artifact.getType())) {
>     		return getManifestFromBundle(artifact);
>     	}
>     	
>     	return getManifestFromJarFile(artifact);
>         
>     }
> 	private Manifest getManifestFromBundle(Artifact artifact)
> 			throws FileNotFoundException, IOException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/META-INF/MANIFEST.MF
> 		File file = getFileFromBundle(artifact, "META-INF/MANIFEST.MF");
> 		FileInputStream manifestInputStream = null;
> 		try {
> 			manifestInputStream = new FileInputStream(file);
> 			return new Manifest(manifestInputStream);
> 		} finally {
> 			if (manifestInputStream != null) {
> 				try {
> 					manifestInputStream.close();
> 		        } catch (IOException ignore) {
> 		        }
> 			}
> 		}
> 	}
> 	private Manifest getManifestFromJarFile(Artifact artifact)
> 			throws IOException {
> 		JarFile file = null;
> 		try {
> 		    file = new JarFile(artifact.getFile());
> 		    return file.getManifest();
> 		} finally {
> 		    if (file != null) {
> 		        try {
> 		            file.close();
> 		        } catch (IOException ignore) {
> 		        }
> 		    }
> 		}
> 	}
>     protected File getFile(Artifact artifact, String path) throws IOException {
>     	if ("bundle".equals(artifact.getType())) {
>     		return getFileFromBundle(artifact, path);
>     	}
>     	
>         return getFileFromJar(artifact, path);
>     }
> 	private File getFileFromBundle(Artifact artifact, String path) throws FileNotFoundException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/path
> 		File file = artifact.getFile();
> 		File targetFile = new File(file.getParentFile().getParentFile(),path);
> 		if (targetFile.canRead()) {
> 			return targetFile;
> 		}
> 		log.warn("Won't be able to read: " + targetFile);
> 		return null;
> 	}
> 	private File getFileFromJar(Artifact artifact, String path)
> 			throws IOException, FileNotFoundException {
> 		final int pos = path.lastIndexOf('.');
>         final String suffix = path.substring(pos + 1);
>         JarFile file = null;
>         File tmpFile = null;
>         try {
>             file = new JarFile(artifact.getFile());
>             final JarEntry entry = file.getJarEntry(path);
>             if ( entry != null ) {
>                 tmpFile = File.createTempFile("scrjcdm" + artifact.getArtifactId(), suffix);
>                 tmpFile.deleteOnExit();
>                 final FileOutputStream fos = new FileOutputStream(tmpFile);
>                 IOUtil.copy(file.getInputStream(entry), fos);
>                 IOUtil.close(fos);
>                 return tmpFile;
>             }
>             return null;
>         } finally {
>             if (file != null) {
>                 try {
>                     file.close();
>                 } catch (IOException ignore) {
>                 }
>             }
>         }
> 	}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (FELIX-1819) Problem with dependencies resolution

Posted by "Carsten Ziegeler (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/FELIX-1819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Carsten Ziegeler closed FELIX-1819.
-----------------------------------


> Problem with dependencies resolution
> ------------------------------------
>
>                 Key: FELIX-1819
>                 URL: https://issues.apache.org/jira/browse/FELIX-1819
>             Project: Felix
>          Issue Type: Bug
>          Components: Maven SCR Plugin
>    Affects Versions: maven-scr-plugin-1.2.0
>            Reporter: Rembert Magri
>            Assignee: Carsten Ziegeler
>             Fix For: maven-scr-plugin-1.4.2
>
>         Attachments: JavaClassDescriptorManager.java
>
>
> When adding dependencies with "provided" scope, the plugin cannot find the bundle correctly. I fixed the problem by changing the getManifest and getFile methods as follows:
> protected Manifest getManifest(Artifact artifact) throws IOException {
>     	if (!this.isJavaArtifact(artifact)) {
>     		throw new IllegalArgumentException("Trying to load Manifest from a non-Java type");
>     	}
>     	
>     	if ("bundle".equals(artifact.getType())) {
>     		return getManifestFromBundle(artifact);
>     	}
>     	
>     	return getManifestFromJarFile(artifact);
>         
>     }
> 	private Manifest getManifestFromBundle(Artifact artifact)
> 			throws FileNotFoundException, IOException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/META-INF/MANIFEST.MF
> 		File file = getFileFromBundle(artifact, "META-INF/MANIFEST.MF");
> 		FileInputStream manifestInputStream = null;
> 		try {
> 			manifestInputStream = new FileInputStream(file);
> 			return new Manifest(manifestInputStream);
> 		} finally {
> 			if (manifestInputStream != null) {
> 				try {
> 					manifestInputStream.close();
> 		        } catch (IOException ignore) {
> 		        }
> 			}
> 		}
> 	}
> 	private Manifest getManifestFromJarFile(Artifact artifact)
> 			throws IOException {
> 		JarFile file = null;
> 		try {
> 		    file = new JarFile(artifact.getFile());
> 		    return file.getManifest();
> 		} finally {
> 		    if (file != null) {
> 		        try {
> 		            file.close();
> 		        } catch (IOException ignore) {
> 		        }
> 		    }
> 		}
> 	}
>     protected File getFile(Artifact artifact, String path) throws IOException {
>     	if ("bundle".equals(artifact.getType())) {
>     		return getFileFromBundle(artifact, path);
>     	}
>     	
>         return getFileFromJar(artifact, path);
>     }
> 	private File getFileFromBundle(Artifact artifact, String path) throws FileNotFoundException {
> 		//artifact.getFile() returns {project}/target/classes, and I want {project}/path
> 		File file = artifact.getFile();
> 		File targetFile = new File(file.getParentFile().getParentFile(),path);
> 		if (targetFile.canRead()) {
> 			return targetFile;
> 		}
> 		log.warn("Won't be able to read: " + targetFile);
> 		return null;
> 	}
> 	private File getFileFromJar(Artifact artifact, String path)
> 			throws IOException, FileNotFoundException {
> 		final int pos = path.lastIndexOf('.');
>         final String suffix = path.substring(pos + 1);
>         JarFile file = null;
>         File tmpFile = null;
>         try {
>             file = new JarFile(artifact.getFile());
>             final JarEntry entry = file.getJarEntry(path);
>             if ( entry != null ) {
>                 tmpFile = File.createTempFile("scrjcdm" + artifact.getArtifactId(), suffix);
>                 tmpFile.deleteOnExit();
>                 final FileOutputStream fos = new FileOutputStream(tmpFile);
>                 IOUtil.copy(file.getInputStream(entry), fos);
>                 IOUtil.close(fos);
>                 return tmpFile;
>             }
>             return null;
>         } finally {
>             if (file != null) {
>                 try {
>                     file.close();
>                 } catch (IOException ignore) {
>                 }
>             }
>         }
> 	}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.