mirror of https://github.com/apache/jclouds.git
refactored utilities and servlet plugin
This commit is contained in:
parent
62f14d2850
commit
0f76bc8b43
|
@ -0,0 +1,78 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2010 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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 org.jclouds.chef.util;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.jclouds.domain.JsonBall;
|
||||
import org.jclouds.ohai.Automatic;
|
||||
import org.jclouds.ohai.config.multibindings.MapBinder;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Supplier;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.inject.Binder;
|
||||
import com.google.inject.TypeLiteral;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class ChefUtils {
|
||||
|
||||
public static Date fromOhaiTime(JsonBall ohaiDate) {
|
||||
return new Date(Long.parseLong(checkNotNull(ohaiDate, "ohaiDate").toString().replaceAll("\\.[0-9]*$", "")));
|
||||
}
|
||||
|
||||
public static JsonBall toOhaiTime(long millis) {
|
||||
return new JsonBall(millis + "");
|
||||
}
|
||||
|
||||
public static MapBinder<String, Supplier<JsonBall>> ohaiAutomaticAttributeBinder(Binder binder) {
|
||||
MapBinder<String, Supplier<JsonBall>> mapbinder = MapBinder.newMapBinder(binder, new TypeLiteral<String>() {
|
||||
}, new TypeLiteral<Supplier<JsonBall>>() {
|
||||
}, Automatic.class);
|
||||
return mapbinder;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return NoSuchElementException if no element in the runList is a role.
|
||||
*/
|
||||
public static String findRoleInRunList(List<String> runList) {
|
||||
final Pattern pattern = Pattern.compile("^role\\[(.*)\\]$");
|
||||
String roleToParse = Iterables.find(runList, new Predicate<String>() {
|
||||
|
||||
@Override
|
||||
public boolean apply(String input) {
|
||||
return pattern.matcher(input).matches();
|
||||
}
|
||||
|
||||
});
|
||||
Matcher matcher = pattern.matcher(roleToParse);
|
||||
matcher.find();
|
||||
return matcher.group(1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2010 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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.chef.util;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
import org.jclouds.domain.JsonBall;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
/**
|
||||
* Tests behavior of {@code ChefUtils}
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Test(groups = "unit", sequential = true, testName = "ohai.ChefUtilsTest")
|
||||
public class ChefUtilsTest {
|
||||
public static long millis = 1280251180727l;
|
||||
public static String millisString = "1280251180727";
|
||||
public static Date now = new Date(1280251180727l);
|
||||
|
||||
public void testToOhaiTime() {
|
||||
assertEquals(ChefUtils.toOhaiTime(millis).toString(), millisString);
|
||||
}
|
||||
|
||||
public void testFromOhaiTime() {
|
||||
assertEquals(ChefUtils.fromOhaiTime(new JsonBall(millisString)), now);
|
||||
|
||||
}
|
||||
|
||||
@Test(expectedExceptions = NoSuchElementException.class)
|
||||
public void testFindRoleInRunListThrowsNoSuchElementOnRecipe() {
|
||||
ChefUtils.findRoleInRunList(ImmutableList.of("recipe[java]"));
|
||||
}
|
||||
|
||||
public void testFindRoleInRunList() {
|
||||
assertEquals(ChefUtils.findRoleInRunList(ImmutableList.of("role[prod]")), "prod");
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue