Added application.properties support.
This commit is contained in:
		
							parent
							
								
									1d0df6ccaa
								
							
						
					
					
						commit
						c91e742749
					
				
							
								
								
									
										29
									
								
								pom.xml
								
								
								
								
							
							
						
						
									
										29
									
								
								pom.xml
								
								
								
								
							| 
						 | 
				
			
			@ -38,4 +38,33 @@
 | 
			
		|||
 | 
			
		||||
    </dependencies>
 | 
			
		||||
 | 
			
		||||
    <build>
 | 
			
		||||
        <plugins>
 | 
			
		||||
            <plugin>
 | 
			
		||||
                <groupId>org.apache.maven.plugins</groupId>
 | 
			
		||||
                <artifactId>maven-assembly-plugin</artifactId>
 | 
			
		||||
                <version>3.6.0</version>
 | 
			
		||||
                <configuration>
 | 
			
		||||
                    <archive>
 | 
			
		||||
                        <manifest>
 | 
			
		||||
                            <mainClass>com.andrewlalis.d_package_search.DPackageSearch</mainClass>
 | 
			
		||||
                        </manifest>
 | 
			
		||||
                    </archive>
 | 
			
		||||
                    <descriptorRefs>
 | 
			
		||||
                        <descriptorRef>jar-with-dependencies</descriptorRef>
 | 
			
		||||
                    </descriptorRefs>
 | 
			
		||||
                </configuration>
 | 
			
		||||
                <executions>
 | 
			
		||||
                    <execution>
 | 
			
		||||
                        <id>make-assembly</id>
 | 
			
		||||
                        <phase>package</phase>
 | 
			
		||||
                        <goals>
 | 
			
		||||
                            <goal>single</goal>
 | 
			
		||||
                        </goals>
 | 
			
		||||
                    </execution>
 | 
			
		||||
                </executions>
 | 
			
		||||
            </plugin>
 | 
			
		||||
        </plugins>
 | 
			
		||||
    </build>
 | 
			
		||||
 | 
			
		||||
</project>
 | 
			
		||||
| 
						 | 
				
			
			@ -4,18 +4,28 @@ import com.andrewlalis.d_package_search.impl.DubRegistryPackageFetcher;
 | 
			
		|||
import com.andrewlalis.d_package_search.impl.LucenePackageIndexer;
 | 
			
		||||
import com.andrewlalis.d_package_search.impl.LucenePackageSearcher;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.nio.file.Files;
 | 
			
		||||
import java.nio.file.Path;
 | 
			
		||||
import java.time.Duration;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Properties;
 | 
			
		||||
 | 
			
		||||
public class DPackageSearch {
 | 
			
		||||
	public static Properties APPLICATION_PROPERTIES;
 | 
			
		||||
 | 
			
		||||
	public static void main(String[] args) {
 | 
			
		||||
		APPLICATION_PROPERTIES = loadApplicationProperties();
 | 
			
		||||
		Path indexPath = Path.of("package-index");
 | 
			
		||||
		startIndexerThread(new IndexGenerator(
 | 
			
		||||
				new DubRegistryPackageFetcher(),
 | 
			
		||||
				() -> new LucenePackageIndexer(indexPath)
 | 
			
		||||
		));
 | 
			
		||||
		new WebApiRunner(new LucenePackageSearcher(indexPath)).run();
 | 
			
		||||
		if (isPropTrue("indexer.enabled")) {
 | 
			
		||||
			startIndexerThread(new IndexGenerator(
 | 
			
		||||
					new DubRegistryPackageFetcher(),
 | 
			
		||||
					() -> new LucenePackageIndexer(indexPath)
 | 
			
		||||
			));
 | 
			
		||||
		}
 | 
			
		||||
		if (isPropTrue("server.enabled")) {
 | 
			
		||||
			new WebApiRunner(new LucenePackageSearcher(indexPath)).run();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +46,7 @@ public class DPackageSearch {
 | 
			
		|||
				System.out.println("Re-indexing packages now.");
 | 
			
		||||
				indexGenerator.run();
 | 
			
		||||
				try {
 | 
			
		||||
					Thread.sleep(Duration.ofMinutes(60));
 | 
			
		||||
					Thread.sleep(Duration.ofMinutes(getIntProp("indexer.delay-minutes", 60)));
 | 
			
		||||
				} catch (InterruptedException e) {
 | 
			
		||||
					System.err.println("Indexing thread interrupted: " + e.getMessage());
 | 
			
		||||
					break;
 | 
			
		||||
| 
						 | 
				
			
			@ -44,4 +54,36 @@ public class DPackageSearch {
 | 
			
		|||
			}
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private static Properties loadApplicationProperties() {
 | 
			
		||||
		Properties props = new Properties();
 | 
			
		||||
		props.setProperty("server.port", "8080");
 | 
			
		||||
		props.setProperty("server.host", "localhost");
 | 
			
		||||
		props.setProperty("server.enabled", "true");
 | 
			
		||||
		props.setProperty("indexer.enabled", "true");
 | 
			
		||||
		props.setProperty("indexer.delay-minutes", "60");
 | 
			
		||||
		Path propsFilePath = Path.of("application.properties");
 | 
			
		||||
		if (Files.exists(propsFilePath)) {
 | 
			
		||||
			try (var in = Files.newInputStream(propsFilePath)) {
 | 
			
		||||
				props.load(in);
 | 
			
		||||
				System.out.println("Loaded application properties from " + propsFilePath);
 | 
			
		||||
			} catch (IOException e) {
 | 
			
		||||
				System.err.println("Failed to load application properties from " + propsFilePath + ": " + e.getMessage());
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return props;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static boolean isPropTrue(String name) {
 | 
			
		||||
		return APPLICATION_PROPERTIES.getProperty(name, "false").equalsIgnoreCase("true");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static int getIntProp(String name, int defaultValue) {
 | 
			
		||||
		String s = APPLICATION_PROPERTIES.getProperty(name, Integer.toString(defaultValue));
 | 
			
		||||
		return Integer.parseInt(s);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static String getStringProp(String name) {
 | 
			
		||||
		return APPLICATION_PROPERTIES.getProperty(name);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,7 +37,8 @@ public final class WebApiRunner extends Handler.Abstract implements Runnable {
 | 
			
		|||
        threadPool.setName("http-server");
 | 
			
		||||
        Server server = new Server(threadPool);
 | 
			
		||||
        ServerConnector connector = new ServerConnector(server);
 | 
			
		||||
        connector.setPort(8080);
 | 
			
		||||
        connector.setPort(DPackageSearch.getIntProp("server.port", 8080));
 | 
			
		||||
        connector.setHost(DPackageSearch.getStringProp("server.host"));
 | 
			
		||||
        server.addConnector(connector);
 | 
			
		||||
        server.setHandler(this);
 | 
			
		||||
        try {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue