You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ad...@apache.org on 2014/10/05 01:14:12 UTC

[2/2] git commit: Remove jenkins, which hasn't been published in over a year.

Remove jenkins, which hasn't been published in over a year.


Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/ac22366f
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/ac22366f
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/ac22366f

Branch: refs/heads/master
Commit: ac22366f929834adea83dfca445aa77cf5f77c05
Parents: 3020b95
Author: Adrian Cole <ac...@twitter.com>
Authored: Sat Oct 4 12:24:47 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Sat Oct 4 16:14:01 2014 -0700

----------------------------------------------------------------------
 jenkins/pom.xml                                 | 108 -------
 .../java/org/jclouds/jenkins/v1/JenkinsApi.java |  48 ----
 .../jclouds/jenkins/v1/JenkinsApiMetadata.java  |  87 ------
 .../org/jclouds/jenkins/v1/JenkinsAsyncApi.java |  67 -----
 .../jclouds/jenkins/v1/JenkinsFallbacks.java    |  50 ----
 .../v1/binders/BindMapToOptionalParams.java     |  42 ---
 .../jenkins/v1/config/JenkinsProperties.java    |  24 --
 .../v1/config/JenkinsRestClientModule.java      |  58 ----
 .../org/jclouds/jenkins/v1/domain/Computer.java | 150 ----------
 .../jclouds/jenkins/v1/domain/ComputerView.java | 184 ------------
 .../java/org/jclouds/jenkins/v1/domain/Job.java | 154 ----------
 .../jclouds/jenkins/v1/domain/JobDetails.java   |  56 ----
 .../jclouds/jenkins/v1/domain/LastBuild.java    | 286 -------------------
 .../org/jclouds/jenkins/v1/domain/Node.java     | 163 -----------
 .../jenkins/v1/features/ComputerApi.java        |  42 ---
 .../jenkins/v1/features/ComputerAsyncApi.java   |  65 -----
 .../org/jclouds/jenkins/v1/features/JobApi.java |  58 ----
 .../jenkins/v1/features/JobAsyncApi.java        | 118 --------
 .../BasicAuthenticationUnlessAnonymous.java     |  52 ----
 .../v1/handlers/JenkinsErrorHandler.java        |  61 ----
 .../services/org.jclouds.apis.ApiMetadata       |   1 -
 .../jenkins/v1/JenkinsApiExpectTest.java        |  46 ---
 .../jclouds/jenkins/v1/JenkinsApiLiveTest.java  |  35 ---
 .../jenkins/v1/JenkinsApiMetadataTest.java      |  31 --
 .../jenkins/v1/JenkinsErrorHandlerTest.java     |  89 ------
 .../v1/features/ComputerApiExpectTest.java      |  65 -----
 .../v1/features/ComputerApiLiveTest.java        |  46 ---
 .../jenkins/v1/features/JobApiExpectTest.java   | 160 -----------
 .../jenkins/v1/features/JobApiLiveTest.java     | 104 -------
 ...AuthenticationUnlessAnonymousExpectTest.java |  51 ----
 .../v1/internal/BaseJenkinsApiExpectTest.java   |  26 --
 .../v1/internal/BaseJenkinsApiLiveTest.java     |  53 ----
 .../internal/BaseJenkinsAsyncApiExpectTest.java |  35 ---
 .../v1/internal/BaseJenkinsExpectTest.java      |  28 --
 .../jclouds/jenkins/v1/parse/LastBuildTest.java |  51 ----
 .../jenkins/v1/parse/ParseComputerTest.java     |  43 ---
 .../jenkins/v1/parse/ParseComputerViewTest.java |  58 ----
 .../jenkins/v1/parse/ParseJobDetailsTest.java   |  44 ---
 .../jclouds/jenkins/v1/parse/ParseNodeTest.java |  49 ----
 jenkins/src/test/resources/computer.json        |  37 ---
 jenkins/src/test/resources/computerview.json    | 114 --------
 jenkins/src/test/resources/job.json             |  29 --
 jenkins/src/test/resources/lastBuild.json       | 127 --------
 jenkins/src/test/resources/logback.xml          |  38 ---
 jenkins/src/test/resources/master.json          |  26 --
 jenkins/src/test/resources/sample_job.xml       |  21 --
 .../resources/sample_job_with_parameters.xml    |  37 ---
 47 files changed, 3317 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/pom.xml
