Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-server/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportServer.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-server/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportServer.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-server/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportServer.java (revision 0) @@ -0,0 +1,159 @@ +package org.apache.continuum.distributed.transport.slave; + +/* + * 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. + */ + +import java.util.List; +import java.util.Map; + +import org.apache.continuum.buildagent.ContinuumBuildAgentException; +import org.apache.continuum.buildagent.ContinuumBuildAgentService; +import org.apache.continuum.buildagent.model.Installation; +import org.apache.continuum.distributed.transport.slave.SlaveBuildAgentTransportService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * ProxyMasterBuildAgentTransportService + */ +public class SlaveBuildAgentTransportServer + implements SlaveBuildAgentTransportService +{ + private Logger log = LoggerFactory.getLogger( this.getClass() ); + + private ContinuumBuildAgentService continuumBuildAgentService; + + public SlaveBuildAgentTransportServer( ContinuumBuildAgentService continuumBuildAgentService ) + { + this.continuumBuildAgentService = continuumBuildAgentService; + } + + public Boolean buildProjects( List projectsBuildContext ) + throws Exception + { + Boolean result = Boolean.FALSE; + + try + { + continuumBuildAgentService.buildProjects( projectsBuildContext ); + result = Boolean.TRUE; + + log.info( "Building projects." ); + } + catch ( ContinuumBuildAgentException e ) + { + log.error( "Failed to build projects.", e ); + } + + return result; + } + + // TODO: fix this + public List getAvailableInstallations() + throws Exception + { + List installationsObj = null; + + List installations = null; + + try + { + installations = continuumBuildAgentService.getAvailableInstallations(); + log.info( "Available installations: " + installations.size() ); + } + catch ( ContinuumBuildAgentException e ) + { + log.error( "Failed to get available installations.", e ); + } + + return installationsObj; + } + + public Map getBuildResult( int projectId ) + throws Exception + { + Map buildResult = null; + + try + { + continuumBuildAgentService.getBuildResult( projectId ); + log.info( "Build result for project " + projectId + " acquired." ); + } + catch ( ContinuumBuildAgentException e ) + { + log.error( "Failed to get build result for project " + projectId, e ); + } + + return buildResult; + } + + public Integer getProjectCurrentlyBuilding() + throws Exception + { + Integer projectId = new Integer( continuumBuildAgentService.getProjectCurrentlyBuilding() ); + + log.info( "Currently building project " + projectId.intValue() ); + + return projectId; + } + + public Boolean isBusy() + throws Exception + { + Boolean busy = null; + try + { + busy = new Boolean( continuumBuildAgentService.isBusy() ); + log.info( "Build agent is " + ( busy ? "" : "not" ) + " busy." ); + } + catch ( ContinuumBuildAgentException e ) + { + log.error( "Failed to determine if master is busy.", e ); + } + + return busy; + } + + public Boolean ping() + throws Exception + { + log.info( "Ping ok" ); + + return Boolean.TRUE; + } + + public Boolean cancelBuild() + throws Exception + { + Boolean result = Boolean.FALSE; + + try + { + continuumBuildAgentService.cancelBuild(); + result = Boolean.TRUE; + log.info( "Cancelled build" ); + } + catch ( ContinuumBuildAgentException e ) + { + log.error( "Failed to cancel build", e ); + } + + return result; + } +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-server/pom.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-server/pom.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-server/pom.xml (revision 0) @@ -0,0 +1,41 @@ + + + + + org.apache.continuum + continuum-distributed-build-transport-slave + 1.3.1-SNAPSHOT + + 4.0.0 + continuum-distributed-build-transport-slave-server + Continuum :: Distributed Build :: Transport :: Slave :: Server + + + + org.apache.continuum + continuum-distributed-build-transport-slave-api + 1.3.1-SNAPSHOT + + + org.apache.continuum + continuum-buildagent-api + + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-api/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportService.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-api/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportService.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-api/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportService.java (revision 0) @@ -0,0 +1,46 @@ +package org.apache.continuum.distributed.transport.slave; + +import java.util.List; +import java.util.Map; + +import com.atlassian.xmlrpc.ServiceObject; + +/* + * 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. + */ + +/** + * SlaveBuildAgentTransportService + */ +@ServiceObject( "SlaveBuildAgentTransportService" ) +public interface SlaveBuildAgentTransportService +{ + public Boolean buildProjects( List projectsBuildContext ) throws Exception; + + public Map getBuildResult( int projectId ) throws Exception; + + public Integer getProjectCurrentlyBuilding() throws Exception; + + public List getAvailableInstallations() throws Exception; + + public Boolean isBusy() throws Exception; + + public Boolean ping() throws Exception; + + public Boolean cancelBuild() throws Exception; +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-api/pom.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-api/pom.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-api/pom.xml (revision 0) @@ -0,0 +1,42 @@ + + + + + org.apache.continuum + continuum-distributed-build-transport-slave + 1.3.1-SNAPSHOT + + 4.0.0 + continuum-distributed-build-transport-slave-api + Continuum :: Distributed Build :: Transport :: Slave :: API + + + + com.atlassian.xmlrpc + atlassian-xmlrpc-binder-server-spring + 0.8.2 + + + org.apache.continuum + continuum-buildagent-core + 1.3.1-SNAPSHOT + + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/pom.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/pom.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/pom.xml (revision 0) @@ -0,0 +1,34 @@ + + + + continuum-distributed-build + org.apache.continuum + 1.3.1-SNAPSHOT + + 4.0.0 + continuum-distributed-build-transport-slave + Continuum :: Distributed Build :: Transport :: Slave + pom + + continuum-distributed-build-transport-slave-api + continuum-distributed-build-transport-slave-server + continuum-distributed-build-transport-slave-client + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-client/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportClient.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-client/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportClient.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-client/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportClient.java (revision 0) @@ -0,0 +1,199 @@ +package org.apache.continuum.distributed.transport.slave; + +/* + * 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. + */ + +import java.net.URL; +import java.util.List; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.atlassian.xmlrpc.AuthenticationInfo; +import com.atlassian.xmlrpc.Binder; +import com.atlassian.xmlrpc.BindingException; +import com.atlassian.xmlrpc.DefaultBinder; + +/** + * SlaveBuildAgentTransportClient + */ +public class SlaveBuildAgentTransportClient + implements SlaveBuildAgentTransportService +{ + private Logger log = LoggerFactory.getLogger( this.getClass() ); + + private SlaveBuildAgentTransportService slave; + + public SlaveBuildAgentTransportClient( URL serviceUrl ) + throws Exception + { + this( serviceUrl, null, null ); + } + + public SlaveBuildAgentTransportClient( URL serviceUrl, String login, String password ) + throws Exception + { + Binder binder = new DefaultBinder(); + AuthenticationInfo authnInfo = new AuthenticationInfo( login, password ); + + try + { + slave = binder.bind( SlaveBuildAgentTransportService.class, serviceUrl, authnInfo ); + } + catch ( BindingException e ) + { + log.error( "Can't bind service interface " + SlaveBuildAgentTransportService.class.getName() + " to " + serviceUrl.toExternalForm() + " using " + authnInfo.getUsername() + ", " + authnInfo.getPassword(), e ); + throw new Exception( "Can't bind service interface " + SlaveBuildAgentTransportService.class.getName() + " to " + serviceUrl.toExternalForm() + " using " + authnInfo.getUsername() + ", " + authnInfo.getPassword(), e); + } + } + + public Boolean buildProjects( List projectsBuildContext ) + throws Exception + { + Boolean result = null; + + try + { + result = slave.buildProjects( projectsBuildContext ); + log.info( "Building projects." ); + } + catch ( Exception e ) + { + log.error( "Failed to build projects.", e ); + throw new Exception( "Failed to build projects.", e ); + } + + return result; + } + + public List getAvailableInstallations() + throws Exception + { + List installations = null; + + try + { + installations = slave.getAvailableInstallations(); + log.info( "Available installations: " + installations.size() ); + } + catch ( Exception e ) + { + log.error( "Failed to get available installations.", e ); + throw new Exception( "Failed to get available installations." , e ); + } + + return installations; + } + + public Map getBuildResult( int projectId ) + throws Exception + { + Map buildResult = null; + + try + { + buildResult = slave.getBuildResult( projectId ); + log.info( "Build result for project " + projectId + " acquired." ); + } + catch ( Exception e ) + { + log.error( "Failed to get build result for project " + projectId, e ); + throw new Exception( "Failed to get build result for project " + projectId, e ); + } + + return buildResult; + } + + public Integer getProjectCurrentlyBuilding() + throws Exception + { + Integer projectId = null; + + try + { + projectId = slave.getProjectCurrentlyBuilding(); + log.info( "Currently building project " + projectId ); + } + catch ( Exception e ) + { + log.error( "Failed to get the currently building project", e ); + throw new Exception( "Failed to get the currently building project", e ); + } + + return projectId; + } + + public Boolean isBusy() + throws Exception + { + Boolean busy = null; + + try + { + busy = slave.isBusy(); + log.info( "Build agent is " + ( busy.booleanValue() ? "" : "not" ) + " busy." ); + } + catch ( Exception e ) + { + log.error( "Failed to determine if the build agent is busy.", e ); + throw new Exception( "Failed to determine if the build agent is busy.", e ); + } + + return busy; + } + + public Boolean ping() + throws Exception + { + Boolean result = null; + + try + { + result = slave.ping(); + log.info( "Ping " + ( result.booleanValue() ? "ok" : "failed" ) ); + } + catch ( Exception e ) + { + log.info( "Ping error" ); + throw new Exception( "Ping error", e ); + } + + return result; + } + + public Boolean cancelBuild() + throws Exception + { + Boolean result = null; + + try + { + result = slave.cancelBuild(); + log.info( "Cancelled build" ); + } + catch ( Exception e ) + { + log.error( "Error cancelling build" ); + throw new Exception( "Error cancelling build", e ); + } + + return null; + } +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-client/pom.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-client/pom.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-client/pom.xml (revision 0) @@ -0,0 +1,46 @@ + + + + + org.apache.continuum + continuum-distributed-build-transport-slave + 1.3.1-SNAPSHOT + + 4.0.0 + continuum-distributed-build-transport-slave-client + Continuum :: Distributed Build :: Transport :: Slave :: Client + + + + org.apache.continuum + continuum-distributed-build-transport-slave-api + 1.3.1-SNAPSHOT + + + com.atlassian.xmlrpc + atlassian-xmlrpc-binder + 0.8.2 + + + org.apache.continuum + continuum-buildagent-api + + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-server/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportServer.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-server/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportServer.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-server/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportServer.java (revision 0) @@ -0,0 +1,67 @@ +package org.apache.continuum.distributed.transport.master; + +/* + * 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. + */ + +import java.util.Map; + +import org.apache.continuum.builder.distributed.manager.DistributedBuildManager; +import org.apache.continuum.distributed.transport.master.MasterBuildAgentTransportService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * MasterBuildAgentTransportServer + */ +public class MasterBuildAgentTransportServer + implements MasterBuildAgentTransportService +{ + private Logger log = LoggerFactory.getLogger( this.getClass() ); + + /** + * @plexus.requirement + */ + private DistributedBuildManager distributedBuildManager; + + public Boolean returnBuildResult( Map buildResult ) + throws Exception + { + log.info( "Build result returned." ); + distributedBuildManager.updateBuildResult( buildResult ); + return Boolean.TRUE; + } + + public Boolean returnScmResult( Map scmResult ) + throws Exception + { + log.info( "SCM result returned." ); + distributedBuildManager.updateScmResult( scmResult ); + return Boolean.TRUE; + } + + public Boolean ping() + throws Exception + { + log.info( "Ping ok" ); + + return Boolean.TRUE; + } + + // TODO: add prepareBuildFinished() method +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-server/pom.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-server/pom.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-server/pom.xml (revision 0) @@ -0,0 +1,51 @@ + + + + + org.apache.continuum + continuum-distributed-build-transport-master + 1.3.1-SNAPSHOT + + 4.0.0 + continuum-distributed-build-transport-master-server + Continuum :: Distributed Build :: Transport :: Master :: Server + + + + org.apache.continuum + continuum-distributed-build-transport-master-api + 1.3.1-SNAPSHOT + + + org.apache.continuum + continuum-api + + + org.apache.archiva + archiva-common + + + org.apache.archiva + archiva-repository-layer + + + + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-api/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportService.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-api/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportService.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-api/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportService.java (revision 0) @@ -0,0 +1,37 @@ +package org.apache.continuum.distributed.transport.master; + +import java.util.Map; + +import com.atlassian.xmlrpc.ServiceObject; + +/* + * 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. + */ + +/** + * MasterBuildAgentTransportService + */ +@ServiceObject( "MasterBuildAgentTransportService" ) +public interface MasterBuildAgentTransportService +{ + public Boolean returnBuildResult( Map buildResult ) throws Exception; + + public Boolean returnScmResult( Map scmResult ) throws Exception; + + public Boolean ping() throws Exception; +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-api/pom.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-api/pom.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-api/pom.xml (revision 0) @@ -0,0 +1,37 @@ + + + + + org.apache.continuum + continuum-distributed-build-transport-master + 1.3.1-SNAPSHOT + + 4.0.0 + continuum-distributed-build-transport-master-api + Continuum :: Distributed Build :: Transport :: Master :: API + + + + com.atlassian.xmlrpc + atlassian-xmlrpc-binder-server-spring + 0.8.2 + + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/pom.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/pom.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/pom.xml (revision 0) @@ -0,0 +1,35 @@ + + + + + continuum-distributed-build-transport + org.apache.continuum + 1.3.1-SNAPSHOT + + 4.0.0 + continuum-distributed-build-transport-master + Continuum :: Distributed Build :: Transport :: Master + pom + + continuum-distributed-build-transport-master-api + continuum-distributed-build-transport-master-server + continuum-distributed-build-transport-master-client + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-client/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportClient.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-client/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportClient.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-client/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportClient.java (revision 0) @@ -0,0 +1,122 @@ +package org.apache.continuum.distributed.transport.master; + +/* + * 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. + */ + +import java.net.URL; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.atlassian.xmlrpc.AuthenticationInfo; +import com.atlassian.xmlrpc.Binder; +import com.atlassian.xmlrpc.BindingException; +import com.atlassian.xmlrpc.DefaultBinder; + +/** + * MasterBuildAgentTransportClient + */ +public class MasterBuildAgentTransportClient + implements MasterBuildAgentTransportService +{ + private Logger log = LoggerFactory.getLogger( this.getClass() ); + + MasterBuildAgentTransportService master; + + public MasterBuildAgentTransportClient( URL serviceUrl ) + throws Exception + { + this( serviceUrl, null, null ); + } + + public MasterBuildAgentTransportClient( URL serviceUrl, String login, String password ) + throws Exception + { + Binder binder = new DefaultBinder(); + AuthenticationInfo authnInfo = new AuthenticationInfo( login, password ); + + try + { + master = binder.bind( MasterBuildAgentTransportService.class, serviceUrl, authnInfo ); + } + catch ( BindingException e ) + { + log.error( "Can't bind service interface " + MasterBuildAgentTransportService.class.getName() + " to " + serviceUrl.toExternalForm() + " using " + authnInfo.getUsername() + ", " + authnInfo.getPassword(), e ); + throw new Exception( "Can't bind service interface " + MasterBuildAgentTransportService.class.getName() + " to " + serviceUrl.toExternalForm() + " using " + authnInfo.getUsername() + ", " + authnInfo.getPassword(), e); + } + } + + public Boolean returnBuildResult( Map buildResult ) + throws Exception + { + Boolean result = null; + + try + { + result = master.returnBuildResult( buildResult ); + log.info( "Returning the build result." ); + } + catch ( Exception e ) + { + log.error( "Failed to return the build result.", e ); + throw new Exception( "Failed to return the build result", e); + } + + return result; + } + + public Boolean returnScmResult( Map scmResult ) + throws Exception + { + Boolean result = null; + + try + { + result = master.returnScmResult( scmResult ); + log.info( "Returning the scm result." ); + } + catch ( Exception e ) + { + log.error( "Failed to return the SCM result.", e ); + throw new Exception( "Failed to return the SCM result", e); + } + + return result; + } + + public Boolean ping() + throws Exception + { + Boolean result = null; + + try + { + result = master.ping(); + log.info( "Ping " + ( result.booleanValue() ? "ok" : "failed" ) ); + } + catch ( Exception e ) + { + log.info( "Ping error" ); + throw new Exception( "Ping error", e ); + } + + return result; + } +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-client/pom.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-client/pom.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-client/pom.xml (revision 0) @@ -0,0 +1,42 @@ + + + + + org.apache.continuum + continuum-distributed-build-transport-master + 1.3.1-SNAPSHOT + + 4.0.0 + continuum-distributed-build-transport-master-client + Continuum :: Distributed Build :: Transport :: Master :: Client + + + + org.apache.continuum + continuum-distributed-build-transport-master-api + 1.3.1-SNAPSHOT + + + com.atlassian.xmlrpc + atlassian-xmlrpc-binder + 0.8.2 + + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/test/it/org/apache/continuum/distributed/transport/tests/SlaveBuildAgentTransportServiceTest.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/test/it/org/apache/continuum/distributed/transport/tests/SlaveBuildAgentTransportServiceTest.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/test/it/org/apache/continuum/distributed/transport/tests/SlaveBuildAgentTransportServiceTest.java (revision 0) @@ -0,0 +1,122 @@ +package org.apache.continuum.distributed.transport.tests; + +/* + * 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. + */ + +import java.net.URL; +import java.util.Collections; + +import junit.framework.TestCase; + +import org.apache.continuum.distributed.transport.slave.SlaveBuildAgentTransportClient; +import org.apache.continuum.distributed.transport.slave.SlaveBuildAgentTransportService; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.xml.XmlBeanFactory; +import org.springframework.core.io.ClassPathResource; + +/** + * SlaveBuildAgentTransportServiceTest + */ +public class SlaveBuildAgentTransportServiceTest + extends TestCase +{ + private SlaveBuildAgentTransportService slaveProxy; + + private BeanFactory beanFactory = new XmlBeanFactory( new ClassPathResource( "applicationContext.xml" ) ); + + protected void setUp() + throws Exception + { + super.setUp(); + + slaveProxy = new SlaveBuildAgentTransportClient( new URL( "http://localhost:9191/slave-xmlrpc"), null , null ); + } + + public void testBuildProjects() + { + try + { + slaveProxy.buildProjects( Collections.EMPTY_LIST ); + } + catch ( Exception e ) + { + fail( e.getMessage() ); + } + } + + public void testGetAvailableInstallations() + { + try + { + slaveProxy.getAvailableInstallations(); + } + catch ( Exception e ) + { + fail( e.getMessage() ); + } + } + + public void testGetBuildResult() + { + try + { + slaveProxy.getBuildResult( 0 ); + } + catch ( Exception e ) + { + fail( e.getMessage() ); + } + } + + public void testGetProjectCurrentlyBuilding() + { + try + { + slaveProxy.getProjectCurrentlyBuilding(); + } + catch ( Exception e ) + { + fail( e.getMessage() ); + } + } + + public void testIsBusy() + { + try + { + slaveProxy.isBusy().booleanValue(); + } + catch ( Exception e ) + { + fail( e.getMessage() ); + } + } + + public void testPing() + { + try + { + slaveProxy.ping(); + } + catch ( Exception e ) + { + fail( e.getMessage() ); + } + } +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/test/it/org/apache/continuum/distributed/transport/tests/MasterBuildAgentTransportServiceTest.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/test/it/org/apache/continuum/distributed/transport/tests/MasterBuildAgentTransportServiceTest.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/test/it/org/apache/continuum/distributed/transport/tests/MasterBuildAgentTransportServiceTest.java (revision 0) @@ -0,0 +1,86 @@ +package org.apache.continuum.distributed.transport.tests; + +/* + * 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. + */ + +import java.net.URL; +import java.util.HashMap; + +import junit.framework.TestCase; + +import org.apache.continuum.distributed.transport.master.MasterBuildAgentTransportClient; +import org.apache.continuum.distributed.transport.master.MasterBuildAgentTransportService; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.xml.XmlBeanFactory; +import org.springframework.core.io.ClassPathResource; + +/** + * MasterBuildAgentTransportServiceTest + */ +public class MasterBuildAgentTransportServiceTest + extends TestCase +{ + private MasterBuildAgentTransportService masterProxy; + + private BeanFactory beanFactory = new XmlBeanFactory( new ClassPathResource( "applicationContext.xml" ) ); + + protected void setUp() + throws Exception + { + super.setUp(); + + masterProxy = new MasterBuildAgentTransportClient( new URL( "http://localhost:9191/master-xmlrpc"), null , null ); + } + + public void testReturnBuildResult() + { + try + { + masterProxy.returnBuildResult( new HashMap() ); + } + catch ( Exception e ) + { + fail( e.getMessage() ); + } + } + + public void testReturnScmResult() + { + try + { + masterProxy.returnScmResult( new HashMap() ); + } + catch ( Exception e ) + { + fail( e.getMessage() ); + } + } + + public void testPing() + { + try + { + masterProxy.ping(); + } + catch ( Exception e ) + { + fail( e.getMessage() ); + } + } +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/jetty-env.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/jetty-env.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/jetty-env.xml (revision 0) @@ -0,0 +1,23 @@ + + + + + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/resources/applicationContext.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/resources/applicationContext.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/resources/applicationContext.xml (revision 0) @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/resources/log4j.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/resources/log4j.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/resources/log4j.xml (revision 0) @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/webapp/index.jsp =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/webapp/index.jsp (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/webapp/index.jsp (revision 0) @@ -0,0 +1,5 @@ + + +

Hello World!

+ + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/webapp/WEB-INF/web.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/webapp/WEB-INF/web.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/webapp/WEB-INF/web.xml (revision 0) @@ -0,0 +1,61 @@ + + + + Continuum Distributed Build Transport Tests + + + org.springframework.web.context.ContextLoaderListener + + + + contextConfigLocation + + classpath*:/META-INF/spring-context.xml + classpath*:/applicationContext.xml + + + + + MasterXmlRpcServlet + + com.atlassian.xmlrpc.spring.BinderSpringXmlRpcServlet + + + serviceListBeanName + xmlrpcServicesList + + + enabledForExtensions + true + + 1 + + + + SlaveXmlRpcServlet + + com.atlassian.xmlrpc.spring.BinderSpringXmlRpcServlet + + + serviceListBeanName + xmlrpcServicesList + + + enabledForExtensions + true + + 1 + + + + MasterXmlRpcServlet + /master-xmlrpc + + + + SlaveXmlRpcServlet + /slave-xmlrpc + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/pom.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/pom.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/pom.xml (revision 0) @@ -0,0 +1,123 @@ + + + + + continuum-distributed-build-transport + org.apache.continuum + 1.3.1-SNAPSHOT + + 4.0.0 + org.apache.continuum + continuum-distributed-build-transport-tests + war + Continuum :: Distributed Build :: Transport :: Tests + http://continuum.apache.org + + + org.apache.continuum + continuum-distributed-build-transport-slave-server + 1.3.1-SNAPSHOT + + + org.apache.continuum + continuum-distributed-build-transport-slave-client + 1.3.1-SNAPSHOT + + + org.apache.continuum + continuum-distributed-build-transport-master-server + 1.3.1-SNAPSHOT + + + org.apache.continuum + continuum-distributed-build-transport-master-client + 1.3.1-SNAPSHOT + + + org.springframework + spring-web + 2.5.4 + + + + + src/test/it + + + org.mortbay.jetty + maven-jetty-plugin + 6.1.11 + + 10 + / + stopkey + 9192 + ${basedir}/src/jetty-env.xml + + + 9191 + 60000 + + + + + + start-jetty + pre-integration-test + + run + + + 0 + true + + + + stop-jetty + post-integration-test + + stop + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.4.3 + + true + + + + integration-tests + integration-test + + test + + + false + + + + + + + Index: continuum-distributed-build/continuum-distributed-build-transport/pom.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/pom.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/pom.xml (revision 0) @@ -0,0 +1,63 @@ + + + + continuum-distributed-build + org.apache.continuum + 1.3.1-SNAPSHOT + + 4.0.0 + continuum-distributed-build-transport + Continuum :: Distributed Build :: Transport + pom + + continuum-distributed-build-transport-master + continuum-distributed-build-transport-slave + continuum-distributed-build-transport-tests + + + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-log4j12 + 1.5.0 + + + junit + junit + 3.8.1 + test + + + easymock + easymock + 1.2_Java1.3 + test + + + easymock + easymockclassextension + 1.2 + test + + + Index: continuum-distributed-build/pom.xml =================================================================== --- continuum-distributed-build/pom.xml (revision 726982) +++ continuum-distributed-build/pom.xml (working copy) @@ -31,5 +31,6 @@ Continuum :: Distributed Build continuum-buildagent + continuum-distributed-build-transport