package hudson.plugins.analysis.util; import java.io.IOException; import java.io.InputStream; import org.apache.commons.io.IOUtils; import org.apache.commons.io.LineIterator; import org.apache.commons.lang.StringUtils; /** * Detects the namespace of a C# workspace file. * * @author Ulli Hafner */ // CHECKSTYLE:CONSTANTS-OFF public class CsharpNamespaceDetector extends AbstractPackageDetector { /** {@inheritDoc} */ public boolean accepts(final String fileName) { return fileName.endsWith(".cs"); } /** {@inheritDoc}*/ public String detectPackageName(final InputStream stream) { try { LineIterator iterator = IOUtils.lineIterator(stream, "UTF-8"); while (iterator.hasNext()) { String line = iterator.nextLine(); if (line.matches("^namespace .*$")) { if (line.contains("{")) { return StringUtils.substringBetween(line, " ", "{").trim(); } else { return StringUtils.substringAfter(line, " ").trim(); } } } } catch (IOException exception) { // ignore } finally { IOUtils.closeQuietly(stream); } return UNKNOWN_PACKAGE; } }