/* * The contents of this file are subject to the terms * of the Common Development and Distribution License * (the License). You may not use this file except in * compliance with the License. * * You can obtain a copy of the license at * https://glassfish.dev.java.net/public/CDDLv1.0.html or * glassfish/bootstrap/legal/CDDLv1.0.txt. * See the License for the specific language governing * permissions and limitations under the License. * * When distributing Covered Code, include this CDDL * Header Notice in each file and include the License file * at glassfish/bootstrap/legal/CDDLv1.0.txt. * If applicable, add the following below the CDDL Header, * with the fields enclosed by brackets [] replaced by * you own identifying information: * "Portions Copyrighted [year] [name of copyright owner]" * * Copyright 2008 Sun Microsystems, Inc. All rights reserved. */ package org.glassfish.deployment.autodeploy; import com.sun.enterprise.v3.admin.CommandRunner; import org.glassfish.deployment.admin.DeployCommand; import java.io.File; import java.util.Properties; import org.glassfish.api.ActionReport; import org.glassfish.api.admin.AdminCommand; import org.glassfish.deployment.autodeploy.AutoDeployer.AutodeploymentStatus; import org.glassfish.deployment.common.DeploymentProperties; import org.jvnet.hk2.annotations.Inject; import org.jvnet.hk2.annotations.Scoped; import org.jvnet.hk2.annotations.Service; import org.jvnet.hk2.component.Habitat; import org.jvnet.hk2.component.PerLookup; /** * Performs a single auto-deployment operation for a single file. *

* Note - Use the newInstance static method to obtain a fully-injected operation; * it is safer and more convenient than using the no-arg constructor and then * invoking init yourself. * * @author tjquinn */ @Service @Scoped(PerLookup.class) public class AutoDeploymentOperation extends AutoOperation { /** * Creates a fully-injected, ready-to-use AutoDeploymentOperation object. * @param habitat * @param renameOnSuccess * @param file * @param enabled * @param virtualServer * @param forceDeploy * @param verify * @param preJspCompilation * @param target * @return the injected, initialized AutoDeploymentOperation */ static AutoDeploymentOperation newInstance( Habitat habitat, boolean renameOnSuccess, File file, boolean enabled, String virtualServer, boolean forceDeploy, boolean verify, boolean preJspCompilation, String target) { AutoDeploymentOperation o = (AutoDeploymentOperation) habitat.getComponent(AutoDeploymentOperation.class); o.init(renameOnSuccess, file, enabled, virtualServer, forceDeploy, verify, preJspCompilation, target); return o; } private boolean renameOnSuccess; private static final String COMMAND_NAME = "deploy"; @Inject(name=COMMAND_NAME) private DeployCommand deployCommand; @Inject private AutodeployRetryManager retryManager; /** * Completes the initialization of the object. * @param renameOnSuccess * @param file * @param enabled * @param virtualServer * @param forceDeploy * @param verify * @param preJspCompilation * @param target * @return the object itself for convenience */ protected AutoDeploymentOperation init ( boolean renameOnSuccess, File file, boolean enabled, String virtualServer, boolean forceDeploy, boolean verify, boolean preJspCompilation, String target) { super.init(file, getDeployActionProperties( file, enabled, virtualServer, forceDeploy, verify, preJspCompilation, target), COMMAND_NAME, deployCommand); this.renameOnSuccess = renameOnSuccess; return this; } /** * {@inheritDoc} */ protected String getMessageString(AutodeploymentStatus ds, File file) { return localStrings.getLocalString( ds.deploymentMessageKey, ds.deploymentDefaultMessage, file); } /** * {@inheritDoc} */ protected void markFiles(AutodeploymentStatus ds, File file) { /* * One reason an auto-deployment may fail is if the auto-deployed * file is a directory and the directory's contents were not yet * complete when the autodeployer detected a change in the top-level * directory file's timestamp. Retry a failed autodeploy of a * directory for the prescribed retry period or until it succeeds. */ if (ds == AutodeploymentStatus.FAILURE) { if (file.isDirectory()) { try { retryManager.recordFailedDeployment(file); } catch (AutoDeploymentException ex) { /* * The retry manager has concluded that this most recent * failure should be the last one. */ markDeployFailed(file); } } else { retryManager.endMonitoring(file); markDeployFailed(file); } } else { retryManager.recordSuccessfulDeployment(file); if (ds.status) { if (renameOnSuccess) { // XXX remove file from retry mgr markDeployed(file); } } else { markDeployFailed(file); } } } // Methods for creating operation status file(s) private void markDeployed(File f) { try { deleteAllMarks(f); getDeployedFile(f).createNewFile(); } catch (Exception e) { //ignore } } private void markDeployFailed(File f) { try { deleteAllMarks(f); getDeployFailedFile(f).createNewFile(); } catch (Exception e) { //ignore } } private static Properties getDeployActionProperties( File deployablefile, boolean enabled, String virtualServer, boolean forceDeploy, boolean verify, boolean jspPreCompilation, String target){ DeploymentProperties dProps = new DeploymentProperties(); dProps.setPath(deployablefile.getAbsolutePath()); // dProps.setUpload(false); dProps.setEnabled(enabled); if (virtualServer != null) { dProps.setVirtualServers(virtualServer); } dProps.setForce(forceDeploy); dProps.setVerify(verify); dProps.setPrecompileJSP(jspPreCompilation); // dProps.setResourceAction(DeploymentProperties.RES_DEPLOYMENT); // dProps.setResourceTargetList(target); return (Properties)dProps; } } ----- Classpath: --------------------------------------------- bootPath: /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar:/System/Library/Java/Extensions/AppleScriptEngine.jar:/System/Library/Java/Extensions/CoreAudio.jar:/System/Library/Java/Extensions/dns_sd.jar:/System/Library/Java/Extensions/j3daudio.jar:/System/Library/Java/Extensions/j3dcore.jar:/System/Library/Java/Extensions/j3dutils.jar:/System/Library/Java/Extensions/jai_codec.jar:/System/Library/Java/Extensions/jai_core.jar:/System/Library/Java/Extensions/mlibwrapper_jai.jar:/System/Library/Java/Extensions/MRJToolkit.jar:/System/Library/Java/Extensions/QTJava.zip:/System/Library/Java/Extensions/vecmath.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/apple_provider.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/dnsns.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/localedata.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/sunjce_provider.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/sunpkcs11.jar classPath: /.m2/repository/com/sun/enterprise/hk2/0.3.21/hk2-0.3.21.jar:/.m2/repository/com/sun/enterprise/hk2-core/0.3.21/hk2-core-0.3.21.jar:/.m2/repository/com/sun/enterprise/config/0.3.21/config-0.3.21.jar:/.m2/repository/com/sun/enterprise/auto-depends/0.3.21/auto-depends-0.3.21.jar:/.m2/repository/com/sun/enterprise/tiger-types-osgi/0.3.21/tiger-types-osgi-0.3.21.jar:/.m2/repository/org/glassfish/common/glassfish-api/10.0.414/glassfish-api-10.0.414.jar:/.m2/repository/org/glassfish/external/grizzly-module/1.8.5.4/grizzly-module-1.8.5.4.jar:/.m2/repository/org/glassfish/common/common-util/10.0-SNAPSHOT/common-util-10.0-SNAPSHOT.jar:/.m2/repository/org/glassfish/deployment/deployment-common/10.0-SNAPSHOT/deployment-common-10.0-SNAPSHOT.jar:/.m2/repository/org/glassfish/common/internal-api/10.0-SNAPSHOT/internal-api-10.0-SNAPSHOT.jar:/.m2/repository/org/glassfish/admin/config-api/10.0-SNAPSHOT/config-api-10.0-SNAPSHOT.jar:/.m2/repository/org/glassfish/javax.xml.stream/10.0-SNAPSHOT/javax.xml.stream-10.0-SNAPSHOT.jar:/.m2/repository/org/glassfish/core/kernel/10.0-SNAPSHOT/kernel-10.0-SNAPSHOT.jar:/.m2/repository/org/glassfish/common/stats77/10.0-SNAPSHOT/stats77-10.0-SNAPSHOT.jar:/.m2/repository/org/glassfish/external/asm-all-repackaged/10.0-SNAPSHOT/asm-all-repackaged-10.0-SNAPSHOT.jar:/.m2/repository/org/glassfish/flashlight/flashlight-framework/10.0-SNAPSHOT/flashlight-framework-10.0-SNAPSHOT.jar:/.m2/repository/org/glassfish/flashlight/flashlight-agent/10.0-SNAPSHOT/flashlight-agent-10.0-SNAPSHOT.jar:/.m2/repository/org/glassfish/admin/monitoring-core/10.0-SNAPSHOT/monitoring-core-10.0-SNAPSHOT.jar:/.m2/repository/org/glassfish/deployment/deployment-admin/10.0-SNAPSHOT/deployment-admin-10.0-SNAPSHOT.jar sourcePath: /Users/Tim/asgroup/v3/jun-11/v3/deployment/autodeploy/src/main/java:/Users/Tim/asgroup/v3/jun-11/v3/deployment/autodeploy/src/main/java ----- Original exception --------------------------------------------- java.lang.NullPointerException at com.sun.tools.javac.code.Types.elemtype(Types.java:1253) at com.sun.tools.javac.comp.Resolve.argumentsAcceptable(Resolve.java:379) at com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:335) at com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:558) at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:748) at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:714) at com.sun.tools.javac.comp.Resolve.resolveQualifiedMethod(Resolve.java:1244) at com.sun.tools.javac.comp.Attr.selectSym(Attr.java:2014) at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:1921) at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1655) at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:387) at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:404) at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1325) at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1300) at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:387) at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:404) at com.sun.tools.javac.comp.Attr.visitReturn(Attr.java:1194) at com.sun.tools.javac.tree.JCTree$JCReturn.accept(JCTree.java:1219) at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:387) at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:424) at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:440) at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:791) at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:769) at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:387) at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:424) at com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:704) at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:657) at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:387) at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:424) at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:2779) at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2705) at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2643) at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1076) at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1050) at com.sun.tools.javac.api.JavacTaskImpl.analyze(JavacTaskImpl.java:445) at com.sun.tools.javac.api.JavacTaskImpl.analyze(JavacTaskImpl.java:425) at org.netbeans.api.java.source.JavaSource.moveToPhase(JavaSource.java:1322) at org.netbeans.api.java.source.CompilationInfoImpl.toPhase(CompilationInfoImpl.java:280) at org.netbeans.api.java.source.CompilationController.toPhase(CompilationController.java:80) at org.netbeans.api.java.source.ui.ElementOpen$1.run(ElementOpen.java:197) at org.netbeans.api.java.source.ui.ElementOpen$1.run(ElementOpen.java:195) at org.netbeans.api.java.source.JavaSource.runUserActionTask(JavaSource.java:669) at org.netbeans.api.java.source.ui.ElementOpen.getOffset(ElementOpen.java:194) at org.netbeans.api.java.source.ui.ElementOpen.getOpenInfo(ElementOpen.java:142) at org.netbeans.api.java.source.ui.ElementOpen.open(ElementOpen.java:119) at org.netbeans.modules.java.source.ui.JavaTypeDescription.open(JavaTypeDescription.java:118) at org.netbeans.modules.jumpto.type.GoToTypeAction.actionPerformed(GoToTypeAction.java:143) at org.openide.windows.TopComponent.processKeyBinding(TopComponent.java:1007) at javax.swing.JComponent.processKeyBindings(JComponent.java:2818) at javax.swing.JComponent.processKeyEvent(JComponent.java:2735) at java.awt.Component.processEvent(Component.java:5379) at java.awt.Container.processEvent(Container.java:2010) at java.awt.Component.dispatchEventImpl(Component.java:4068) at java.awt.Container.dispatchEventImpl(Container.java:2068) at java.awt.Component.dispatchEvent(Component.java:3903) at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1826) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:681) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:938) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:810) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:645) at java.awt.Component.dispatchEventImpl(Component.java:3941) at java.awt.Container.dispatchEventImpl(Container.java:2068) at java.awt.Window.dispatchEventImpl(Window.java:1791) at java.awt.Component.dispatchEvent(Component.java:3903) at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)