package com.google.appengine.tools.info; import com.google.common.base.Joiner; import java.io.File; import java.net.URL; import java.util.ArrayList; import java.util.List; /** * Implementation of the SDK abstraction by the existing GAE SDK distribution, which is composed * of multiple jar directories for both local execution and deployment of applications. * @author ludo */ class ClassicSdk extends AppengineSdk { @Override public void includeTestingJarOnSharedPath(boolean val) { SdkInfo.includeTestingJarOnSharedPath(val); } @Override public File getToolsApiJarFile() { return new File(getSdkRoot() + "/lib/appengine-tools-api.jar"); } @Override public List<URL> getAgentRuntimeLibs() { return SdkImplInfo.getAgentRuntimeLibs(); } @Override public List<File> getUserJspLibFiles() { return SdkImplInfo.getUserJspLibFiles(); } @Override public List<File> getUserLibFiles() { return SdkInfo.getUserLibFiles(); } @Override public List<URL> getWebApiToolsLibs() { return SdkImplInfo.getWebApiToolLibs(); } @Override public List<File> getSharedJspLibFiles() { return SdkImplInfo.getSharedJspLibFiles(); } @Override public List<URL> getImplLibs() { return SdkImplInfo.getImplLibs(); } @Override public List<File> getSharedLibFiles() { return SdkInfo.getSharedLibFiles(); } @Override public List<URL> getDatanucleusLibs() { return SdkInfo.getOptionalToolsLib("datanucleus").getURLsForVersion("v1"); } @Override public String getQuickStartClasspath() { File jettyDir = new File(getSdkRoot() + "/lib/java-managed-vm/appengine-java-vmruntime"); File dir = new File(jettyDir, "lib"); List<String> list = new ArrayList<>(); list.add(new File(jettyDir, "quickstartgenerator.jar").getAbsolutePath()); for (File f : dir.listFiles()) { list.add(f.getAbsolutePath()); } System.out.println("LUDO"); System.out.println("LUDO"); System.out.println("LUDO"); System.out.println("LUDO"); System.out.println("LUDO"); System.out.println("LUDO"); System.out.println("LUDO"); for (File f : new File(dir, "jsp").listFiles()) { // Filter the taglib jars we do not want by default. They should be provided by the // app classpath if needed. if (!f.getName().startsWith("taglibs")) { list.add(f.getAbsolutePath()); } } for (File f : new File(dir, "jndi").listFiles()) { list.add(f.getAbsolutePath()); } return Joiner.on(System.getProperty("path.separator")).join(list); } @Override public String getWebDefaultXml(String jettyVersion) { switch (jettyVersion) { case "9.2": return getSdkRoot() + "/lib/jetty-base-sdk/etc/webdefault.xml"; case "9.3": return getSdkRoot() + "/jetty93-base/etc/webdefault.xml"; default: throw new IllegalArgumentException("Invalid Jetty version: " + jettyVersion); } } public String getSdkRoot() { return SdkInfo.getSdkRoot().getAbsolutePath(); } @Override public File getResourcesDirectory() { return new File(getSdkRoot(), "docs"); } @Override public File getAgentJarFile() { return new File(getSdkRoot() + "/lib/agent/appengine-agent.jar"); } @Override public File getOverridesJarFile() { return new File(getSdkRoot() + "/lib/override/appengine-dev-jdk-overrides.jar"); } @Override public List<URL> getSharedLibs() { return SdkInfo.getSharedLibs(); } @Override public File getLoggingProperties() { return SdkImplInfo.getLoggingProperties(); } }