fixing formatting issues for NIFI-433
Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/ba4a8937 Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/ba4a8937 Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/ba4a8937 Branch: refs/heads/develop Commit: ba4a8937f895cecd4ffba2e9b9e8f5ee7be8dfb3 Parents: 054f044 Author: Brandon DeVries <[email protected]> Authored: Fri May 1 09:42:23 2015 -0400 Committer: Brandon DeVries <[email protected]> Committed: Fri May 1 09:42:23 2015 -0400 ---------------------------------------------------------------------- .../org/apache/nifi/util/NiFiProperties.java | 124 +++++---- .../apache/nifi/util/NiFiPropertiesTest.java | 103 ++++---- .../java/org/apache/nifi/nar/NarUnpacker.java | 132 ++++++---- .../org/apache/nifi/nar/NarUnpackerTest.java | 264 ++++++++++--------- 4 files changed, 347 insertions(+), 276 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/ba4a8937/nifi/nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java b/nifi/nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java index a28829b..43f02ca 100644 --- a/nifi/nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java +++ b/nifi/nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java @@ -233,21 +233,27 @@ public class NiFiProperties extends Properties { * obtained. * * @return the NiFiProperties object to use - * @throws RuntimeException if unable to load properties file + * @throws RuntimeException + * if unable to load properties file */ public static synchronized NiFiProperties getInstance() { if (null == instance) { final NiFiProperties suspectInstance = new NiFiProperties(); - final String nfPropertiesFilePath = System.getProperty(NiFiProperties.PROPERTIES_FILE_PATH); + final String nfPropertiesFilePath = System + .getProperty(NiFiProperties.PROPERTIES_FILE_PATH); if (null == nfPropertiesFilePath || nfPropertiesFilePath.trim().length() == 0) { - throw new RuntimeException("Requires a system property called \'" + NiFiProperties.PROPERTIES_FILE_PATH + "\' and this is not set or has no value"); + throw new RuntimeException("Requires a system property called \'" + + NiFiProperties.PROPERTIES_FILE_PATH + + "\' and this is not set or has no value"); } final File propertiesFile = new File(nfPropertiesFilePath); if (!propertiesFile.exists()) { - throw new RuntimeException("Properties file doesn't exist \'" + propertiesFile.getAbsolutePath() + "\'"); + throw new RuntimeException("Properties file doesn't exist \'" + + propertiesFile.getAbsolutePath() + "\'"); } if (!propertiesFile.canRead()) { - throw new RuntimeException("Properties file exists but cannot be read \'" + propertiesFile.getAbsolutePath() + "\'"); + throw new RuntimeException("Properties file exists but cannot be read \'" + + propertiesFile.getAbsolutePath() + "\'"); } InputStream inStream = null; try { @@ -255,7 +261,8 @@ public class NiFiProperties extends Properties { suspectInstance.load(inStream); } catch (final Exception ex) { LOG.error("Cannot load properties file due to " + ex.getLocalizedMessage()); - throw new RuntimeException("Cannot load properties file due to " + ex.getLocalizedMessage(), ex); + throw new RuntimeException("Cannot load properties file due to " + + ex.getLocalizedMessage(), ex); } finally { if (null != inStream) { try { @@ -377,7 +384,7 @@ public class NiFiProperties extends Properties { if ("false".equalsIgnoreCase(secureVal)) { return false; - }else{ + } else { return true; } @@ -409,7 +416,8 @@ public class NiFiProperties extends Properties { * @return Whether to auto start the processors or not */ public boolean getAutoResumeState() { - final String rawAutoResumeState = getProperty(AUTO_RESUME_STATE, DEFAULT_AUTO_RESUME_STATE.toString()); + final String rawAutoResumeState = getProperty(AUTO_RESUME_STATE, + DEFAULT_AUTO_RESUME_STATE.toString()); return Boolean.parseBoolean(rawAutoResumeState); } @@ -420,7 +428,8 @@ public class NiFiProperties extends Properties { * @return the number of partitions */ public int getFlowFileRepositoryPartitions() { - final String rawProperty = getProperty(FLOWFILE_REPOSITORY_PARTITIONS, DEFAULT_FLOWFILE_REPO_PARTITIONS); + final String rawProperty = getProperty(FLOWFILE_REPOSITORY_PARTITIONS, + DEFAULT_FLOWFILE_REPO_PARTITIONS); return Integer.parseInt(rawProperty); } @@ -431,7 +440,8 @@ public class NiFiProperties extends Properties { * @return the number of milliseconds between checkpoint events */ public String getFlowFileRepositoryCheckpointInterval() { - return getProperty(FLOWFILE_REPOSITORY_CHECKPOINT_INTERVAL, DEFAULT_FLOWFILE_CHECKPOINT_INTERVAL); + return getProperty(FLOWFILE_REPOSITORY_CHECKPOINT_INTERVAL, + DEFAULT_FLOWFILE_CHECKPOINT_INTERVAL); } /** @@ -473,7 +483,8 @@ public class NiFiProperties extends Properties { } public String getUserCredentialCacheDuration() { - return getProperty(SECURITY_USER_CREDENTIAL_CACHE_DURATION, DEFAULT_USER_CREDENTIAL_CACHE_DURATION); + return getProperty(SECURITY_USER_CREDENTIAL_CACHE_DURATION, + DEFAULT_USER_CREDENTIAL_CACHE_DURATION); } public boolean getSupportNewAccountRequests() { @@ -528,29 +539,29 @@ public class NiFiProperties extends Properties { return new File(getNarWorkingDirectory(), "extensions"); } - public List<Path> getNarLibraryDirectories() { - - List<Path> narLibraryPaths = new ArrayList<>(); - - // go through each property - for (String propertyName : stringPropertyNames()) { - // determine if the property is a nar library path - if (StringUtils.startsWith(propertyName, NAR_LIBRARY_DIRECTORY_PREFIX) || NAR_LIBRARY_DIRECTORY.equals(propertyName)) { - // attempt to resolve the path specified - String narLib = getProperty(propertyName); - if (!StringUtils.isBlank(narLib)){ - narLibraryPaths.add(Paths.get(narLib)); - } - } - } - - if (narLibraryPaths.isEmpty()){ - narLibraryPaths.add(Paths.get(DEFAULT_NAR_LIBRARY_DIR)); - } - - - return narLibraryPaths; - } + public List<Path> getNarLibraryDirectories() { + + List<Path> narLibraryPaths = new ArrayList<>(); + + // go through each property + for (String propertyName : stringPropertyNames()) { + // determine if the property is a nar library path + if (StringUtils.startsWith(propertyName, NAR_LIBRARY_DIRECTORY_PREFIX) + || NAR_LIBRARY_DIRECTORY.equals(propertyName)) { + // attempt to resolve the path specified + String narLib = getProperty(propertyName); + if (!StringUtils.isBlank(narLib)) { + narLibraryPaths.add(Paths.get(narLib)); + } + } + } + + if (narLibraryPaths.isEmpty()) { + narLibraryPaths.add(Paths.get(DEFAULT_NAR_LIBRARY_DIR)); + } + + return narLibraryPaths; + } // getters for ui properties // /** @@ -582,7 +593,8 @@ public class NiFiProperties extends Properties { // getters for cluster protocol properties // public String getClusterProtocolHeartbeatInterval() { - return getProperty(CLUSTER_PROTOCOL_HEARTBEAT_INTERVAL, DEFAULT_CLUSTER_PROTOCOL_HEARTBEAT_INTERVAL); + return getProperty(CLUSTER_PROTOCOL_HEARTBEAT_INTERVAL, + DEFAULT_CLUSTER_PROTOCOL_HEARTBEAT_INTERVAL); } public String getNodeHeartbeatInterval() { @@ -594,7 +606,8 @@ public class NiFiProperties extends Properties { } public String getClusterProtocolConnectionHandshakeTimeout() { - return getProperty(CLUSTER_PROTOCOL_CONNECTION_HANDSHAKE_TIMEOUT, DEFAULT_CLUSTER_PROTOCOL_CONNECTION_HANDSHAKE_TIMEOUT); + return getProperty(CLUSTER_PROTOCOL_CONNECTION_HANDSHAKE_TIMEOUT, + DEFAULT_CLUSTER_PROTOCOL_CONNECTION_HANDSHAKE_TIMEOUT); } public boolean getClusterProtocolUseMulticast() { @@ -616,7 +629,8 @@ public class NiFiProperties extends Properties { } public File getPersistentStateDirectory() { - final String dirName = getProperty(PERSISTENT_STATE_DIRECTORY, DEFAULT_PERSISTENT_STATE_DIRECTORY); + final String dirName = getProperty(PERSISTENT_STATE_DIRECTORY, + DEFAULT_PERSISTENT_STATE_DIRECTORY); final File file = new File(dirName); if (!file.exists()) { file.mkdirs(); @@ -626,14 +640,16 @@ public class NiFiProperties extends Properties { public int getClusterProtocolMulticastServiceLocatorAttempts() { try { - return Integer.parseInt(getProperty(CLUSTER_PROTOCOL_MULTICAST_SERVICE_LOCATOR_ATTEMPTS)); + return Integer + .parseInt(getProperty(CLUSTER_PROTOCOL_MULTICAST_SERVICE_LOCATOR_ATTEMPTS)); } catch (NumberFormatException nfe) { return DEFAULT_CLUSTER_PROTOCOL_MULTICAST_SERVICE_LOCATOR_ATTEMPTS; } } public String getClusterProtocolMulticastServiceLocatorAttemptsDelay() { - return getProperty(CLUSTER_PROTOCOL_MULTICAST_SERVICE_LOCATOR_ATTEMPTS_DELAY, DEFAULT_CLUSTER_PROTOCOL_MULTICAST_SERVICE_LOCATOR_ATTEMPTS_DELAY); + return getProperty(CLUSTER_PROTOCOL_MULTICAST_SERVICE_LOCATOR_ATTEMPTS_DELAY, + DEFAULT_CLUSTER_PROTOCOL_MULTICAST_SERVICE_LOCATOR_ATTEMPTS_DELAY); } // getters for cluster node properties // @@ -676,7 +692,8 @@ public class NiFiProperties extends Properties { if (StringUtils.isBlank(socketAddress)) { socketAddress = "localhost"; } - int socketPort = Integer.parseInt(getProperty(CLUSTER_NODE_UNICAST_MANAGER_PROTOCOL_PORT)); + int socketPort = Integer + .parseInt(getProperty(CLUSTER_NODE_UNICAST_MANAGER_PROTOCOL_PORT)); return InetSocketAddress.createUnresolved(socketAddress, socketPort); } catch (Exception ex) { throw new RuntimeException("Invalid unicast manager address/port due to: " + ex, ex); @@ -727,11 +744,13 @@ public class NiFiProperties extends Properties { } public String getClusterManagerNodeApiConnectionTimeout() { - return getProperty(CLUSTER_MANAGER_NODE_API_CONNECTION_TIMEOUT, DEFAULT_CLUSTER_MANAGER_NODE_API_CONNECTION_TIMEOUT); + return getProperty(CLUSTER_MANAGER_NODE_API_CONNECTION_TIMEOUT, + DEFAULT_CLUSTER_MANAGER_NODE_API_CONNECTION_TIMEOUT); } public String getClusterManagerNodeApiReadTimeout() { - return getProperty(CLUSTER_MANAGER_NODE_API_READ_TIMEOUT, DEFAULT_CLUSTER_MANAGER_NODE_API_READ_TIMEOUT); + return getProperty(CLUSTER_MANAGER_NODE_API_READ_TIMEOUT, + DEFAULT_CLUSTER_MANAGER_NODE_API_READ_TIMEOUT); } public int getClusterManagerNodeApiRequestThreads() { @@ -743,7 +762,8 @@ public class NiFiProperties extends Properties { } public String getClusterManagerFlowRetrievalDelay() { - return getProperty(CLUSTER_MANAGER_FLOW_RETRIEVAL_DELAY, DEFAULT_CLUSTER_MANAGER_FLOW_RETRIEVAL_DELAY); + return getProperty(CLUSTER_MANAGER_FLOW_RETRIEVAL_DELAY, + DEFAULT_CLUSTER_MANAGER_FLOW_RETRIEVAL_DELAY); } public int getClusterManagerProtocolThreads() { @@ -755,7 +775,8 @@ public class NiFiProperties extends Properties { } public String getClusterManagerSafeModeDuration() { - return getProperty(CLUSTER_MANAGER_SAFEMODE_DURATION, DEFAULT_CLUSTER_MANAGER_SAFEMODE_DURATION); + return getProperty(CLUSTER_MANAGER_SAFEMODE_DURATION, + DEFAULT_CLUSTER_MANAGER_SAFEMODE_DURATION); } public String getClusterProtocolManagerToNodeApiScheme() { @@ -803,7 +824,8 @@ public class NiFiProperties extends Properties { * configured. No directories will be created as a result of this operation. * * @return database repository path - * @throws InvalidPathException If the configured path is invalid + * @throws InvalidPathException + * If the configured path is invalid */ public Path getDatabaseRepositoryPath() { return Paths.get(getProperty(REPOSITORY_DATABASE_DIRECTORY)); @@ -814,7 +836,8 @@ public class NiFiProperties extends Properties { * configured. No directories will be created as a result of this operation. * * @return database repository path - * @throws InvalidPathException If the configured path is invalid + * @throws InvalidPathException + * If the configured path is invalid */ public Path getFlowFileRepositoryPath() { return Paths.get(getProperty(FLOWFILE_REPOSITORY_DIRECTORY)); @@ -827,7 +850,8 @@ public class NiFiProperties extends Properties { * operation. * * @return file repositories paths - * @throws InvalidPathException If any of the configured paths are invalid + * @throws InvalidPathException + * If any of the configured paths are invalid */ public Map<String, Path> getContentRepositoryPaths() { final Map<String, Path> contentRepositoryPaths = new HashMap<>(); @@ -837,7 +861,8 @@ public class NiFiProperties extends Properties { // determine if the property is a file repository path if (StringUtils.startsWith(propertyName, REPOSITORY_CONTENT_PREFIX)) { // get the repository key - final String key = StringUtils.substringAfter(propertyName, REPOSITORY_CONTENT_PREFIX); + final String key = StringUtils.substringAfter(propertyName, + REPOSITORY_CONTENT_PREFIX); // attempt to resolve the path specified contentRepositoryPaths.put(key, Paths.get(getProperty(propertyName))); @@ -862,7 +887,8 @@ public class NiFiProperties extends Properties { // determine if the property is a file repository path if (StringUtils.startsWith(propertyName, PROVENANCE_REPO_DIRECTORY_PREFIX)) { // get the repository key - final String key = StringUtils.substringAfter(propertyName, PROVENANCE_REPO_DIRECTORY_PREFIX); + final String key = StringUtils.substringAfter(propertyName, + PROVENANCE_REPO_DIRECTORY_PREFIX); // attempt to resolve the path specified provenanceRepositoryPaths.put(key, Paths.get(getProperty(propertyName))); http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/ba4a8937/nifi/nifi-commons/nifi-properties/src/test/java/org/apache/nifi/util/NiFiPropertiesTest.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-commons/nifi-properties/src/test/java/org/apache/nifi/util/NiFiPropertiesTest.java b/nifi/nifi-commons/nifi-properties/src/test/java/org/apache/nifi/util/NiFiPropertiesTest.java index 3f1ff20..58fbbf3 100644 --- a/nifi/nifi-commons/nifi-properties/src/test/java/org/apache/nifi/util/NiFiPropertiesTest.java +++ b/nifi/nifi-commons/nifi-properties/src/test/java/org/apache/nifi/util/NiFiPropertiesTest.java @@ -13,78 +13,83 @@ import org.junit.Test; public class NiFiPropertiesTest { - @Test - public void testProperties() { + @Test + public void testProperties() { - NiFiProperties properties = loadSpecifiedProperties("/NiFiProperties/conf/nifi.properties"); + NiFiProperties properties = loadSpecifiedProperties("/NiFiProperties/conf/nifi.properties"); - assertEquals("UI Banner Text", properties.getBannerText()); + assertEquals("UI Banner Text", properties.getBannerText()); - List<Path> directories = properties.getNarLibraryDirectories(); + List<Path> directories = properties.getNarLibraryDirectories(); - assertEquals(new File("./target/resources/NiFiProperties/lib/").getPath(), directories.get(0).toString()); - assertEquals(new File("./target/resources/NiFiProperties/lib2/").getPath(), directories.get(1).toString()); + assertEquals(new File("./target/resources/NiFiProperties/lib/").getPath(), + directories.get(0).toString()); + assertEquals(new File("./target/resources/NiFiProperties/lib2/").getPath(), directories + .get(1).toString()); - } + } - @Test - public void testMissingProperties() { + @Test + public void testMissingProperties() { - NiFiProperties properties = loadSpecifiedProperties("/NiFiProperties/conf/nifi.missing.properties"); + NiFiProperties properties = loadSpecifiedProperties("/NiFiProperties/conf/nifi.missing.properties"); - List<Path> directories = properties.getNarLibraryDirectories(); + List<Path> directories = properties.getNarLibraryDirectories(); - assertEquals(1, directories.size()); + assertEquals(1, directories.size()); - assertEquals(new File(NiFiProperties.DEFAULT_NAR_LIBRARY_DIR).getPath(), directories.get(0).toString()); + assertEquals(new File(NiFiProperties.DEFAULT_NAR_LIBRARY_DIR).getPath(), directories.get(0) + .toString()); - } + } - @Test - public void testBlankProperties() { + @Test + public void testBlankProperties() { - NiFiProperties properties = loadSpecifiedProperties("/NiFiProperties/conf/nifi.blank.properties"); + NiFiProperties properties = loadSpecifiedProperties("/NiFiProperties/conf/nifi.blank.properties"); - List<Path> directories = properties.getNarLibraryDirectories(); + List<Path> directories = properties.getNarLibraryDirectories(); - assertEquals(1, directories.size()); + assertEquals(1, directories.size()); - assertEquals(new File(NiFiProperties.DEFAULT_NAR_LIBRARY_DIR).getPath(), directories.get(0).toString()); + assertEquals(new File(NiFiProperties.DEFAULT_NAR_LIBRARY_DIR).getPath(), directories.get(0) + .toString()); - } + } - private NiFiProperties loadSpecifiedProperties(String propertiesFile) { + private NiFiProperties loadSpecifiedProperties(String propertiesFile) { - String file = NiFiPropertiesTest.class.getResource(propertiesFile).getFile(); + String file = NiFiPropertiesTest.class.getResource(propertiesFile).getFile(); - System.setProperty(NiFiProperties.PROPERTIES_FILE_PATH, file); + System.setProperty(NiFiProperties.PROPERTIES_FILE_PATH, file); - NiFiProperties properties = NiFiProperties.getInstance(); + NiFiProperties properties = NiFiProperties.getInstance(); - // clear out existing properties - for (String prop : properties.stringPropertyNames()) { - properties.remove(prop); - } + // clear out existing properties + for (String prop : properties.stringPropertyNames()) { + properties.remove(prop); + } - InputStream inStream = null; - try { - inStream = new BufferedInputStream(new FileInputStream(file)); - properties.load(inStream); - } catch (final Exception ex) { - throw new RuntimeException("Cannot load properties file due to " + ex.getLocalizedMessage(), ex); - } finally { - if (null != inStream) { - try { - inStream.close(); - } catch (final Exception ex) { - /** - * do nothing * - */ - } - } - } + InputStream inStream = null; + try { + inStream = new BufferedInputStream(new FileInputStream(file)); + properties.load(inStream); + } catch (final Exception ex) { + throw new RuntimeException("Cannot load properties file due to " + + ex.getLocalizedMessage(), ex); + } finally { + if (null != inStream) { + try { + inStream.close(); + } catch (final Exception ex) { + /** + * do nothing * + */ + } + } + } - return properties; - } + return properties; + } } http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/ba4a8937/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/main/java/org/apache/nifi/nar/NarUnpacker.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/main/java/org/apache/nifi/nar/NarUnpacker.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/main/java/org/apache/nifi/nar/NarUnpacker.java index 85037c9..2837d35 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/main/java/org/apache/nifi/nar/NarUnpacker.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/main/java/org/apache/nifi/nar/NarUnpacker.java @@ -71,24 +71,23 @@ public final class NarUnpacker { final Set<File> unpackedExtensions = new HashSet<>(); final List<File> narFiles = new ArrayList<>(); - // make sure the nar directories are there and accessible + // make sure the nar directories are there and accessible FileUtils.ensureDirectoryExistAndCanAccess(frameworkWorkingDir); FileUtils.ensureDirectoryExistAndCanAccess(extensionsWorkingDir); FileUtils.ensureDirectoryExistAndCanAccess(docsWorkingDir); - for (Path narLibraryDir : narLibraryDirs) { - - File narDir = narLibraryDir.toFile(); - FileUtils.ensureDirectoryExistAndCanAccess(narDir); - - File[] dirFiles = narDir.listFiles(NAR_FILTER); - if (dirFiles != null){ - List<File> fileList = Arrays.asList(dirFiles); - narFiles.addAll(fileList); - } - } - - + for (Path narLibraryDir : narLibraryDirs) { + + File narDir = narLibraryDir.toFile(); + FileUtils.ensureDirectoryExistAndCanAccess(narDir); + + File[] dirFiles = narDir.listFiles(NAR_FILTER); + if (dirFiles != null) { + List<File> fileList = Arrays.asList(dirFiles); + narFiles.addAll(fileList); + } + } + if (!narFiles.isEmpty()) { for (File narFile : narFiles) { logger.debug("Expanding NAR file: " + narFile.getAbsolutePath()); @@ -104,7 +103,8 @@ public final class NarUnpacker { // determine if this is the framework if (NarClassLoaders.FRAMEWORK_NAR_ID.equals(narId)) { if (unpackedFramework != null) { - throw new IllegalStateException("Multiple framework NARs discovered. Only one framework is permitted."); + throw new IllegalStateException( + "Multiple framework NARs discovered. Only one framework is permitted."); } unpackedFramework = unpackNar(narFile, frameworkWorkingDir); @@ -121,7 +121,8 @@ public final class NarUnpacker { throw new IllegalStateException("Framework NAR cannot be read."); } - // Determine if any nars no longer exist and delete their working directories. This happens + // Determine if any nars no longer exist and delete their + // working directories. This happens // if a new version of a nar is dropped into the lib dir. // ensure no old framework are present final File[] frameworkWorkingDirContents = frameworkWorkingDir.listFiles(); @@ -144,7 +145,8 @@ public final class NarUnpacker { } } - // attempt to delete any docs files that exist so that any components that have been removed + // attempt to delete any docs files that exist so that any + // components that have been removed // will no longer have entries in the docs folder final File[] docsFiles = docsWorkingDir.listFiles(); if (docsFiles != null) { @@ -157,7 +159,8 @@ public final class NarUnpacker { mapExtensions(extensionsWorkingDir, docsWorkingDir, extensionMapping); return extensionMapping; } catch (IOException e) { - logger.warn("Unable to load NAR library bundles due to " + e + " Will proceed without loading any further Nar bundles"); + logger.warn("Unable to load NAR library bundles due to " + e + + " Will proceed without loading any further Nar bundles"); if (logger.isDebugEnabled()) { logger.warn("", e); } @@ -166,7 +169,8 @@ public final class NarUnpacker { return null; } - private static void mapExtensions(final File workingDirectory, final File docsDirectory, final ExtensionMapping mapping) throws IOException { + private static void mapExtensions(final File workingDirectory, final File docsDirectory, + final ExtensionMapping mapping) throws IOException { final File[] directoryContents = workingDirectory.listFiles(); if (directoryContents != null) { for (final File file : directoryContents) { @@ -182,19 +186,24 @@ public final class NarUnpacker { /** * Unpacks the specified nar into the specified base working directory. * - * @param nar the nar to unpack - * @param baseWorkingDirectory the directory to unpack to + * @param nar + * the nar to unpack + * @param baseWorkingDirectory + * the directory to unpack to * @return the directory to the unpacked NAR - * @throws IOException if unable to explode nar + * @throws IOException + * if unable to explode nar */ - private static File unpackNar(final File nar, final File baseWorkingDirectory) throws IOException { + private static File unpackNar(final File nar, final File baseWorkingDirectory) + throws IOException { final File narWorkingDirectory = new File(baseWorkingDirectory, nar.getName() + "-unpacked"); // if the working directory doesn't exist, unpack the nar if (!narWorkingDirectory.exists()) { unpack(nar, narWorkingDirectory, calculateMd5sum(nar)); } else { - // the working directory does exist. Run MD5 sum against the nar file and check if the nar has changed since it was deployed. + // the working directory does exist. Run MD5 sum against the nar + // file and check if the nar has changed since it was deployed. final byte[] narMd5 = calculateMd5sum(nar); final File workingHashFile = new File(narWorkingDirectory, HASH_FILENAME); if (!workingHashFile.exists()) { @@ -203,7 +212,8 @@ public final class NarUnpacker { } else { final byte[] hashFileContents = Files.readAllBytes(workingHashFile.toPath()); if (!Arrays.equals(hashFileContents, narMd5)) { - logger.info("Contents of nar {} have changed. Reloading.", new Object[]{nar.getAbsolutePath()}); + logger.info("Contents of nar {} have changed. Reloading.", + new Object[] { nar.getAbsolutePath() }); FileUtils.deleteFile(narWorkingDirectory, true); unpack(nar, narWorkingDirectory, narMd5); } @@ -217,11 +227,13 @@ public final class NarUnpacker { * Unpacks the NAR to the specified directory. Creates a checksum file that * used to determine if future expansion is necessary. * - * @param workingDirectory the root directory to which the NAR should be - * unpacked. - * @throws IOException if the NAR could not be unpacked. + * @param workingDirectory + * the root directory to which the NAR should be unpacked. + * @throws IOException + * if the NAR could not be unpacked. */ - private static void unpack(final File nar, final File workingDirectory, final byte[] hash) throws IOException { + private static void unpack(final File nar, final File workingDirectory, final byte[] hash) + throws IOException { try (JarFile jarFile = new JarFile(nar)) { Enumeration<JarEntry> jarEntries = jarFile.entries(); @@ -243,7 +255,8 @@ public final class NarUnpacker { } } - private static void unpackDocumentation(final File jar, final File docsDirectory, final ExtensionMapping extensionMapping) throws IOException { + private static void unpackDocumentation(final File jar, final File docsDirectory, + final ExtensionMapping extensionMapping) throws IOException { // determine the components that may have documentation determineDocumentedNiFiComponents(jar, extensionMapping); @@ -253,7 +266,8 @@ public final class NarUnpacker { final String entryName = "docs/" + componentName; // go through each entry in this jar - for (final Enumeration<JarEntry> jarEnumeration = jarFile.entries(); jarEnumeration.hasMoreElements();) { + for (final Enumeration<JarEntry> jarEnumeration = jarFile.entries(); jarEnumeration + .hasMoreElements();) { final JarEntry jarEntry = jarEnumeration.nextElement(); // if this entry is documentation for this component @@ -265,8 +279,10 @@ public final class NarUnpacker { final File componentDocsDirectory = new File(docsDirectory, name); // ensure the documentation directory can be created - if (!componentDocsDirectory.exists() && !componentDocsDirectory.mkdirs()) { - logger.warn("Unable to create docs directory " + componentDocsDirectory.getAbsolutePath()); + if (!componentDocsDirectory.exists() + && !componentDocsDirectory.mkdirs()) { + logger.warn("Unable to create docs directory " + + componentDocsDirectory.getAbsolutePath()); break; } } else { @@ -281,19 +297,27 @@ public final class NarUnpacker { } } - private static void determineDocumentedNiFiComponents(final File jar, final ExtensionMapping extensionMapping) throws IOException { + private static void determineDocumentedNiFiComponents(final File jar, + final ExtensionMapping extensionMapping) throws IOException { try (final JarFile jarFile = new JarFile(jar)) { - final JarEntry processorEntry = jarFile.getJarEntry("META-INF/services/org.apache.nifi.processor.Processor"); - final JarEntry reportingTaskEntry = jarFile.getJarEntry("META-INF/services/org.apache.nifi.reporting.ReportingTask"); - final JarEntry controllerServiceEntry = jarFile.getJarEntry("META-INF/services/org.apache.nifi.controller.ControllerService"); - - extensionMapping.addAllProcessors(determineDocumentedNiFiComponents(jarFile, processorEntry)); - extensionMapping.addAllReportingTasks(determineDocumentedNiFiComponents(jarFile, reportingTaskEntry)); - extensionMapping.addAllControllerServices(determineDocumentedNiFiComponents(jarFile, controllerServiceEntry)); + final JarEntry processorEntry = jarFile + .getJarEntry("META-INF/services/org.apache.nifi.processor.Processor"); + final JarEntry reportingTaskEntry = jarFile + .getJarEntry("META-INF/services/org.apache.nifi.reporting.ReportingTask"); + final JarEntry controllerServiceEntry = jarFile + .getJarEntry("META-INF/services/org.apache.nifi.controller.ControllerService"); + + extensionMapping.addAllProcessors(determineDocumentedNiFiComponents(jarFile, + processorEntry)); + extensionMapping.addAllReportingTasks(determineDocumentedNiFiComponents(jarFile, + reportingTaskEntry)); + extensionMapping.addAllControllerServices(determineDocumentedNiFiComponents(jarFile, + controllerServiceEntry)); } } - private static List<String> determineDocumentedNiFiComponents(final JarFile jarFile, final JarEntry jarEntry) throws IOException { + private static List<String> determineDocumentedNiFiComponents(final JarFile jarFile, + final JarEntry jarEntry) throws IOException { final List<String> componentNames = new ArrayList<>(); if (jarEntry == null) { @@ -301,13 +325,15 @@ public final class NarUnpacker { } try (final InputStream entryInputStream = jarFile.getInputStream(jarEntry); - final BufferedReader reader = new BufferedReader(new InputStreamReader(entryInputStream))) { + final BufferedReader reader = new BufferedReader(new InputStreamReader( + entryInputStream))) { String line; while ((line = reader.readLine()) != null) { final String trimmedLine = line.trim(); if (!trimmedLine.isEmpty() && !trimmedLine.startsWith("#")) { final int indexOfPound = trimmedLine.indexOf("#"); - final String effectiveLine = (indexOfPound > 0) ? trimmedLine.substring(0, indexOfPound) : trimmedLine; + final String effectiveLine = (indexOfPound > 0) ? trimmedLine.substring(0, + indexOfPound) : trimmedLine; componentNames.add(effectiveLine); } } @@ -320,12 +346,16 @@ public final class NarUnpacker { * Creates the specified file, whose contents will come from the * <tt>InputStream</tt>. * - * @param inputStream the contents of the file to create. - * @param file the file to create. - * @throws IOException if the file could not be created. + * @param inputStream + * the contents of the file to create. + * @param file + * the file to create. + * @throws IOException + * if the file could not be created. */ private static void makeFile(final InputStream inputStream, final File file) throws IOException { - try (final InputStream in = inputStream; final FileOutputStream fos = new FileOutputStream(file)) { + try (final InputStream in = inputStream; + final FileOutputStream fos = new FileOutputStream(file)) { byte[] bytes = new byte[65536]; int numRead; while ((numRead = in.read(bytes)) != -1) { @@ -337,9 +367,11 @@ public final class NarUnpacker { /** * Calculates an md5 sum of the specified file. * - * @param file to calculate the md5sum of + * @param file + * to calculate the md5sum of * @return the md5sum bytes - * @throws IOException if cannot read file + * @throws IOException + * if cannot read file */ private static byte[] calculateMd5sum(final File file) throws IOException { try (final FileInputStream inputStream = new FileInputStream(file)) { http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/ba4a8937/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/test/java/org/apache/nifi/nar/NarUnpackerTest.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/test/java/org/apache/nifi/nar/NarUnpackerTest.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/test/java/org/apache/nifi/nar/NarUnpackerTest.java index e44f081..fa3cd62 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/test/java/org/apache/nifi/nar/NarUnpackerTest.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/test/java/org/apache/nifi/nar/NarUnpackerTest.java @@ -23,155 +23,163 @@ import org.junit.Test; public class NarUnpackerTest { - @BeforeClass - public static void copyResources() throws IOException { + @BeforeClass + public static void copyResources() throws IOException { - final Path sourcePath = Paths.get("./src/test/resources"); - final Path targetPath = Paths.get("./target"); - - Files.walkFileTree(sourcePath, new SimpleFileVisitor<Path>() { + final Path sourcePath = Paths.get("./src/test/resources"); + final Path targetPath = Paths.get("./target"); - @Override - public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { + Files.walkFileTree(sourcePath, new SimpleFileVisitor<Path>() { - Path relativeSource = sourcePath.relativize(dir); - Path target = targetPath.resolve(relativeSource); + @Override + public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) + throws IOException { - Files.createDirectories(target); + Path relativeSource = sourcePath.relativize(dir); + Path target = targetPath.resolve(relativeSource); - return FileVisitResult.CONTINUE; + Files.createDirectories(target); - } + return FileVisitResult.CONTINUE; - @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + } - Path relativeSource = sourcePath.relativize(file); - Path target = targetPath.resolve(relativeSource); + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) + throws IOException { - Files.copy(file, target, REPLACE_EXISTING); + Path relativeSource = sourcePath.relativize(file); + Path target = targetPath.resolve(relativeSource); - return FileVisitResult.CONTINUE; - } - }); - } + Files.copy(file, target, REPLACE_EXISTING); - @Test - public void testUnpackNars() { + return FileVisitResult.CONTINUE; + } + }); + } - NiFiProperties properties = loadSpecifiedProperties("/NarUnpacker/conf/nifi.properties"); + @Test + public void testUnpackNars() { - assertEquals("./target/NarUnpacker/lib/", properties.getProperty("nifi.nar.library.directory")); - assertEquals("./target/NarUnpacker/lib2/", properties.getProperty("nifi.nar.library.directory.alt")); + NiFiProperties properties = loadSpecifiedProperties("/NarUnpacker/conf/nifi.properties"); - final ExtensionMapping extensionMapping = NarUnpacker.unpackNars(properties); + assertEquals("./target/NarUnpacker/lib/", + properties.getProperty("nifi.nar.library.directory")); + assertEquals("./target/NarUnpacker/lib2/", + properties.getProperty("nifi.nar.library.directory.alt")); - assertEquals(2,extensionMapping.getAllExtensionNames().size()); + final ExtensionMapping extensionMapping = NarUnpacker.unpackNars(properties); - assertTrue(extensionMapping.getAllExtensionNames().contains("org.apache.nifi.processors.dummy.one")); - assertTrue(extensionMapping.getAllExtensionNames().contains("org.apache.nifi.processors.dummy.two")); + assertEquals(2, extensionMapping.getAllExtensionNames().size()); - final File extensionsWorkingDir = properties.getExtensionsWorkingDirectory(); - File[] extensionFiles = extensionsWorkingDir.listFiles(); - - assertEquals(2,extensionFiles.length); - assertEquals("dummy-one.nar-unpacked", extensionFiles[0].getName()); - assertEquals("dummy-two.nar-unpacked", extensionFiles[1].getName()); - } + assertTrue(extensionMapping.getAllExtensionNames().contains( + "org.apache.nifi.processors.dummy.one")); + assertTrue(extensionMapping.getAllExtensionNames().contains( + "org.apache.nifi.processors.dummy.two")); - @Test - public void testUnpackNarsFromEmptyDir() throws IOException { + final File extensionsWorkingDir = properties.getExtensionsWorkingDirectory(); + File[] extensionFiles = extensionsWorkingDir.listFiles(); + + assertEquals(2, extensionFiles.length); + assertEquals("dummy-one.nar-unpacked", extensionFiles[0].getName()); + assertEquals("dummy-two.nar-unpacked", extensionFiles[1].getName()); + } + + @Test + public void testUnpackNarsFromEmptyDir() throws IOException { + + NiFiProperties properties = loadSpecifiedProperties("/NarUnpacker/conf/nifi.properties"); - NiFiProperties properties = loadSpecifiedProperties("/NarUnpacker/conf/nifi.properties"); - - final File emptyDir = new File ("./target/empty/dir"); - emptyDir.delete(); - emptyDir.deleteOnExit(); - assertTrue(emptyDir.mkdirs()); - - properties.setProperty("nifi.nar.library.directory.alt", emptyDir.toString()); + final File emptyDir = new File("./target/empty/dir"); + emptyDir.delete(); + emptyDir.deleteOnExit(); + assertTrue(emptyDir.mkdirs()); - final ExtensionMapping extensionMapping = NarUnpacker.unpackNars(properties); + properties.setProperty("nifi.nar.library.directory.alt", emptyDir.toString()); + + final ExtensionMapping extensionMapping = NarUnpacker.unpackNars(properties); + + assertEquals(1, extensionMapping.getAllExtensionNames().size()); + assertTrue(extensionMapping.getAllExtensionNames().contains( + "org.apache.nifi.processors.dummy.one")); - assertEquals(1,extensionMapping.getAllExtensionNames().size()); - assertTrue(extensionMapping.getAllExtensionNames().contains("org.apache.nifi.processors.dummy.one")); - final File extensionsWorkingDir = properties.getExtensionsWorkingDirectory(); - File[] extensionFiles = extensionsWorkingDir.listFiles(); - - assertEquals(1,extensionFiles.length); - assertEquals("dummy-one.nar-unpacked", extensionFiles[0].getName()); - } - - @Test - public void testUnpackNarsFromNonExistantDir() { - - final File nonExistantDir = new File ("./target/this/dir/should/not/exist/"); - nonExistantDir.delete(); - nonExistantDir.deleteOnExit(); - - NiFiProperties properties = loadSpecifiedProperties("/NarUnpacker/conf/nifi.properties"); - properties.setProperty("nifi.nar.library.directory.alt", nonExistantDir.toString()); - - final ExtensionMapping extensionMapping = NarUnpacker.unpackNars(properties); - - assertTrue(extensionMapping.getAllExtensionNames().contains("org.apache.nifi.processors.dummy.one")); - - assertEquals(1,extensionMapping.getAllExtensionNames().size()); - + File[] extensionFiles = extensionsWorkingDir.listFiles(); + + assertEquals(1, extensionFiles.length); + assertEquals("dummy-one.nar-unpacked", extensionFiles[0].getName()); + } + + @Test + public void testUnpackNarsFromNonExistantDir() { + + final File nonExistantDir = new File("./target/this/dir/should/not/exist/"); + nonExistantDir.delete(); + nonExistantDir.deleteOnExit(); + + NiFiProperties properties = loadSpecifiedProperties("/NarUnpacker/conf/nifi.properties"); + properties.setProperty("nifi.nar.library.directory.alt", nonExistantDir.toString()); + + final ExtensionMapping extensionMapping = NarUnpacker.unpackNars(properties); + + assertTrue(extensionMapping.getAllExtensionNames().contains( + "org.apache.nifi.processors.dummy.one")); + + assertEquals(1, extensionMapping.getAllExtensionNames().size()); + final File extensionsWorkingDir = properties.getExtensionsWorkingDirectory(); - File[] extensionFiles = extensionsWorkingDir.listFiles(); - - assertEquals(1,extensionFiles.length); - assertEquals("dummy-one.nar-unpacked", extensionFiles[0].getName()); - } - - @Test - public void testUnpackNarsFromNonDir() throws IOException { - - final File nonDir = new File ("./target/file.txt"); - nonDir.createNewFile(); - nonDir.deleteOnExit(); - - NiFiProperties properties = loadSpecifiedProperties("/NarUnpacker/conf/nifi.properties"); - properties.setProperty("nifi.nar.library.directory.alt", nonDir.toString()); - - final ExtensionMapping extensionMapping = NarUnpacker.unpackNars(properties); - - assertNull(extensionMapping); - } - - - private NiFiProperties loadSpecifiedProperties(String propertiesFile) { - String file = NarUnpackerTest.class.getResource(propertiesFile).getFile(); - - System.setProperty(NiFiProperties.PROPERTIES_FILE_PATH, file); - - NiFiProperties properties = NiFiProperties.getInstance(); - - // clear out existing properties - for (String prop : properties.stringPropertyNames()) { - properties.remove(prop); - } - - InputStream inStream = null; - try { - inStream = new BufferedInputStream(new FileInputStream(file)); - properties.load(inStream); - } catch (final Exception ex) { - throw new RuntimeException("Cannot load properties file due to " + ex.getLocalizedMessage(), ex); - } finally { - if (null != inStream) { - try { - inStream.close(); - } catch (final Exception ex) { - /** - * do nothing * - */ - } - } - } - - return properties; - } + File[] extensionFiles = extensionsWorkingDir.listFiles(); + + assertEquals(1, extensionFiles.length); + assertEquals("dummy-one.nar-unpacked", extensionFiles[0].getName()); + } + + @Test + public void testUnpackNarsFromNonDir() throws IOException { + + final File nonDir = new File("./target/file.txt"); + nonDir.createNewFile(); + nonDir.deleteOnExit(); + + NiFiProperties properties = loadSpecifiedProperties("/NarUnpacker/conf/nifi.properties"); + properties.setProperty("nifi.nar.library.directory.alt", nonDir.toString()); + + final ExtensionMapping extensionMapping = NarUnpacker.unpackNars(properties); + + assertNull(extensionMapping); + } + + private NiFiProperties loadSpecifiedProperties(String propertiesFile) { + String file = NarUnpackerTest.class.getResource(propertiesFile).getFile(); + + System.setProperty(NiFiProperties.PROPERTIES_FILE_PATH, file); + + NiFiProperties properties = NiFiProperties.getInstance(); + + // clear out existing properties + for (String prop : properties.stringPropertyNames()) { + properties.remove(prop); + } + + InputStream inStream = null; + try { + inStream = new BufferedInputStream(new FileInputStream(file)); + properties.load(inStream); + } catch (final Exception ex) { + throw new RuntimeException("Cannot load properties file due to " + + ex.getLocalizedMessage(), ex); + } finally { + if (null != inStream) { + try { + inStream.close(); + } catch (final Exception ex) { + /** + * do nothing * + */ + } + } + } + + return properties; + } } \ No newline at end of file
