📄 defaultrmicadapter.java
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */package org.apache.tools.ant.taskdefs.rmic;import java.io.File;import java.util.Random;import java.util.Vector;import java.util.List;import java.util.ArrayList;import org.apache.tools.ant.Project;import org.apache.tools.ant.taskdefs.Rmic;import org.apache.tools.ant.types.Commandline;import org.apache.tools.ant.types.Path;import org.apache.tools.ant.util.FileNameMapper;import org.apache.tools.ant.util.StringUtils;/** * This is the default implementation for the RmicAdapter interface. * Currently, this is a cut-and-paste of the original rmic task and * DefaultCopmpilerAdapter. * * @since Ant 1.4 */public abstract class DefaultRmicAdapter implements RmicAdapter { private Rmic attributes; private FileNameMapper mapper; private static final Random RAND = new Random(); /** suffix denoting a stub file: {@value} */ public static final String RMI_STUB_SUFFIX = "_Stub"; /** suffix denoting a skel file: {@value} */ public static final String RMI_SKEL_SUFFIX = "_Skel"; /** suffix denoting a tie file: {@value} */ public static final String RMI_TIE_SUFFIX = "_Tie"; /** arg for compat: {@value} */ public static final String STUB_COMPAT = "-vcompat"; /** arg for 1.1: {@value} */ public static final String STUB_1_1 = "-v1.1"; /** arg for 1.2: {@value} */ public static final String STUB_1_2 = "-v1.2"; /** * option for stub 1.1 in the rmic task: {@value} */ public static final String STUB_OPTION_1_1 = "1.1"; /** * option for stub 1.2 in the rmic task: {@value} */ public static final String STUB_OPTION_1_2 = "1.2"; /** * option for stub compat in the rmic task: {@value} */ public static final String STUB_OPTION_COMPAT = "compat"; /** * Default constructor */ public DefaultRmicAdapter() { } /** * Sets Rmic attributes * @param attributes the rmic attributes */ public void setRmic(final Rmic attributes) { this.attributes = attributes; mapper = new RmicFileNameMapper(); } /** * Get the Rmic attributes * @return the attributes as a Rmic taskdef */ public Rmic getRmic() { return attributes; } /** * Gets the stub class suffix * @return the stub suffix "_Stub" */ protected String getStubClassSuffix() { return RMI_STUB_SUFFIX; } /** * Gets the skeleton class suffix * @return the skeleton suffix "_Skel" */ protected String getSkelClassSuffix() { return RMI_SKEL_SUFFIX; } /** * Gets the tie class suffix * @return the tie suffix "_Tie" */ protected String getTieClassSuffix() { return RMI_TIE_SUFFIX; } /** * This implementation returns a mapper that may return up to two * file names. * * <ul> * <li>for JRMP it will return *_getStubClassSuffix (and * *_getSkelClassSuffix if JDK 1.1 is used)</li> * * <li>for IDL it will return a random name, causing <rmic> to * always recompile.</li> * * <li>for IIOP it will return _*_getStubClassSuffix for * interfaces and _*_getStubClassSuffix for non-interfaces (and * determine the interface and create _*_Stub from that).</li> * </ul> * @return a <code>FileNameMapper</code> */ public FileNameMapper getMapper() { return mapper; } /** * Gets the CLASSPATH this rmic process will use. * @return the classpath */ public Path getClasspath() { return getCompileClasspath(); } /** * Builds the compilation classpath. * @return the classpath */ protected Path getCompileClasspath() { Path classpath = new Path(attributes.getProject()); // add dest dir to classpath so that previously compiled and // untouched classes are on classpath classpath.setLocation(attributes.getBase()); // Combine the build classpath with the system classpath, in an // order determined by the value of build.sysclasspath Path cp = attributes.getClasspath(); if (cp == null) { cp = new Path(attributes.getProject()); } if (attributes.getIncludeantruntime()) { classpath.addExisting(cp.concatSystemClasspath("last")); } else { classpath.addExisting(cp.concatSystemClasspath("ignore")); } if (attributes.getIncludejavaruntime()) { classpath.addJavaRuntime(); } return classpath; } /** * Setup rmic argument for rmic. * @return the command line */ protected Commandline setupRmicCommand() { return setupRmicCommand(null); } /** * Setup rmic argument for rmic. * @param options additional parameters needed by a specific * implementation. * @return the command line */ protected Commandline setupRmicCommand(String[] options) { Commandline cmd = new Commandline(); if (options != null) { for (int i = 0; i < options.length; i++) { cmd.createArgument().setValue(options[i]); } } Path classpath = getCompileClasspath(); cmd.createArgument().setValue("-d"); cmd.createArgument().setFile(attributes.getBase()); if (attributes.getExtdirs() != null) { cmd.createArgument().setValue("-extdirs"); cmd.createArgument().setPath(attributes.getExtdirs()); } cmd.createArgument().setValue("-classpath"); cmd.createArgument().setPath(classpath); String stubOption = addStubVersionOptions(); if (stubOption != null) { //set the non-null stubOption cmd.createArgument().setValue(stubOption); } if (null != attributes.getSourceBase()) { cmd.createArgument().setValue("-keepgenerated"); } if (attributes.getIiop()) { attributes.log("IIOP has been turned on.", Project.MSG_INFO); cmd.createArgument().setValue("-iiop"); if (attributes.getIiopopts() != null) { attributes.log("IIOP Options: " + attributes.getIiopopts(), Project.MSG_INFO); cmd.createArgument().setValue(attributes.getIiopopts()); } } if (attributes.getIdl()) { cmd.createArgument().setValue("-idl"); attributes.log("IDL has been turned on.", Project.MSG_INFO); if (attributes.getIdlopts() != null) { cmd.createArgument().setValue(attributes.getIdlopts()); attributes.log("IDL Options: " + attributes.getIdlopts(), Project.MSG_INFO); } } if (attributes.getDebug()) { cmd.createArgument().setValue("-g"); } String[] compilerArgs = attributes.getCurrentCompilerArgs();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -