[ 
https://issues.apache.org/jira/browse/MCHECKSTYLE-316?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15115396#comment-15115396
 ] 

Thomas Meyer commented on MCHECKSTYLE-316:
------------------------------------------

okay, I think the correct thing would be to use a configured proxy in the 
URLResourceLoader (part of plexus-resources) and use

u.openConnection(proxy).getInputStream();
instead of 
u.openStream();

but for this the proxy from the MavenSession should be injected into the 
URLResourceLoader object, but I know too few plexus object model on how to do 
that, if it's possible at all.

I check how other maven plugins (from the maven-plugins github project does 
solve this) and found this in the 
maven-plugins\maven-doap-plugin\src\main\java\org\apache\maven\plugin\doap\DoapUtil.java
 which is a maybe a good template for apache http client usage:

        if ( settings != null && settings.getActiveProxy() != null )
        {
            Proxy activeProxy = settings.getActiveProxy();

            ProxyInfo proxyInfo = new ProxyInfo();
            proxyInfo.setNonProxyHosts( activeProxy.getNonProxyHosts() );

            if ( StringUtils.isNotEmpty( activeProxy.getHost() )
                && !ProxyUtils.validateNonProxyHosts( proxyInfo, url.getHost() 
) )
            {
                httpClient.getHostConfiguration().setProxy( 
activeProxy.getHost(), activeProxy.getPort() );

                if ( StringUtils.isNotEmpty( activeProxy.getUsername() ) && 
activeProxy.getPassword() != null )
                {
                    Credentials credentials =
                        new UsernamePasswordCredentials( 
activeProxy.getUsername(), activeProxy.getPassword() );

                    httpClient.getState().setProxyCredentials( AuthScope.ANY, 
credentials );
                }
            }
        }

another interesting solution is contained in this plugin 
maven-plugins\maven-jarsigner-plugin\src\main\java\org\apache\maven\plugins\jarsigner\AbstractJarsignerMojo.java
 which seems to append some java system property switches to set the proxy.




