[ https://issues.apache.org/jira/browse/TWILL-179?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15954090#comment-15954090 ]
ASF GitHub Bot commented on TWILL-179: -------------------------------------- Github user chtyim commented on a diff in the pull request: https://github.com/apache/twill/pull/51#discussion_r109512583 --- Diff: twill-yarn/src/test/java/org/apache/twill/yarn/CustomClassLoader.java --- @@ -0,0 +1,87 @@ +/* + * 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.twill.yarn; + +import org.apache.twill.api.ServiceAnnouncer; +import org.apache.twill.common.Cancellable; +import org.objectweb.asm.ClassWriter; +import org.objectweb.asm.Opcodes; +import org.objectweb.asm.Type; +import org.objectweb.asm.commons.GeneratorAdapter; +import org.objectweb.asm.commons.Method; + +import java.net.URL; +import java.net.URLClassLoader; + +/** + * ClassLoader that generates a new class for the {@link CustomClassLoaderTestRun}. + */ +public final class CustomClassLoader extends URLClassLoader { + + public CustomClassLoader(URL[] urls, ClassLoader parent) { + super(urls, parent); + } + + @Override + protected Class<?> findClass(String name) throws ClassNotFoundException { + if (!CustomClassLoaderRunnable.GENERATED_CLASS_NAME.equals(name)) { + return super.findClass(name); + } + + // Generate a class that look like this: + // + // public class Generated { + // + // public void announce(ServiceAnnouncer announcer, String serviceName, int port) { --- End diff -- actually the comment is correct. The generated method has `void` return type. The `announcer.announce` method has `Cancellable` return type, but the result gets ignored (hence the `mg.pop()` code in line 79). > Provides more flexibility in controlling the container classpath and > classloader > -------------------------------------------------------------------------------- > > Key: TWILL-179 > URL: https://issues.apache.org/jira/browse/TWILL-179 > Project: Apache Twill > Issue Type: Improvement > Components: core > Reporter: Terence Yim > Assignee: Terence Yim > Fix For: 0.11.0 > > > Currently the user has little control on the classpath and classloader of the > runnable container. E.g. in Java, one can control both through the {{-cp}} > and {{-Djava.system.class.loader}} arguments. -- This message was sent by Atlassian JIRA (v6.3.15#6346)