/*
 * Copyright 2014 Timothy Brooks
 *
 * Licensed 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 net.uncontended.precipice;

import net.uncontended.precipice.circuit.BreakerConfigBuilder;
import net.uncontended.precipice.circuit.CircuitBreaker;
import net.uncontended.precipice.circuit.DefaultCircuitBreaker;
import net.uncontended.precipice.metrics.ActionMetrics;
import net.uncontended.precipice.metrics.DefaultActionMetrics;
import net.uncontended.precipice.timeout.TimeoutService;

public class ServiceProperties {

    private ActionMetrics metrics = new DefaultActionMetrics();
    private CircuitBreaker breaker = new DefaultCircuitBreaker(new BreakerConfigBuilder().build());
    private TimeoutService timeoutService = TimeoutService.defaultTimeoutService;

    public void actionMetrics(ActionMetrics metrics) {
        this.metrics = metrics;
    }

    public void ircuitBreaker(CircuitBreaker breaker) {
        this.breaker = breaker;
    }

    public void timeoutService(TimeoutService timeoutService) {
        this.timeoutService = timeoutService;
    }
}

@@ -803,32 +803,96 @@
 CircuitBreaker;%0A
+import net.uncontended.precipice.concurrent.PrecipiceSemaphore;%0A
 import net.uncon
@@ -923,32 +923,32 @@
 .ActionMetrics;%0A
-
 import net.uncon
@@ -1331,16 +1331,131 @@
 Service;
+%0A    private PrecipiceSemaphore semaphore = null;%0A    private int concurrencyLevel = Service.MAX_CONCURRENCY_LEVEL;
 %0A%0A    pu
@@ -1697,24 +1697,24 @@
 tService) %7B%0A
-
         this
@@ -1752,11 +1752,226 @@
 e;%0A    %7D
+%0A%0A    public void concurrencyLevel(int concurrencyLevel) %7B%0A        this.concurrencyLevel = concurrencyLevel;%0A    %7D%0A%0A    public void semaphore(PrecipiceSemaphore semaphore) %7B%0A        this.semaphore = semaphore;%0A    %7D
 %0A%7D%0A

Add other properties