----------------------------------------------------------------------
diff --git a/jenkins/pom.xml b/jenkins/pom.xml
deleted file mode 100644
index feca0b8..0000000
--- a/jenkins/pom.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.jclouds.labs</groupId>
-    <artifactId>jclouds-labs</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
-  </parent>
-
-  <!-- TODO: when out of labs, switch to org.jclouds.api -->
-  <groupId>org.apache.jclouds.labs</groupId>
-  <artifactId>jenkins</artifactId>
-  <name>jclouds jenkins api</name>
-  <description>jclouds components to access an implementation of Jenkins</description>
-  <packaging>bundle</packaging>
-
-  <properties>
-    <test.jenkins.endpoint>http://localhost:8080</test.jenkins.endpoint>
-    <test.jenkins.api-version>1.0</test.jenkins.api-version>
-    <test.jenkins.build-version>1.460</test.jenkins.build-version>
-    <test.jenkins.identity>ANONYMOUS</test.jenkins.identity>
-    <test.jenkins.credential>ANONYMOUS</test.jenkins.credential>
-
-    <jclouds.osgi.export>org.jclouds.jenkins.v1*;version="${project.version}"</jclouds.osgi.export>
-    <jclouds.osgi.import>
-      org.jclouds.rest.internal;version="${project.version}",
-      org.jclouds*;version="${project.version}",
-      *
-    </jclouds.osgi.import>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.jclouds</groupId>
-      <artifactId>jclouds-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds</groupId>
-      <artifactId>jclouds-core</artifactId>
-      <version>${project.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds.driver</groupId>
-      <artifactId>jclouds-slf4j</artifactId>
-      <version>${project.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-classic</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-  
-  <profiles>
-    <profile>
-      <id>live</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>integration</id>
-                <phase>integration-test</phase>
-                <goals>
-                  <goal>test</goal>
-                </goals>
-                <configuration>
-                  <systemPropertyVariables>
-                    <test.jenkins.endpoint>${test.jenkins.endpoint}</test.jenkins.endpoint>
-                    <test.jenkins.api-version>${test.jenkins.api-version}</test.jenkins.api-version>
-                    <test.jenkins.build-version>${test.jenkins.build-version}</test.jenkins.build-version>
-                    <test.jenkins.identity>${test.jenkins.identity}</test.jenkins.identity>
-                    <test.jenkins.credential>${test.jenkins.credential}</test.jenkins.credential>
-                  </systemPropertyVariables>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-
-</project>

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsApi.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsApi.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsApi.java
deleted file mode 100644
index 7106129..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsApi.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1;
-
-import org.jclouds.jenkins.v1.domain.Node;
-import org.jclouds.jenkins.v1.features.ComputerApi;
-import org.jclouds.jenkins.v1.features.JobApi;
-import org.jclouds.rest.annotations.Delegate;
-
-/**
- * Provides synchronous access to Jenkins.
- * <p/>
- * 
- * @see JenkinsAsyncApi
- * @see <a href="https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API">api doc</a>
- */
-public interface JenkinsApi {
-   /**
-    * @return the master computer
-    */
-   Node getMaster();
-   
-   /**
-    * Provides synchronous access to Computer features.
-    */
-   @Delegate
-   ComputerApi getComputerApi();
-   
-   /**
-    * Provides synchronous access to Job features.
-    */
-   @Delegate
-   JobApi getJobApi();
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsApiMetadata.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsApiMetadata.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsApiMetadata.java
deleted file mode 100644
index 1b8159f..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsApiMetadata.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1;
-
-import java.net.URI;
-import java.util.Properties;
-
-import org.jclouds.apis.ApiMetadata;
-import org.jclouds.jenkins.v1.config.JenkinsRestClientModule;
-import org.jclouds.rest.RestContext;
-import org.jclouds.rest.internal.BaseRestApiMetadata;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.reflect.TypeToken;
-import com.google.inject.Module;
-
-/**
- * Implementation of {@link ApiMetadata} for Jenkins 1.0 API
- */
-public class JenkinsApiMetadata extends BaseRestApiMetadata {
-   
-   public static final String ANONYMOUS_IDENTITY = "ANONYMOUS";
-
-   public static final TypeToken<RestContext<JenkinsApi, JenkinsAsyncApi>> CONTEXT_TOKEN = new TypeToken<RestContext<JenkinsApi, JenkinsAsyncApi>>() {
-      private static final long serialVersionUID = 1L;
-   };
-
-   @Override
-   public Builder toBuilder() {
-      return new Builder().fromApiMetadata(this);
-   }
-
-   public JenkinsApiMetadata() {
-      this(new Builder());
-   }
-
-   protected JenkinsApiMetadata(Builder builder) {
-      super(builder);
-   }
-
-   public static Properties defaultProperties() {
-      Properties properties = BaseRestApiMetadata.defaultProperties();
-      return properties;
-   }
-
-   public static class Builder extends BaseRestApiMetadata.Builder<Builder> {
-
-      protected Builder() {
-         super(JenkinsApi.class, JenkinsAsyncApi.class);
-          id("jenkins")
-         .name("Jenkins API")
-         .identityName("Username (or " + ANONYMOUS_IDENTITY + " if anonymous)")
-         .defaultIdentity(ANONYMOUS_IDENTITY)
-         .credentialName("Password")
-         .defaultCredential(ANONYMOUS_IDENTITY)
-         .documentation(URI.create("https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API"))
-         .version("1.0")
-         .defaultEndpoint("http://localhost:8080")
-         .defaultProperties(JenkinsApiMetadata.defaultProperties())
-         .defaultModules(ImmutableSet.<Class<? extends Module>>of(JenkinsRestClientModule.class));
-      }
-      
-      @Override
-      public JenkinsApiMetadata build() {
-         return new JenkinsApiMetadata(this);
-      }
-
-      @Override
-      protected Builder self() {
-         return this;
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsAsyncApi.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsAsyncApi.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsAsyncApi.java
deleted file mode 100644
index 3cada12..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsAsyncApi.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.jenkins.v1.domain.Node;
-import org.jclouds.jenkins.v1.features.ComputerAsyncApi;
-import org.jclouds.jenkins.v1.features.JobAsyncApi;
-import org.jclouds.jenkins.v1.filters.BasicAuthenticationUnlessAnonymous;
-import org.jclouds.rest.annotations.Delegate;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.RequestFilters;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Provides asynchronous access to Jenkins via their REST API.
- * <p/>
- * 
- * @see JenkinsApi
- * @see <a href="https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API">api doc</a>
- */
-@RequestFilters(BasicAuthenticationUnlessAnonymous.class)
-public interface JenkinsAsyncApi {
-   
-   /**
-    * @see JenkinsApi#getMaster
-    */
-   @Named("GetMaster")
-   @GET
-   @Path("/api/json")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<Node> getMaster();
-   
-   /**
-    * Provides asynchronous access to Computer features.
-    */
-   @Delegate
-   ComputerAsyncApi getComputerApi();
-   
-   /**
-    * Provides asynchronous access to Job features.
-    */
-   @Delegate
-   JobAsyncApi getJobApi();
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsFallbacks.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsFallbacks.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsFallbacks.java
deleted file mode 100644
index f6f8e60..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/JenkinsFallbacks.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Predicates.equalTo;
-import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
-import static org.jclouds.http.HttpUtils.returnValueOnCodeOrNull;
-
-import org.jclouds.Fallback;
-
-import com.google.common.base.Predicates;
-import com.google.common.util.concurrent.ListenableFuture;
-
-public final class JenkinsFallbacks {
-   private JenkinsFallbacks() {
-   }
-
-   public static final class VoidOn302Or404 implements Fallback<Void> {
-      @Override
-      public ListenableFuture<Void> create(Throwable t) throws Exception {
-         return immediateFuture(createOrPropagate(t));
-      }
-
-      @Override
-      public Void createOrPropagate(Throwable t) throws Exception {
-         Boolean returnVal = returnValueOnCodeOrNull(checkNotNull(t, "throwable"), true,
-               Predicates.<Integer> or(equalTo(302), equalTo(404)));
-         if (returnVal != null && returnVal)
-            return null;
-         throw propagate(t);
-      }
-
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/binders/BindMapToOptionalParams.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/binders/BindMapToOptionalParams.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/binders/BindMapToOptionalParams.java
deleted file mode 100644
index 51e631f..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/binders/BindMapToOptionalParams.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.binders;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.Binder;
-
-import com.google.common.collect.Multimaps;
-
-/**
- * Binds the map to parameters.
- */
-public class BindMapToOptionalParams implements Binder {
-
-   @SuppressWarnings("unchecked")
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      checkArgument(checkNotNull(input, "input") instanceof Map, "this binder is only valid for Maps!");
-      Map<String, String> map = (Map<String, String>) input;
-      return (R) request.toBuilder().replaceQueryParams(Multimaps.forMap(map)).build();
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/config/JenkinsProperties.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/config/JenkinsProperties.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/config/JenkinsProperties.java
deleted file mode 100644
index 99fb02f..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/config/JenkinsProperties.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.config;
-
-/**
- * Configuration properties and constants used in Jenkins connections.
- */
-public class JenkinsProperties {
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/config/JenkinsRestClientModule.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/config/JenkinsRestClientModule.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/config/JenkinsRestClientModule.java
deleted file mode 100644
index e1f76c4..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/config/JenkinsRestClientModule.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.config;
-
-import java.util.Map;
-
-import org.jclouds.http.HttpErrorHandler;
-import org.jclouds.http.annotation.ClientError;
-import org.jclouds.http.annotation.Redirection;
-import org.jclouds.http.annotation.ServerError;
-import org.jclouds.jenkins.v1.JenkinsAsyncApi;
-import org.jclouds.jenkins.v1.JenkinsApi;
-import org.jclouds.jenkins.v1.features.ComputerAsyncApi;
-import org.jclouds.jenkins.v1.features.ComputerApi;
-import org.jclouds.jenkins.v1.features.JobAsyncApi;
-import org.jclouds.jenkins.v1.features.JobApi;
-import org.jclouds.jenkins.v1.handlers.JenkinsErrorHandler;
-import org.jclouds.rest.ConfiguresRestClient;
-import org.jclouds.rest.config.RestClientModule;
-
-import com.google.common.collect.ImmutableMap;
-
-/**
- * Configures the Jenkins connection.
- */
-@ConfiguresRestClient
-public class JenkinsRestClientModule extends RestClientModule<JenkinsApi, JenkinsAsyncApi> {
-
-   public static final Map<Class<?>, Class<?>> DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>> builder()
-         .put(ComputerApi.class, ComputerAsyncApi.class)
-         .put(JobApi.class, JobAsyncApi.class)
-         .build();
-
-   public JenkinsRestClientModule() {
-      super(DELEGATE_MAP);
-   }
-   
-   @Override
-   protected void bindErrorHandlers() {
-      bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(JenkinsErrorHandler.class);
-      bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(JenkinsErrorHandler.class);
-      bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(JenkinsErrorHandler.class);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/Computer.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/Computer.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/Computer.java
deleted file mode 100644
index 66dd922..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/Computer.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.domain;
-
-import static com.google.common.base.Objects.equal;
-import static com.google.common.base.Objects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import com.google.common.base.Objects;
-
-/**
- * @see <a
- *      href="http://ci.jruby.org/computer/api/">api
- *      doc</a>
- */
-public class Computer implements Comparable<Computer> {
-
-   public static Builder builder() {
-      return new Builder();
-   }
-
-   public Builder toBuilder() {
-      return builder().fromComputerMetadata(this);
-   }
-
-   public static class Builder {
-      protected String displayName;
-      protected boolean idle;
-      protected boolean offline;
-
-      /**
-       * @see Computer#getDisplayName()
-       */
-      public Builder displayName(String displayName) {
-         this.displayName = checkNotNull(displayName, "displayName");
-         return this;
-      }
-
-      /**
-       * @see Computer#isIdle()
-       */
-      public Builder idle(boolean idle) {
-         this.idle = idle;
-         return this;
-      }
-
-      /**
-       * @see Computer#isOffline()
-       */
-      public Builder offline(boolean offline) {
-         this.offline = offline;
-         return this;
-      }
-
-      public Computer build() {
-         return new Computer(displayName, idle, offline);
-      }
-
-      public Builder fromComputerMetadata(Computer from) {
-         return displayName(from.getDisplayName()).idle(from.isIdle()).offline(from.isOffline());
-      }
-   }
-
-   protected final String displayName;
-   protected final boolean idle;
-   protected final boolean offline;
-
-   public Computer(String displayName, boolean idle, boolean offline) {
-      this.displayName = checkNotNull(displayName, "displayName");
-      this.idle = idle;
-      this.offline = offline;
-   }
-
-   /**
-    * 
-    * @return the displayName of the computer
-    */
-   public String getDisplayName() {
-      return displayName;
-   }
-
-   /**
-    * 
-    * @return the number of objects in the computer
-    */
-   public boolean isIdle() {
-      return idle;
-   }
-
-   /**
-    * @return the total offline stored in this computer
-    */
-   public boolean isOffline() {
-      return offline;
-   }
-
-   @Override
-   public boolean equals(Object object) {
-      if (this == object) {
-         return true;
-      }
-      if (object instanceof Computer) {
-         final Computer other = Computer.class.cast(object);
-         return equal(getDisplayName(), other.getDisplayName()) && equal(isIdle(), other.isIdle())
-                  && equal(isOffline(), other.isOffline());
-      } else {
-         return false;
-      }
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(getDisplayName(), isIdle(), isOffline());
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   protected ToStringHelper string() {
-      return toStringHelper("").add("displayName", getDisplayName()).add("idle", isIdle()).add("offline", isOffline());
-   }
-
-   @Override
-   public int compareTo(Computer that) {
-      if (that == null)
-         return 1;
-      if (this == that)
-         return 0;
-      return this.getDisplayName().compareTo(that.getDisplayName());
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/ComputerView.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/ComputerView.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/ComputerView.java
deleted file mode 100644
index 81ff411..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/ComputerView.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.domain;
-
-import static com.google.common.base.Objects.equal;
-import static com.google.common.base.Objects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Set;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
-import com.google.gson.annotations.SerializedName;
-
-/**
- * @see <a
- *      href="http://ci.jruby.org/computer/api/">api
- *      doc</a>
- */
-public class ComputerView implements Comparable<ComputerView> {
-
-   public static Builder builder() {
-      return new Builder();
-   }
-
-   public Builder toBuilder() {
-      return builder().fromComputerMetadata(this);
-   }
-
-   public static class Builder {
-      protected String displayName;
-      protected int busyExecutors;
-      protected int totalExecutors;
-      protected Set<Computer> computers = ImmutableSet.of();
-
-      /**
-       * @see ComputerView#getDisplayName()
-       */
-      public Builder displayName(String displayName) {
-         this.displayName = checkNotNull(displayName, "displayName");
-         return this;
-      }
-
-      /**
-       * @see ComputerView#getBusyExecutors()
-       */
-      public Builder busyExecutors(int busyExecutors) {
-         this.busyExecutors = busyExecutors;
-         return this;
-      }
-
-      /**
-       * @see ComputerView#getTotalExecutors()
-       */
-      public Builder totalExecutors(int totalExecutors) {
-         this.totalExecutors = totalExecutors;
-         return this;
-      }
-      
-      /**
-       * @see ComputerView#getLinks()
-       */
-      public Builder computers(Computer... computers) {
-         return computers(ImmutableSet.copyOf(checkNotNull(computers, "computers")));
-      }
-
-      /**
-       * @see ComputerView#getLinks()
-       */
-      public Builder computers(Set<Computer> computers) {
-         this.computers = ImmutableSet.copyOf(checkNotNull(computers, "computers"));
-         return this;
-      }
-      
-      public ComputerView build() {
-         return new ComputerView(displayName, busyExecutors, totalExecutors, computers);
-      }
-
-      public Builder fromComputerMetadata(ComputerView from) {
-         return displayName(from.getDisplayName()).busyExecutors(from.getBusyExecutors()).totalExecutors(from.getTotalExecutors()).computers(from.getComputers());
-      }
-   }
-
-   protected final String displayName;
-   protected final int busyExecutors;
-   protected final int totalExecutors;
-   @SerializedName("computer")
-   protected final Set<Computer> computers;
-
-   public ComputerView(String displayName, int busyExecutors, int totalExecutors, Set<Computer> computers) {
-      this.displayName = checkNotNull(displayName, "displayName");
-      this.busyExecutors = busyExecutors;
-      this.totalExecutors = totalExecutors;
-      this.computers = ImmutableSet.copyOf(checkNotNull(computers, "computers"));
-   }
-
-   /**
-    * 
-    * @return the displayName of the computer
-    */
-   public String getDisplayName() {
-      return displayName;
-   }
-
-   /**
-    * 
-    * @return the number of objects in the computer
-    */
-   public int getBusyExecutors() {
-      return busyExecutors;
-   }
-
-   /**
-    * @return the total totalExecutors stored in this computer
-    */
-   public int getTotalExecutors() {
-      return totalExecutors;
-   }
-   
-   /**
-    * @return the computers in this set
-    */
-   //TODO: create type adapter for gson that understands ForwardingSet so that we can implement the Set interface
-   public Set<Computer> getComputers() {
-      return computers;
-   }
-   
-   @Override
-   public boolean equals(Object object) {
-      if (this == object) {
-         return true;
-      }
-      if (object instanceof ComputerView) {
-         final ComputerView other = ComputerView.class.cast(object);
-         return equal(getDisplayName(), other.getDisplayName()) && equal(getBusyExecutors(), other.getBusyExecutors())
-                  && equal(getTotalExecutors(), other.getTotalExecutors()) && equal(getComputers(), other.getComputers());
-      } else {
-         return false;
-      }
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(getDisplayName(), getBusyExecutors(), getTotalExecutors(), getComputers());
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   protected ToStringHelper string() {
-      return toStringHelper("").add("displayName", getDisplayName()).add("busyExecutors", getBusyExecutors()).add(
-               "totalExecutors", getTotalExecutors()).add("computers", getComputers());
-   }
-
-   @Override
-   public int compareTo(ComputerView that) {
-      if (that == null)
-         return 1;
-      if (this == that)
-         return 0;
-      return this.getDisplayName().compareTo(that.getDisplayName());
-   }
-
-
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/Job.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/Job.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/Job.java
deleted file mode 100644
index d7ef342..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/Job.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.domain;
-
-import static com.google.common.base.Objects.equal;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.net.URI;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import com.google.common.base.Objects;
-
-/**
- * Minimal info about a Job
- */
-public class Job {
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return builder().fromJob(this);
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-   }
-
-   public abstract static class Builder<B extends Builder<B>> {
-      private String name;
-      private URI url;
-      private String color;
-
-      @SuppressWarnings("unchecked")
-      protected B self() {
-         return (B) this;
-      }
-
-      /**
-       * @see Job#getName()
-       */
-      public B name(String name) {
-         this.name = name;
-         return self();
-      }
-      
-      /**
-       * @see Job#getUrl()
-       */
-      public B url(URI url) {
-         this.url = url;
-         return self();
-      }
-      
-      /**
-       * @see Job#getColor()
-       */
-      public B color(String color) {
-         this.color = color;
-         return self();
-      }
-
-      public Job build() {
-         return new Job(this);
-      }
-
-      protected B fromJob(Job in) {
-         return name(in.getName()).color(in.getColor()).url(in.getUrl());
-      }
-   }
-
-   private final String name;
-   private final String color;
-   private final URI url;
-
-   protected Job(Builder<?> builder) {
-      this.name = checkNotNull(builder.name, "name");
-      this.color = checkNotNull(builder.color, "color");
-      this.url = checkNotNull(builder.url, "url");
-   }
-
-   /**
-    * name of the job
-    */
-   public String getName() {
-      return name;
-   }
-
-   /**
-    * 
-    * color of the job
-    */
-   public String getColor() {
-      return color;
-   }
-
-   /**
-    * 
-    * url of the job
-    */
-   public URI getUrl() {
-      return url;
-   }
-
-   @Override
-   public boolean equals(Object o) {
-      if (this == o)
-         return true;
-      if (o == null || getClass() != o.getClass())
-         return false;
-      Job that = Job.class.cast(o);
-      return equal(this.name, that.name) && equal(this.url, that.url)
-               && equal(this.color, that.color);
-   }
-
-   public boolean clone(Object o) {
-      if (this == o)
-         return false;
-      if (o == null || getClass() != o.getClass())
-         return false;
-      Job that = Job.class.cast(o);
-      return equal(this.color, that.color);
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(name, url, color);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   protected ToStringHelper string() {
-      return MoreObjects.toStringHelper("").add("name", name).add("url", url).add("color",
-               color);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/JobDetails.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/JobDetails.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/JobDetails.java
deleted file mode 100644
index 54a1bf4..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/JobDetails.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.domain;
-
-import com.google.common.base.MoreObjects.ToStringHelper;
-
-public class JobDetails extends Job {
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   @Override
-   public Builder<?> toBuilder() {
-      return builder().fromJobDetails(this);
-   }
-
-   public static class Builder<B extends Builder<B>> extends Job.Builder<B> {
-
-      @Override
-      public JobDetails build() {
-         return new JobDetails(this);
-      }
-
-      public B fromJobDetails(JobDetails in) {
-         return fromJob(in);
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-   }
-
-   protected JobDetails(Builder<?> builder) {
-      super(builder);
-   }
-
-   @Override
-   public ToStringHelper string() {
-      return super.string(); // .add("field", field);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/LastBuild.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/LastBuild.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/LastBuild.java
deleted file mode 100644
index f97af6c..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/LastBuild.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.domain;
-
-import static com.google.common.base.Objects.equal;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.net.URI;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import com.google.common.base.Objects;
-
-/**
- * Minimal info about a LastBuild
- * 
- * GET http://host/job/project/lastBuild/api/json
- */
-public class LastBuild {
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return builder().fromJob(this);
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-   }
-
-   public abstract static class Builder<B extends Builder<B>> {
-      private String id;
-      private URI url;
-      private String description;
-      private String building;
-      private String duration;
-      private String estimatedDuration;
-      private String fullDisplayName;
-      private String result;
-      private String timestamp;
-
-      @SuppressWarnings("unchecked")
-      protected B self() {
-         return (B) this;
-      }
-
-      /**
-       * @see LastBuild#getId()
-       */
-      public B id(String id) {
-         this.id = id;
-         return self();
-      }
-
-      /**
-       * @see LastBuild#getUrl()
-       */
-      public B url(URI url) {
-         this.url = url;
-         return self();
-      }
-
-      /**
-       * @see LastBuild#getDescription()
-       */
-      public B description(String description) {
-         this.description = description;
-         return self();
-      }
-
-      /**
-       * @see LastBuild#getBuilding()
-       */
-      public B building(String building) {
-         this.building = building;
-         return self();
-      }
-
-      /**
-       * @see LastBuild#getDuration()
-       */
-      public B duration(String duration) {
-         this.duration = duration;
-         return self();
-      }
-
-      /**
-       * @see LastBuild#getEstimatedDuration()
-       */
-      public B estimatedDuration(String estimatedDuration) {
-         this.estimatedDuration = estimatedDuration;
-         return self();
-      }
-
-      /**
-       * @see LastBuild#getFullDisplayName()
-       */
-      public B fullDisplayName(String fullDisplayName) {
-         this.fullDisplayName = fullDisplayName;
-         return self();
-      }
-
-      /**
-       * @see LastBuild#getResult()
-       */
-      public B result(String result) {
-         this.result = result;
-         return self();
-      }
-
-      /**
-       * @see LastBuild#getTimestamp()
-       */
-      public B timestamp(String timestamp) {
-         this.timestamp = timestamp;
-         return self();
-      }
-
-      public LastBuild build() {
-         return new LastBuild(this);
-      }
-
-      protected B fromJob(LastBuild in) {
-         return id(in.getId()).url(in.getUrl()).description(in.getDescription()).building(in.getBuilding())
-                  .duration(in.getDuration()).estimatedDuration(in.getEstimatedDuration())
-                  .fullDisplayName(in.getFullDisplayName()).result(in.getResult()).timestamp(in.getTimestamp());
-      }
-   }
-
-   private final String id;
-   private final URI url;
-   private final String description;
-   private final String building;
-   private final String duration;
-   private final String estimatedDuration;
-   private final String fullDisplayName;
-   private final String result;
-   private final String timestamp;
-
-   protected LastBuild(Builder<?> builder) {
-      this.id = checkNotNull(builder.id, "id");
-      this.url = checkNotNull(builder.url, "url");
-      this.description = checkNotNull(builder.description, "description");
-      this.building = checkNotNull(builder.building, "building");
-      this.duration = checkNotNull(builder.duration, "duration");
-      this.estimatedDuration = checkNotNull(builder.estimatedDuration, "estimatedDuration");
-      this.fullDisplayName = checkNotNull(builder.fullDisplayName, "fullDisplayName");
-      this.result = checkNotNull(builder.result, "result");
-      this.timestamp = checkNotNull(builder.timestamp, "timestamp");
-   }
-
-   /**
-    * id of the lastBuild
-    */
-   public String getId() {
-      return id;
-   }
-
-   /**
-    * 
-    * url of the lastBuild
-    */
-   public URI getUrl() {
-      return url;
-   }
-
-   /**
-    * 
-    * building of the lastBuild
-    */
-   public String getBuilding() {
-      return building;
-   }
-
-   /**
-    * 
-    * description of the lastBuild
-    */
-   public String getDescription() {
-      return description;
-   }
-
-   /**
-    * 
-    * duration of the lastBuild
-    */
-   public String getDuration() {
-      return duration;
-   }
-
-   /**
-    * 
-    * estimated duration of the lastBuild
-    */
-   public String getEstimatedDuration() {
-      return estimatedDuration;
-   }
-
-   /**
-    * 
-    * full Display Name of the lastBuild
-    */
-   public String getFullDisplayName() {
-      return fullDisplayName;
-   }
-
-   /**
-    * 
-    * result of the lastBuild
-    */
-   public String getResult() {
-      return result;
-   }
-
-   /**
-    * 
-    * timestamp of the lastBuild
-    */
-   public String getTimestamp() {
-      return timestamp;
-   }
-
-   @Override
-   public boolean equals(Object o) {
-      if (this == o)
-         return true;
-      if (o == null || getClass() != o.getClass())
-         return false;
-      LastBuild that = LastBuild.class.cast(o);
-      return equal(this.id, that.id) 
-               && equal(this.url, that.url) 
-               && equal(this.building, that.building)
-               && equal(this.description, that.description) 
-               && equal(this.duration, that.duration)
-               && equal(this.estimatedDuration, that.estimatedDuration)
-               && equal(this.fullDisplayName, that.fullDisplayName)
-               && equal(this.result, that.result)
-               && equal(this.timestamp, that.timestamp);
-   }
-
-   public boolean clone(Object o) {
-      if (this == o)
-         return false;
-      if (o == null || getClass() != o.getClass())
-         return false;
-      LastBuild that = LastBuild.class.cast(o);
-      return equal(this.description, that.description);
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(id, url, description, duration, estimatedDuration, fullDisplayName, result, timestamp);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   protected ToStringHelper string() {
-      return MoreObjects.toStringHelper("")
-               .add("id", id)
-               .add("url", url)
-               .add("description", description)
-               .add("duration", duration)
-               .add("estimatedDuration", estimatedDuration)
-               .add("fullDisplayName", fullDisplayName)
-               .add("result", result)
-               .add("timestamp", timestamp);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/Node.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/Node.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/Node.java
deleted file mode 100644
index dbb0504..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/domain/Node.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.domain;
-
-import static com.google.common.base.Objects.equal;
-import static com.google.common.base.Objects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Set;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
-import com.google.gson.annotations.SerializedName;
-
-/**
- * @see <a
- *      href="http://ci.jruby.org/api/">api
- *      doc</a>
- */
-public class Node implements Comparable<Node> {
-
-   public static Builder builder() {
-      return new Builder();
-   }
-
-   public Builder toBuilder() {
-      return builder().fromNodeMetadata(this);
-   }
-
-   public static class Builder {
-      protected String name;
-      protected String description;
-      protected Set<Job> jobs = ImmutableSet.of();
-
-      /**
-       * @see Node#getName()
-       */
-      public Builder name(String name) {
-         this.name = checkNotNull(name, "name");
-         return this;
-      }
-
-      /**
-       * @see Node#getDescription()
-       */
-      public Builder description(String description) {
-         this.description = description;
-         return this;
-      }
-
-      /**
-       * @see Node#getJobs()
-       */
-      public Builder jobs(Job... jobs) {
-         return jobs(ImmutableSet.copyOf(checkNotNull(jobs, "jobs")));
-      }
-
-      /**
-       * @see Node#getJobs()
-       */
-      public Builder jobs(Set<Job> jobs) {
-         this.jobs = ImmutableSet.copyOf(checkNotNull(jobs, "jobs"));
-         return this;
-      }
-
-      public Node build() {
-         return new Node(name, description, jobs);
-      }
-
-      public Builder fromNodeMetadata(Node from) {
-         return name(from.getName()).description(from.getDescription()).jobs(from.getJobs());
-      }
-   }
-
-   @SerializedName("nodeName")
-   protected final String name;
-   @SerializedName("nodeDescription")
-   protected final String description;
-   protected final Set<Job> jobs;
-
-   public Node(String name, String description, Set<Job> jobs) {
-      this.name = checkNotNull(name, "name");
-      this.description = description;
-      this.jobs = ImmutableSet.copyOf(checkNotNull(jobs, "jobs"));
-   }
-
-   /**
-    * 
-    * @return the name of the node
-    */
-   public String getName() {
-      return name;
-   }
-
-   /**
-    * 
-    * @return the description of the node
-    */
-   public String getDescription() {
-      return description;
-   }
-
-   /**
-    * @return the jobs on this node
-    */
-   public Set<Job> getJobs() {
-      return jobs;
-   }
-
-   @Override
-   public boolean equals(Object object) {
-      if (this == object) {
-         return true;
-      }
-      if (object instanceof Node) {
-         final Node other = Node.class.cast(object);
-         return equal(getName(), other.getName()) && equal(getDescription(), other.getDescription())
-                  && equal(getJobs(), other.getJobs());
-      } else {
-         return false;
-      }
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(getName(), getDescription(), getJobs());
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   protected ToStringHelper string() {
-      return toStringHelper("").add("name", getName()).add("description", getDescription()).add("jobs", getJobs());
-   }
-
-   @Override
-   public int compareTo(Node that) {
-      if (that == null)
-         return 1;
-      if (this == that)
-         return 0;
-      return this.getName().compareTo(that.getName());
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/features/ComputerApi.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/features/ComputerApi.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/features/ComputerApi.java
deleted file mode 100644
index 2eb6ccc..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/features/ComputerApi.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.features;
-
-import org.jclouds.jenkins.v1.domain.Computer;
-import org.jclouds.jenkins.v1.domain.ComputerView;
-
-/**
- * Computer Services
- * 
- * @see ComputerAsyncApi
- * @see <a href= "http://ci.jruby.org/computer/api/" >api doc</a>
- */
-public interface ComputerApi {
-
-   /**
-    * @return overview of all configured computers
-    */
-   ComputerView getView();
-   
-   /**
-    * 
-    * @param displayName display name of the computer
-    * @return computer or null if not found
-    */
-   Computer get(String displayName);
-   
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/features/ComputerAsyncApi.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/features/ComputerAsyncApi.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/features/ComputerAsyncApi.java
deleted file mode 100644
index 75cb243..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/features/ComputerAsyncApi.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.features;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.jenkins.v1.domain.Computer;
-import org.jclouds.jenkins.v1.domain.ComputerView;
-import org.jclouds.jenkins.v1.filters.BasicAuthenticationUnlessAnonymous;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.RequestFilters;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Computer Services
- * 
- * @see ComputerApi
- * @see <a href=
- *      "http://ci.jruby.org/computer/api/"
- *      >api doc</a>
- */
-@RequestFilters(BasicAuthenticationUnlessAnonymous.class)
-public interface ComputerAsyncApi {
-
-   /**
-    * @see ComputerApi#getView
-    */
-   @Named("ListComputers")
-   @GET
-   @Path("/computer/api/json")
-   @Consumes(MediaType.APPLICATION_JSON)
-   ListenableFuture<ComputerView> getView();
-   
-   /**
-    * @see ComputerApi#get
-    */
-   @Named("GetComputer")
-   @GET
-   @Path("/computer/{displayName}/api/json")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<Computer> get(@PathParam("displayName") String displayName);
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/features/JobApi.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/features/JobApi.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/features/JobApi.java
deleted file mode 100644
index 28a537b..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/features/JobApi.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.features;
-
-import java.util.Map;
-import org.jclouds.jenkins.v1.domain.JobDetails;
-import org.jclouds.jenkins.v1.domain.LastBuild;
-
-/**
- * Job Services
- * 
- * @see JobAsyncApi
- * @see <a href= "http://ci.jruby.org/computer/api/" >api doc</a>
- */
-public interface JobApi {
-
-   /**
-    * creates a job, given the payload
-    * 
-    * @param displayName
-    * @param xml
-    */
-   void createFromXML(String displayName, String xml);
-
-   JobDetails get(String displayName);
-
-   void delete(String displayName);
-   
-   /**
-    * Build a job via API
-    * 
-    * If security is enabled, provide username/password of an account with build permission in the request.
-    * Another alternative (but deprecated) is to configure the 'Trigger builds remotely' section in the job configuration.
-    * 
-    * @param displayName
-    */
-   void build(String displayName);
-
-   void buildWithParameters(String displayName, Map<String, String> parameters);
-   
-   String fetchConfigXML(String displayName);
-   
-   LastBuild lastBuild(String displayName);
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/features/JobAsyncApi.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/features/JobAsyncApi.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/features/JobAsyncApi.java
deleted file mode 100644
index 91e4519..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/features/JobAsyncApi.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.features;
-
-import java.util.Map;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.jenkins.v1.JenkinsFallbacks.VoidOn302Or404;
-import org.jclouds.jenkins.v1.binders.BindMapToOptionalParams;
-import org.jclouds.jenkins.v1.domain.JobDetails;
-import org.jclouds.jenkins.v1.domain.LastBuild;
-import org.jclouds.jenkins.v1.filters.BasicAuthenticationUnlessAnonymous;
-import org.jclouds.rest.annotations.BinderParam;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.binders.BindToStringPayload;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Job Services
- * 
- * @see JobApi
- * @see <a href="http://ci.jruby.org/computer/api/">api doc</a>
- */
-@RequestFilters(BasicAuthenticationUnlessAnonymous.class)
-public interface JobAsyncApi {
-   
-   /**
-    * @see JobApi#createFromXML
-    */
-   @Named("CreateItem")
-   @POST
-   @Path("/createItem")
-   @Produces(MediaType.TEXT_XML)
-   ListenableFuture<Void> createFromXML(@QueryParam("name") String displayName, @BinderParam(BindToStringPayload.class) String xml); 
-   
-   /**
-    * @see JobApi#get
-    */
-   @Named("GetJob")
-   @GET
-   @Path("/job/{displayName}/api/json")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<JobDetails> get(@PathParam("displayName") String displayName);
-   
-   /**
-    * @see JobApi#delete
-    */
-   @Named("DeleteJob")
-   @POST
-   @Path("/job/{displayName}/doDelete")
-   @Fallback(VoidOn302Or404.class)
-   ListenableFuture<Void> delete(@PathParam("displayName") String displayName);
-   
-   /**
-    * @see JobApi#buildJob
-    */
-   @Named("Build")
-   @POST
-   @Path("/job/{displayName}/build")
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<Void> build(@PathParam("displayName") String displayName);
-   
-   /**
-    * @see JobApi#buildJobWithParameters
-    */
-   @Named("BuildWithParameters")
-   @POST
-   @Path("/job/{displayName}/buildWithParameters")
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<Void> buildWithParameters(@PathParam("displayName") String displayName,
-            @BinderParam(BindMapToOptionalParams.class) Map<String, String> parameters);
-   
-   /**
-    * @see JobApi#fetchConfigXML
-    */
-   @Named("GetConfigXML")
-   @GET
-   @Path("/job/{displayName}/config.xml")
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<String> fetchConfigXML(@PathParam("displayName") String displayName);
-   
-   /**
-    * @see JobApi#lastBuild
-    */
-   @Named("GetLastBuild")
-   @GET
-   @Path("/job/{displayName}/lastBuild/api/json")
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<LastBuild> lastBuild(@PathParam("displayName") String displayName);
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/filters/BasicAuthenticationUnlessAnonymous.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/filters/BasicAuthenticationUnlessAnonymous.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/filters/BasicAuthenticationUnlessAnonymous.java
deleted file mode 100644
index d767b97..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/filters/BasicAuthenticationUnlessAnonymous.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.filters;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.jenkins.v1.JenkinsApiMetadata.ANONYMOUS_IDENTITY;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.domain.Credentials;
-import org.jclouds.http.HttpException;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpRequestFilter;
-import org.jclouds.http.filters.BasicAuthentication;
-import org.jclouds.location.Provider;
-
-import com.google.common.base.Supplier;
-
-@Singleton
-public class BasicAuthenticationUnlessAnonymous implements HttpRequestFilter {
-
-   private final Supplier<Credentials> creds;
-   private final BasicAuthentication auth;
-
-   @Inject
-   public BasicAuthenticationUnlessAnonymous(@Provider Supplier<Credentials> creds, BasicAuthentication auth) {
-      this.creds = checkNotNull(creds, "creds");
-      this.auth = checkNotNull(auth, "auth");
-   }
-
-   @Override
-   public HttpRequest filter(HttpRequest request) throws HttpException {
-      if (ANONYMOUS_IDENTITY.equals(checkNotNull(creds.get().identity, "user")))
-         return request;
-      return auth.filter(request);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/java/org/jclouds/jenkins/v1/handlers/JenkinsErrorHandler.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jclouds/jenkins/v1/handlers/JenkinsErrorHandler.java b/jenkins/src/main/java/org/jclouds/jenkins/v1/handlers/JenkinsErrorHandler.java
deleted file mode 100644
index 27e2a23..0000000
--- a/jenkins/src/main/java/org/jclouds/jenkins/v1/handlers/JenkinsErrorHandler.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.handlers;
-
-import static org.jclouds.http.HttpUtils.closeClientButKeepContentStream;
-
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpCommand;
-import org.jclouds.http.HttpErrorHandler;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.HttpResponseException;
-import org.jclouds.rest.AuthorizationException;
-import org.jclouds.rest.ResourceNotFoundException;
-
-/**
- * This will parse and set an appropriate exception on the command object.
- */
-// TODO: is there error spec someplace? let's type errors, etc.
-@Singleton
-public class JenkinsErrorHandler implements HttpErrorHandler {
-
-   public void handleError(HttpCommand command, HttpResponse response) {
-      // it is important to always read fully and close streams
-      byte[] data = closeClientButKeepContentStream(response);
-      String message = data != null ? new String(data) : null;
-
-      Exception exception = message != null ? new HttpResponseException(command, response, message)
-               : new HttpResponseException(command, response);
-      message = message != null ? message : String.format("%s -> %s", command.getCurrentRequest().getRequestLine(),
-               response.getStatusLine());
-      switch (response.getStatusCode()) {
-         case 400:
-            break;
-         case 401:
-         case 403:
-            exception = new AuthorizationException(message, exception);
-            break;
-         case 404:
-            if (!command.getCurrentRequest().getMethod().equals("DELETE")) {
-               exception = new ResourceNotFoundException(message, exception);
-            }
-            break;
-      }
-      command.setException(exception);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
----------------------------------------------------------------------
diff --git a/jenkins/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata b/jenkins/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
deleted file mode 100644
index c80a7f3..0000000
--- a/jenkins/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
+++ /dev/null
@@ -1 +0,0 @@
-org.jclouds.jenkins.v1.JenkinsApiMetadata

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsApiExpectTest.java
----------------------------------------------------------------------
diff --git a/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsApiExpectTest.java b/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsApiExpectTest.java
deleted file mode 100644
index bc95e9d..0000000
--- a/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsApiExpectTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1;
-
-import static org.testng.Assert.assertEquals;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.jenkins.v1.internal.BaseJenkinsApiExpectTest;
-import org.jclouds.jenkins.v1.parse.ParseNodeTest;
-import org.testng.annotations.Test;
-
-@Test(groups = "unit", testName = "JenkinsApiExpectTest")
-public class JenkinsApiExpectTest extends BaseJenkinsApiExpectTest {
-
-   public void testGetMasterWhenResponseIs2xx() {
-      HttpRequest getMaster = HttpRequest
-            .builder()
-            .method("GET")
-            .endpoint("http://localhost:8080/api/json")
-            .addHeader("Accept", "application/json")
-            .addHeader("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build();
-
-      HttpResponse getMasterResponse = HttpResponse.builder().statusCode(200)
-            .payload(payloadFromResource("/master.json")).build();
-
-      JenkinsApi apiWhenMasterExists = requestSendsResponse(getMaster, getMasterResponse);
-
-      assertEquals(apiWhenMasterExists.getMaster().toString(),
-            new ParseNodeTest().expected().toString());
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsApiLiveTest.java
----------------------------------------------------------------------
diff --git a/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsApiLiveTest.java b/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsApiLiveTest.java
deleted file mode 100644
index 2906475..0000000
--- a/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsApiLiveTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1;
-
-import static org.testng.Assert.assertNotNull;
-
-import org.jclouds.jenkins.v1.domain.Node;
-import org.jclouds.jenkins.v1.internal.BaseJenkinsApiLiveTest;
-import org.testng.annotations.Test;
-
-@Test(groups = "live", testName = "JenkinsApiLiveTest")
-public class JenkinsApiLiveTest extends BaseJenkinsApiLiveTest {
-
-   public void testGetMaster(){
-      Node master = context.getApi().getMaster();
-      assertNotNull(master);
-      assertNotNull(master.getName());
-      assertNotNull(master.getJobs());
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsApiMetadataTest.java
----------------------------------------------------------------------
diff --git a/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsApiMetadataTest.java b/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsApiMetadataTest.java
deleted file mode 100644
index f13c839..0000000
--- a/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsApiMetadataTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1;
-
-import org.jclouds.View;
-import org.jclouds.apis.internal.BaseApiMetadataTest;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.reflect.TypeToken;
-
-@Test(groups = "unit", testName = "JenkinsApiMetadataTest")
-public class JenkinsApiMetadataTest extends BaseApiMetadataTest {
-   public JenkinsApiMetadataTest() {
-      super(new JenkinsApiMetadata(), ImmutableSet.<TypeToken<? extends View>> of());
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsErrorHandlerTest.java
----------------------------------------------------------------------
diff --git a/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsErrorHandlerTest.java b/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsErrorHandlerTest.java
deleted file mode 100644
index 0a7f70f..0000000
--- a/jenkins/src/test/java/org/jclouds/jenkins/v1/JenkinsErrorHandlerTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1;
-
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.reportMatcher;
-import static org.easymock.EasyMock.verify;
-
-import java.net.URI;
-
-import org.easymock.IArgumentMatcher;
-import org.jclouds.http.HttpCommand;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.jenkins.v1.handlers.JenkinsErrorHandler;
-import org.jclouds.rest.ResourceNotFoundException;
-import org.testng.annotations.Test;
-
-@Test(groups = "unit", testName = "JenkinsErrorHandlerTest")
-public class JenkinsErrorHandlerTest {
-
-   @Test
-   public void test404WithHTMLDoesntBustParserAndMakesResourceNotFoundException() {
-      assertCodeMakes("GET", URI
-               .create("http://ci.jruby.org/computer/master/api/json"),
-               404, "Not Found", "<html></html>", ResourceNotFoundException.class);
-   }
-
-   private void assertCodeMakes(String method, URI uri, int statusCode, String message, String content,
-            Class<? extends Exception> expected) {
-      assertCodeMakes(method, uri, statusCode, message, "text/plain", content, expected);
-   }
-
-   private void assertCodeMakes(String method, URI uri, int statusCode, String message, String contentType,
-            String content, Class<? extends Exception> expected) {
-
-      JenkinsErrorHandler function = new JenkinsErrorHandler();
-
-      HttpCommand command = createMock(HttpCommand.class);
-      HttpRequest request = HttpRequest.builder().method(method).endpoint(uri).build();
-      HttpResponse response = HttpResponse.builder().statusCode(statusCode).message(message).payload(content).build();
-      response.getPayload().getContentMetadata().setContentType(contentType);
-
-      expect(command.getCurrentRequest()).andReturn(request).atLeastOnce();
-      command.setException(classEq(expected));
-
-      replay(command);
-
-      function.handleError(command, response);
-
-      verify(command);
-   }
-
-   public static Exception classEq(final Class<? extends Exception> in) {
-      reportMatcher(new IArgumentMatcher() {
-
-         @Override
-         public void appendTo(StringBuffer buffer) {
-            buffer.append("classEq(");
-            buffer.append(in);
-            buffer.append(")");
-         }
-
-         @Override
-         public boolean matches(Object arg) {
-            return arg.getClass() == in;
-         }
-
-      });
-      return null;
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/ac22366f/jenkins/src/test/java/org/jclouds/jenkins/v1/features/ComputerApiExpectTest.java
----------------------------------------------------------------------
diff --git a/jenkins/src/test/java/org/jclouds/jenkins/v1/features/ComputerApiExpectTest.java b/jenkins/src/test/java/org/jclouds/jenkins/v1/features/ComputerApiExpectTest.java
deleted file mode 100644
index d581d4a..0000000
--- a/jenkins/src/test/java/org/jclouds/jenkins/v1/features/ComputerApiExpectTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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.jclouds.jenkins.v1.features;
-
-import static org.testng.Assert.assertEquals;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.jenkins.v1.JenkinsApi;
-import org.jclouds.jenkins.v1.internal.BaseJenkinsApiExpectTest;
-import org.jclouds.jenkins.v1.parse.ParseComputerTest;
-import org.jclouds.jenkins.v1.parse.ParseComputerViewTest;
-import org.testng.annotations.Test;
-
-@Test(groups = "unit", testName = "ComputerApiExpectTest")
-public class ComputerApiExpectTest extends BaseJenkinsApiExpectTest {
-
-   public void testGetComputerViewWhenResponseIs2xx() {
-      HttpRequest getComputerView = HttpRequest
-            .builder()
-            .method("GET")
-            .endpoint("http://localhost:8080/computer/api/json")
-            .addHeader("Accept", "application/json")
-            .addHeader("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build();
-
-      HttpResponse getComputerViewResponse = HttpResponse.builder().statusCode(200)
-            .payload(payloadFromResource("/computerview.json")).build();
-
-      JenkinsApi apiWhenServersExist = requestSendsResponse(getComputerView, getComputerViewResponse);
-
-      assertEquals(apiWhenServersExist.getComputerApi().getView().toString(),
-            new ParseComputerViewTest().expected().toString());
-   }
-   
-   public void testGetComputerWhenResponseIs2xx() {
-      HttpRequest getComputer = HttpRequest
-            .builder()
-            .method("GET")
-            .endpoint("http://localhost:8080/computer/Ruboto/api/json")
-            .addHeader("Accept", "application/json")
-            .addHeader("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build();
-
-      HttpResponse getComputerResponse = HttpResponse.builder().statusCode(200)
-            .payload(payloadFromResource("/computer.json")).build();
-
-      JenkinsApi apiWhenServersExist = requestSendsResponse(getComputer, getComputerResponse);
-
-      assertEquals(apiWhenServersExist.getComputerApi().get("Ruboto").toString(),
-            new ParseComputerTest().expected().toString());
-   }
-}