/* * Copyright (c) 1998-2011 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the * * Free Software Foundation, Inc. * 59 Temple Place, Suite 330 * Boston, MA 02111-1307 USA * * @author Sam */ package com.caucho.netbeans; import org.netbeans.api.java.platform.JavaPlatform; import org.netbeans.api.java.platform.JavaPlatformManager; import org.netbeans.api.java.platform.Specification; import org.netbeans.modules.j2ee.deployment.plugins.api.InstanceCreationException; import org.netbeans.modules.j2ee.deployment.plugins.api.InstanceProperties; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException; import java.io.File; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; public class ResinConfiguration implements Cloneable { private static final PluginL10N L = new PluginL10N(ResinConfiguration.class); private static final Logger log = Logger.getLogger(ResinConfiguration.class.getName()); private static final String PROPERTY_AUTOLOAD_ENABLED = "autoload_enabled"; private static final String PROPERTY_DEBUG_PORT = "debugger_port"; private static final String PROPERTY_DISPLAY_NAME = InstanceProperties.DISPLAY_NAME_ATTR; private static final String PROPERTY_JAVA_PLATFORM = "java_platform"; private static final String PROPERTY_JAVA_OPTS = "java_opts"; private static final String PLATFORM_PROPERTY_ANT_NAME = "platform.ant.name"; private static final String URI_TOKEN_HOME = ":home="; private static final String URI_TOKEN_CONF = ":conf="; private static final String URI_TOKEN_SERVER_ID = ":server-id="; private static final String URI_TOKEN_SERVER_PORT = ":server-port="; private static final String URI_TOKEN_SERVER_ADDRESS = ":server-address="; private ResinInstance _resin; private File _resinConf; private String _serverId; private JavaPlatform _javaPlatform; private int _debugPort = 0; private int _startTimeout = 60 * 1000; private int _stopTimeout = 60 * 1000; public ResinConfiguration(ResinInstance resin) throws DeploymentManagerCreationException { _resin = resin; } public ResinInstance getResinInstance() { return _resin; } String getContextPath() { return "/test"; } int getPort() { return _resin.getPort(); } @Override protected Object clone() { try { return super.clone(); } catch (CloneNotSupportedException e) { throw new AssertionError(e); } } public File getResinConf() { return new File(_resin.getConf()); } public void setResinConf(File resinConf) { _resinConf = resinConf; } public File getResinHome() { return new File(_resin.getHome()); } public File getResinRoot() { return new File(_resin.getRoot()); } public File getWebapps() { return new File(_resin.getWebapps()); } public String getServerId() { return _serverId; } public void setServerId(String serverId) { _serverId = serverId; } public String getServerAddress() { return _resin.getAddress(); } public int getServerPort() { return _resin.getPort(); } /** * Returns the debug port, 0 means a free port should be determined. */ public int getDebugPort() { return _debugPort; } public void setDebugPort(int debugPort) { _debugPort = debugPort; } /** * Returns the java platform. */ public JavaPlatform getJavaPlatform() { return _javaPlatform; } public void setJavaPlatform(JavaPlatform javaPlatform) { _javaPlatform = javaPlatform; } public static String getJavaPlatformName(JavaPlatform javaPlatform) { return ((String) javaPlatform.getProperties() .get(PLATFORM_PROPERTY_ANT_NAME)); } public void setJavaPlatformByName(String javaPlatformName) { JavaPlatformManager platformManager = JavaPlatformManager.getDefault(); JavaPlatform javaPlatform = platformManager.getDefaultPlatform(); JavaPlatform[] installedPlatforms = platformManager.getPlatforms(null, new Specification( "J2SE", null)); for (JavaPlatform installedPlatform : installedPlatforms) { String platformName = getJavaPlatformName(installedPlatform); if (platformName != null && platformName.equals(javaPlatformName)) { javaPlatform = installedPlatform; break; } } _javaPlatform = javaPlatform; } public int getStartTimeout() { return _startTimeout; } public void setStartTimeout(int startTimeout) { _startTimeout = startTimeout; } public int getStopTimeout() { return _stopTimeout; } public void setStopTimeout(int stopTimeout) { _stopTimeout = stopTimeout; } /** * Calculates a javaHome based on the {@link #getJavaPlatform()} * javaHome. */ public File calculateJavaHome() { JavaPlatform javaPlatform = _javaPlatform; if (javaPlatform == null) { javaPlatform = JavaPlatformManager.getDefault().getDefaultPlatform(); } return FileUtil.toFile((FileObject) javaPlatform.getInstallFolders() .iterator() .next()); } public List<URL> getClasses() { // XXX: s/b urls to Resin libraries return new ArrayList<URL>(); } public List<URL> getSources() { // XXX: s/b urls to Resin sources return new ArrayList<URL>(); } public List<URL> getJavadocs() { return new ArrayList<URL>(); } public String getDisplayName() { return _resin.getDisplayName(); } private void requiredFile(String name, File file) throws IllegalStateException { if (file == null) { throw new IllegalStateException(L.l("''{0}'' is required", name)); } if (!file.exists()) { throw new IllegalStateException(L.l("''{0}'' does not exist", file)); } } public void validate() throws IllegalStateException { } public String toString() { return getClass().getSimpleName() + "[" + _resin.getUrl() + "]"; } }