1 package org.kuali.common.devops.metadata.function;
2
3 import static org.kuali.common.util.Encodings.UTF8;
4 import static org.kuali.common.util.base.Exceptions.illegalState;
5 import static org.kuali.common.util.base.Precondition.checkNotNull;
6
7 import java.io.ByteArrayInputStream;
8 import java.io.IOException;
9 import java.util.Properties;
10
11 import org.kuali.common.util.project.ProjectUtils;
12 import org.kuali.common.util.project.model.Project;
13
14 import com.google.common.base.Function;
15
16 public class ProjectFunction implements Function<String, Project> {
17
18 @Override
19 public Project apply(String content) {
20 checkNotNull(content, "content");
21 Properties properties = getProperties(content);
22 return ProjectUtils.getProject(properties);
23 }
24
25 protected Properties getProperties(String content) {
26 try {
27 ByteArrayInputStream in = new ByteArrayInputStream(content.getBytes(UTF8));
28 Properties props = new Properties();
29 props.load(in);
30 return props;
31 } catch (IOException e) {
32 throw illegalState(e, "unexpected io error loading properties -> \n\n%s\n\n", content);
33 }
34 }
35
36 }