Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/src/main/java/org/apache/continuum/distributed/transport/slave/ProxyMasterAgentTransportService.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/src/main/java/org/apache/continuum/distributed/transport/slave/ProxyMasterAgentTransportService.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/src/main/java/org/apache/continuum/distributed/transport/slave/ProxyMasterAgentTransportService.java (revision 0) @@ -0,0 +1,93 @@ +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.Map; + +import org.apache.continuum.distributed.transport.MasterBuildAgentTransportService; +import org.apache.xmlrpc.client.XmlRpcClient; +import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; +import org.apache.xmlrpc.client.util.ClientFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * ProxyMasterAgentTransportService + */ +public class ProxyMasterAgentTransportService + implements MasterBuildAgentTransportService +{ + private Logger log = LoggerFactory.getLogger( this.getClass() ); + + MasterBuildAgentTransportService master; + + public ProxyMasterAgentTransportService( URL serviceUrl ) + { + this( serviceUrl, null, null ); + } + + public ProxyMasterAgentTransportService( URL serviceUrl, String login, String password ) + { + XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl() + { + public boolean isEnabledForExtensions() + { + return true; + } + }; + + if ( login != null && !"".equals( login ) ) + { + config.setBasicUserName( login ); + config.setBasicPassword( password ); + } + config.setServerURL( serviceUrl ); + + XmlRpcClient client = new XmlRpcClient(); + client.setConfig( config ); + ClientFactory factory = new ClientFactory( client ); + master = (MasterBuildAgentTransportService) factory.newInstance( MasterBuildAgentTransportService.class ); + } + + public void returnBuildResult( Map buildResult ) + throws Exception + { + master.returnBuildResult( buildResult ); + log.info( "Returning the build result." ); + } + + public void returnScmResult( Map scmResult ) + throws Exception + { + master.returnScmResult( scmResult ); + log.info( "Returning the scm result." ); + } + + public boolean ping() + throws Exception + { + boolean result = master.ping(); + + log.info( "Ping " + (result ? "ok" : "failed") ); + + return result; + } +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/src/main/java/org/apache/continuum/distributed/transport/slave/DefaultSlaveBuildAgentTransportService.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/src/main/java/org/apache/continuum/distributed/transport/slave/DefaultSlaveBuildAgentTransportService.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/src/main/java/org/apache/continuum/distributed/transport/slave/DefaultSlaveBuildAgentTransportService.java (revision 0) @@ -0,0 +1,134 @@ +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.SlaveBuildAgentTransportService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * ProxyMasterBuildAgentTransportService + */ +public class DefaultSlaveBuildAgentTransportService + implements SlaveBuildAgentTransportService +{ + private Logger log = LoggerFactory.getLogger( this.getClass() ); + + private ContinuumBuildAgentService buildAgentService; + + public DefaultSlaveBuildAgentTransportService() + { + log.info( "asdfasdfasdfasdf" ); + } + + public void buildProjects( List projectsBuildContext ) + throws Exception + { + try + { + buildAgentService.buildProjects( projectsBuildContext ); + log.info( "Building projects." ); + } + catch ( ContinuumBuildAgentException e ) + { + log.error( "Failed to build projects.", e ); + } + } + + public List getAvailableInstallations() + throws Exception + { + List installations = null; + + try + { + installations = buildAgentService.getAvailableInstallations(); + log.info( "Available installations: " + installations.size() ); + } + catch ( ContinuumBuildAgentException e ) + { + log.error( "Failed to get available installations.", e ); + } + + return installations; + } + + public Map getBuildResult( int projectId ) + throws Exception + { + Map buildResult = null; + + try + { + buildAgentService.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 int getProjectCurrentlyBuilding() + throws Exception + { + int projectId = buildAgentService.getProjectCurrentlyBuilding(); + + log.info( "Currently building project " + projectId ); + + return projectId; + } + + public boolean isBusy() + throws Exception + { + boolean busy = buildAgentService.isBusy(); + + log.info( "Build agent is " + ( busy ? "" : "not" ) + " busy." ); + + return busy; + } + + public boolean ping() + throws Exception + { + log.info( "Ping ok" ); + + return true; + } + + public ContinuumBuildAgentService getBuildAgentService() + { + return buildAgentService; + } + + public void setBuildAgentService( ContinuumBuildAgentService buildAgentService ) + { + this.buildAgentService = buildAgentService; + } +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/src/main/resources/org/apache/xmlrpc/webserver/XmlRpcServlet.properties =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/src/main/resources/org/apache/xmlrpc/webserver/XmlRpcServlet.properties (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/src/main/resources/org/apache/xmlrpc/webserver/XmlRpcServlet.properties (revision 0) @@ -0,0 +1 @@ +SlaveBuildAgentTransportService=org.apache.continuum.distributed.transport.slave.DefaultSlaveBuildAgentTransportService 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,37 @@ + + + + + org.apache.continuum + continuum-distributed-build-transport + 1.3-SNAPSHOT + + 4.0.0 + continuum-distributed-build-transport-slave + Continuum :: Distributed Build :: Transport :: Slave + + + + org.apache.continuum + continuum-distributed-build-transport-common + 1.3-SNAPSHOT + + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/src/main/java/org/apache/continuum/distributed/transport/master/ProxySlaveAgentTransportService.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/src/main/java/org/apache/continuum/distributed/transport/master/ProxySlaveAgentTransportService.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/src/main/java/org/apache/continuum/distributed/transport/master/ProxySlaveAgentTransportService.java (revision 0) @@ -0,0 +1,156 @@ +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.List; +import java.util.Map; + +import org.apache.continuum.buildagent.model.Installation; +import org.apache.continuum.distributed.transport.SlaveBuildAgentTransportService; +import org.apache.xmlrpc.client.XmlRpcClient; +import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; +import org.apache.xmlrpc.client.util.ClientFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * ProxySlaveAgentTransportService + */ +public class ProxySlaveAgentTransportService + implements SlaveBuildAgentTransportService +{ + private Logger log = LoggerFactory.getLogger( this.getClass() ); + + private SlaveBuildAgentTransportService slave; + + private XmlRpcClient client; + + public ProxySlaveAgentTransportService( URL serviceUrl ) + { + this( serviceUrl, null, null ); + } + + public ProxySlaveAgentTransportService( URL serviceUrl, String login, String password ) + { + XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl() + { + public boolean isEnabledForExtensions() + { + return true; + } + }; + + if ( login != null && !"".equals( login ) ) + { + config.setBasicUserName( login ); + config.setBasicPassword( password ); + } + config.setServerURL( serviceUrl ); + + client = new XmlRpcClient(); + client.setConfig( config ); + ClientFactory factory = new ClientFactory( client ); + slave = (SlaveBuildAgentTransportService) factory.newInstance( SlaveBuildAgentTransportService.class ); + } + + public void buildProjects( List projectsBuildContext ) + throws Exception + { + try + { + 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 ); + } + } + + 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 + { + 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 int getProjectCurrentlyBuilding() + throws Exception + { + int projectId = slave.getProjectCurrentlyBuilding(); + + log.info( "Currently building project " + projectId ); + + return projectId; + } + + public boolean isBusy() + throws Exception + { + boolean busy = slave.isBusy(); + + log.info( "Build agent is " + ( busy ? "" : "not" ) + " busy." ); + + return busy; + } + + public boolean ping() + throws Exception + { + boolean result = slave.ping(); + + log.info( "Ping " + (result ? "ok" : "failed") ); + + return result; + } +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/src/main/java/org/apache/continuum/distributed/transport/master/DefaultMasterBuildAgentTransportService.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/src/main/java/org/apache/continuum/distributed/transport/master/DefaultMasterBuildAgentTransportService.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/src/main/java/org/apache/continuum/distributed/transport/master/DefaultMasterBuildAgentTransportService.java (revision 0) @@ -0,0 +1,55 @@ +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.distributed.transport.MasterBuildAgentTransportService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * DefaultMasterBuildAgentTransportService + */ +public class DefaultMasterBuildAgentTransportService + implements MasterBuildAgentTransportService +{ + private Logger log = LoggerFactory.getLogger( this.getClass() ); + + public void returnBuildResult( Map buildResult ) + throws Exception + { + log.info( "Build result returned." ); + } + + public void returnScmResult( Map scmResult ) + throws Exception + { + log.info( "SCM result returned." ); + } + + public boolean ping() + throws Exception + { + log.info( "Ping" ); + + return true; + } +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/src/main/resources/org/apache/xmlrpc/webserver/XmlRpcServlet.properties =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/src/main/resources/org/apache/xmlrpc/webserver/XmlRpcServlet.properties (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/src/main/resources/org/apache/xmlrpc/webserver/XmlRpcServlet.properties (revision 0) @@ -0,0 +1 @@ +MasterBuildAgentTransportService=org.apache.continuum.distributed.transport.master.DefaultMasterBuildAgentTransportService 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,62 @@ + + + + + org.apache.continuum + continuum-distributed-build-transport + 1.3-SNAPSHOT + + 4.0.0 + continuum-distributed-build-transport-master + Continuum :: Distributed Build :: Transport :: Master + + + + org.apache.continuum + continuum-distributed-build-transport-common + 1.3-SNAPSHOT + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.1 + + + + exec + + + + + java + org.apache.continuum.distributed.transport.master.SampleClient + + http://localhost:9191/xmlrpc + login + password + + + + + + 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,54 @@ + + + + continuum-distributed-build + org.apache.continuum + 1.3-SNAPSHOT + + 4.0.0 + continuum-distributed-build-transport + Continuum :: Distributed Build :: Transport + pom + + continuum-distributed-build-transport-common + continuum-distributed-build-transport-master + continuum-distributed-build-transport-slave + + + + junit + junit + 3.8.1 + test + + + easymock + easymock + 1.2_Java1.3 + test + + + easymock + easymockclassextension + 1.2 + test + + + Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-common/src/main/java/org/apache/continuum/distributed/transport/SlaveBuildAgentTransportService.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-common/src/main/java/org/apache/continuum/distributed/transport/SlaveBuildAgentTransportService.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-common/src/main/java/org/apache/continuum/distributed/transport/SlaveBuildAgentTransportService.java (revision 0) @@ -0,0 +1,43 @@ +package org.apache.continuum.distributed.transport; + +import java.util.List; +import java.util.Map; + +import org.apache.continuum.buildagent.model.Installation; + +/* + * 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 + */ +public interface SlaveBuildAgentTransportService +{ + void buildProjects( List projectsBuildContext ) throws Exception; + + Map getBuildResult( int projectId ) throws Exception; + + int getProjectCurrentlyBuilding() throws Exception; + + List getAvailableInstallations() throws Exception; + + boolean isBusy() throws Exception; + + boolean ping() throws Exception; +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-common/src/main/java/org/apache/continuum/distributed/transport/MasterBuildAgentTransportService.java =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-common/src/main/java/org/apache/continuum/distributed/transport/MasterBuildAgentTransportService.java (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-common/src/main/java/org/apache/continuum/distributed/transport/MasterBuildAgentTransportService.java (revision 0) @@ -0,0 +1,34 @@ +package org.apache.continuum.distributed.transport; + +import java.util.Map; + +/* + * 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 + */ +public interface MasterBuildAgentTransportService +{ + void returnBuildResult( Map buildResult ) throws Exception; + + void returnScmResult( Map scmResult ) throws Exception; + + boolean ping() throws Exception; +} Index: continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-common/pom.xml =================================================================== --- continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-common/pom.xml (revision 0) +++ continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-common/pom.xml (revision 0) @@ -0,0 +1,61 @@ + + + + + org.apache.continuum + continuum-distributed-build-transport + 1.3-SNAPSHOT + + 4.0.0 + continuum-distributed-build-transport-common + Continuum :: Distributed Build :: Transport :: Common + + + + org.apache.xmlrpc + xmlrpc-common + 3.0 + + + org.apache.xmlrpc + xmlrpc-server + 3.0 + + + org.apache.xmlrpc + xmlrpc-client + 3.0 + + + org.apache.continuum + continuum-buildagent + 1.3-SNAPSHOT + + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-log4j12 + 1.5.0 + + +