> Maven proxy settings is being ignored
> -------------------------------------
>
>                 Key: MCHECKSTYLE-316
>                 URL: https://issues.apache.org/jira/browse/MCHECKSTYLE-316
>             Project: Maven Checkstyle Plugin
>          Issue Type: Bug
>          Components: checkstyle:check
>    Affects Versions: 2.16
>         Environment: Windows 7
>            Reporter: Thomas Meyer
>
> Hi,
> having a suppression location of 
> https://raw.githubusercontent.com/wso2/code-quality-tools/master/checkstyle/suppressions.xml
>  results in a call to 
> DefaultCheckstyleExecutor.getSuppressionsFilePath():797
> which will try a resource lookup via 
> DefaultResourceManager.getResourceAsFile() which will call 
> URLResourceLoader.getResource()
> this will timeout and result in a ConnectionException.
> But in the underlying maven session a HTTP proxy is defined, but not used 
> here.
> The DefaultBuildPluginManager.executeMojo() has the proxy information 
> available in the MavenSession (session) as part of the request 
> (DefaultMavenExecutionRequest) -> proxies
> So a fix would be to apply those configured proxies somehow to the checkstyle 
> plugin, but I'm not sure who this is done best.
> Complete stack trace:
> Thread [main] (Suspended (exception ConnectException))        
>       owns: DualStackPlainSocketImpl  (id=47) 
>       owns: HttpsClient  (id=48)      
>       owns: DelegateHttpsURLConnection  (id=49)       
>       owns: HttpsURLConnectionImpl  (id=50)   
>       DualStackPlainSocketImpl.connect0(int, InetAddress, int) line: not 
> available [native method]    
>       DualStackPlainSocketImpl.socketConnect(InetAddress, int, int) line: 79  
>       
> DualStackPlainSocketImpl(AbstractPlainSocketImpl).doConnect(InetAddress, int, 
> int) line: 345    
>       
> DualStackPlainSocketImpl(AbstractPlainSocketImpl).connectToAddress(InetAddress,
>  int, int) line: 206     
>       
> DualStackPlainSocketImpl(AbstractPlainSocketImpl).connect(SocketAddress, int) 
> line: 188 
>       SocksSocketImpl(PlainSocketImpl).connect(SocketAddress, int) line: 172  
>       SocksSocketImpl.connect(SocketAddress, int) line: 392   
>       SSLSocketImpl(Socket).connect(SocketAddress, int) line: 589     
>       SSLSocketImpl.connect(SocketAddress, int) line: 656     
>       SSLSocketImpl(BaseSSLSocketImpl).connect(SocketAddress) line: 173       
>       HttpsClient(NetworkClient).doConnect(String, int) line: 180     
>       HttpsClient(HttpClient).openServer(String, int) line: 432       
>       HttpsClient(HttpClient).openServer() line: 527  
>       HttpsClient.<init>(SSLSocketFactory, URL, Proxy, int) line: 275 
>       HttpsClient.New(SSLSocketFactory, URL, HostnameVerifier, Proxy, 
> boolean, int, HttpURLConnection) line: 371      
>       
> DelegateHttpsURLConnection(AbstractDelegateHttpsURLConnection).getNewHttpClient(URL,
>  Proxy, int) line: 191      
>       DelegateHttpsURLConnection(HttpURLConnection).plainConnect0() line: 
> 1104        
>       DelegateHttpsURLConnection(HttpURLConnection).plainConnect() line: 998 
> [local variables unavailable]    
>       
> DelegateHttpsURLConnection(AbstractDelegateHttpsURLConnection).connect() 
> line: 177      
>       DelegateHttpsURLConnection(HttpURLConnection).getInputStream0() line: 
> 1512      
>       DelegateHttpsURLConnection(HttpURLConnection).getInputStream() line: 
> 1440       
>       HttpsURLConnectionImpl.getInputStream() line: 254 [local variables 
> unavailable] 
>       URL.openStream() line: 1038 [local variables unavailable]       
>       URLResourceLoader.getResource(String) line: 73  
>       DefaultResourceManager.getResource(String) line: 159    
>       DefaultResourceManager.getResourceAsFile(String, String) line: 91       
>       
> DefaultCheckstyleExecutor.getSuppressionsFilePath(CheckstyleExecutorRequest) 
> line: 797  
>       DefaultCheckstyleExecutor.executeCheckstyle(CheckstyleExecutorRequest) 
> line: 117        
>       CheckstyleViolationCheckMojo.execute() line: 538        
>       DefaultBuildPluginManager.executeMojo(MavenSession, MojoExecution) 
> line: 132    
>       MojoExecutor.execute(MavenSession, MojoExecution, ProjectIndex, 
> DependencyContext) line: 208    
>       MojoExecutor.execute(MavenSession, MojoExecution, ProjectIndex, 
> DependencyContext, PhaseRecorder) line: 153     
>       MojoExecutor.execute(MavenSession, List<MojoExecution>, ProjectIndex) 
> line: 145 
>       LifecycleModuleBuilder.buildProject(MavenSession, MavenSession, 
> ReactorContext, MavenProject, TaskSegment) line: 116    
>       LifecycleModuleBuilder.buildProject(MavenSession, ReactorContext, 
> MavenProject, TaskSegment) line: 80   
>       SingleThreadedBuilder.build(MavenSession, ReactorContext, 
> ProjectBuildList, List<TaskSegment>, ReactorBuildStatus) line: 51     
>       LifecycleStarter.execute(MavenSession) line: 120        
>       DefaultMaven.doExecute(MavenExecutionRequest) line: 347 
>       DefaultMaven.execute(MavenExecutionRequest) line: 154   
>       MavenCli.execute(MavenCli$CliRequest) line: 582 
>       MavenCli.doMain(MavenCli$CliRequest) line: 214  
>       MavenCli.main(String[], ClassWorld) line: 158   
>       NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not 
> available [native method]  
>       NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62      
>       DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43  
>       Method.invoke(Object, Object...) line: 497      
>       Launcher.launchEnhanced(String[]) line: 289     
>       Launcher.launch(String[]) line: 229     
>       Launcher.mainWithExitCode(String[]) line: 415   
>       Launcher.main(String[]) line: 356       



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to