http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/CampServer.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/CampServer.java b/camp/camp-server/src/main/java/io/brooklyn/camp/CampServer.java deleted file mode 100644 index 9f538c1..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/CampServer.java +++ /dev/null @@ -1,185 +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 io.brooklyn.camp; - -import io.brooklyn.camp.rest.resource.PlatformRestResource; -import io.brooklyn.camp.rest.util.DtoFactory; - -import java.io.File; -import java.io.IOException; -import java.util.EnumSet; - -import javax.servlet.DispatcherType; - -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.ContextHandler; -import org.eclipse.jetty.servlet.FilterHolder; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.util.thread.QueuedThreadPool; -import org.eclipse.jetty.webapp.WebAppContext; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import brooklyn.util.exceptions.Exceptions; -import brooklyn.util.net.Networking; - -import com.google.common.base.Charsets; -import com.google.common.io.Files; -import com.sun.jersey.api.core.DefaultResourceConfig; -import com.sun.jersey.api.core.ResourceConfig; -import com.sun.jersey.spi.container.servlet.ServletContainer; - -public class CampServer { - - private static final Logger log = LoggerFactory.getLogger(CampServer.class); - - public static final String CAMP_PLATFORM_ATTRIBUTE = CampPlatform.class.getCanonicalName(); - public static final String DTO_FACTORY = DtoFactory.class.getCanonicalName(); - - private final CampPlatform platform; - private final String uriBase; - private DtoFactory dtoFactory; - - WebAppContext webAppContext; - Server server; - - public CampServer(CampPlatform platform, String uriBase) { - this.platform = platform; - this.uriBase = uriBase; - } - - public CampPlatform getPlatform() { - return platform; - } - - public String getUriBase() { - return uriBase; - } - - public WebAppContext getWebAppContext() { - return webAppContext; - } - - public synchronized DtoFactory getDtoFactory() { - if (dtoFactory!=null) return dtoFactory; - dtoFactory = createDtoFactory(); - return dtoFactory; - } - - protected DtoFactory createDtoFactory() { - return new DtoFactory(getPlatform(), getUriBase()); - } - - public synchronized CampServer start() { - if (webAppContext!=null) - throw new IllegalStateException("Already started"); - - webAppContext = new WebAppContext(); - webAppContext.setContextPath("/"); - webAppContext.setAttribute(CAMP_PLATFORM_ATTRIBUTE, getPlatform()); - webAppContext.setAttribute(DTO_FACTORY, getDtoFactory()); - webAppContext.setWar( - // TODO if there is a GUI or other war... - //findJsguiWebapp()!=null ? findJsguiWebapp() : - CampServerUtils.createTempWebDirWithIndexHtml("CAMP REST API <p> (no gui available - " + - "rest endpoint at <a href=\""+PlatformRestResource.CAMP_URI_PATH+"\">"+PlatformRestResource.CAMP_URI_PATH+"</a>)")); - CampServerUtils.installAsServletFilter(webAppContext); - - server = CampServerUtils.startServer(webAppContext, "CAMP server"); - - return this; - } - - public synchronized void stop() { - try { - server.stop(); - server = null; - webAppContext.stop(); - webAppContext = null; - } catch (Exception e) { - throw Exceptions.propagate(e); - } - } - - public Integer getPort() { - if (server==null) return null; - return server.getConnectors()[0].getLocalPort(); - } - - public static class CampServerUtils { - - public static void installAsServletFilter(ServletContextHandler context) { - // TODO security - // installBrooklynPropertiesSecurityFilter(context); - - // now set up the REST servlet resources - ResourceConfig config = new DefaultResourceConfig(); - // load all our REST API modules, JSON, and Swagger - for (Object r: CampRestResources.getAllResources()) - config.getSingletons().add(r); - - // configure to match empty path, or any thing which looks like a file path with /assets/ and extension html, css, js, or png - // and treat that as static content - config.getProperties().put(ServletContainer.PROPERTY_WEB_PAGE_CONTENT_REGEX, "(/?|[^?]*/assets/[^?]+\\.[A-Za-z0-9_]+)"); - - // and anything which is not matched as a servlet also falls through (but more expensive than a regex check?) - config.getFeatures().put(ServletContainer.FEATURE_FILTER_FORWARD_ON_404, true); - - // finally create this as a _filter_ which falls through to a web app or something (optionally) - FilterHolder filterHolder = new FilterHolder(new ServletContainer(config)); - context.addFilter(filterHolder, "/*", EnumSet.allOf(DispatcherType.class)); - } - - public static Server startServer(ContextHandler context, String summary) { - // FIXME port hardcoded - int port = Networking.nextAvailablePort(8080); - Server server = new Server(port); - server.setHandler(context); - - // use a nice name in the thread pool (otherwise this is exactly the same as Server defaults) - QueuedThreadPool threadPool = new QueuedThreadPool(); - threadPool.setName("camp-jetty-server-"+port+"-"+threadPool.getName()); - server.setThreadPool(threadPool); - - try { - server.start(); - } catch (Exception e) { - throw Exceptions.propagate(e); - } - log.info("CAMP REST server started ("+summary+") on"); - log.info(" http://localhost:"+server.getConnectors()[0].getLocalPort()+"/"); - - return server; - } - - /** create a directory with a simple index.html so we have some content being served up */ - public static String createTempWebDirWithIndexHtml(String indexHtmlContent) { - File dir = Files.createTempDir(); - dir.deleteOnExit(); - try { - Files.write(indexHtmlContent, new File(dir, "index.html"), Charsets.UTF_8); - } catch (IOException e) { - Exceptions.propagate(e); - } - return dir.getAbsolutePath(); - } - - } - -}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ApiErrorDto.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ApiErrorDto.java b/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ApiErrorDto.java deleted file mode 100644 index 18b2cba..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ApiErrorDto.java +++ /dev/null @@ -1,119 +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 io.brooklyn.camp.dto; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.codehaus.jackson.annotate.JsonProperty; - -import com.google.common.base.Objects; -import com.google.common.base.Optional; -import com.google.common.base.Throwables; - -/** - * A simple error message that provides a message and optional details. - * - * This class should eventually be replaced with an ErrorMessage object, - * as described in the CAMP spec. - */ -public class ApiErrorDto { - - public static Builder builder() { - return new Builder(); - } - - /** - * @return An {@link ApiErrorDto.Builder} whose message is initialised to either the throwable's - * message or the throwable's class name if the message is null and whose details are - * initialised to the throwable's stack trace. - */ - public static Builder fromThrowable(Throwable t) { - checkNotNull(t, "throwable"); - String message = Optional.fromNullable(t.getMessage()) - .or(t.getClass().getName()); - return builder() - .message(message) - .details(Throwables.getStackTraceAsString(t)); - } - - public static class Builder { - private String message; - private String details; - - public Builder message(String message) { - this.message = checkNotNull(message, "message"); - return this; - } - - public Builder details(String details) { - this.details = checkNotNull(details, "details"); - return this; - } - - public ApiErrorDto build() { - return new ApiErrorDto(message, details); - } - - public Builder fromApiErrorDto(ApiErrorDto error) { - return this - .message(error.message) - .details(error.details); - } - } - - private final String message; - private final String details; - - public ApiErrorDto( - @JsonProperty("message") String message, - @JsonProperty("details") String details) { - this.message = checkNotNull(message, "message"); - this.details = details != null ? details : ""; - } - - public String getMessage() { - return message; - } - - public String getDetails() { - return details; - } - - @Override - public boolean equals(Object other) { - if (this == other) return true; - if (other == null || getClass() != other.getClass()) return false; - ApiErrorDto that = ApiErrorDto.class.cast(other); - return Objects.equal(this.message, that.message) && - Objects.equal(this.details, that.details); - } - - @Override - public int hashCode() { - return Objects.hashCode(message, details); - } - - @Override - public String toString() { - return Objects.toStringHelper(this) - .add("message", message) - .add("details", details) - .toString(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ApplicationComponentDto.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ApplicationComponentDto.java b/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ApplicationComponentDto.java deleted file mode 100644 index ae4a68a..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ApplicationComponentDto.java +++ /dev/null @@ -1,72 +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 io.brooklyn.camp.dto; - -import java.util.ArrayList; -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; - -import io.brooklyn.camp.rest.util.DtoFactory; -import io.brooklyn.camp.spi.ApplicationComponent; -import io.brooklyn.camp.spi.Link; -import io.brooklyn.camp.spi.PlatformComponent; - -public class ApplicationComponentDto extends ResourceDto { - - // defined as a constant so can be used in Swagger REST API annotations - public static final String CLASS_NAME = "io.brooklyn.camp.dto.ApplicationComponentDto"; - static { assert CLASS_NAME.equals(ApplicationComponentDto.class.getCanonicalName()); } - - protected ApplicationComponentDto() {} - protected ApplicationComponentDto(DtoFactory dtoFactory, ApplicationComponent x) { - super(dtoFactory, x); - - platformComponents = new ArrayList<LinkDto>(); - for (Link<PlatformComponent> t: x.getPlatformComponents().links()) { - platformComponents.add(LinkDto.newInstance(dtoFactory, PlatformComponent.class, t)); - } - - applicationComponents = new ArrayList<LinkDto>(); - for (Link<ApplicationComponent> t: x.getApplicationComponents().links()) { - applicationComponents.add(LinkDto.newInstance(dtoFactory, ApplicationComponent.class, t)); - } - } - - private List<LinkDto> platformComponents; - private List<LinkDto> applicationComponents; - - @JsonInclude(Include.NON_EMPTY) - public List<LinkDto> getPlatformComponents() { - return platformComponents; - } - - @JsonInclude(Include.NON_EMPTY) - public List<LinkDto> getApplicationComponents() { - return applicationComponents; - } - - // --- building --- - - public static ApplicationComponentDto newInstance(DtoFactory dtoFactory, ApplicationComponent x) { - return new ApplicationComponentDto(dtoFactory, x); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ApplicationComponentTemplateDto.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ApplicationComponentTemplateDto.java b/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ApplicationComponentTemplateDto.java deleted file mode 100644 index e3b92f2..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ApplicationComponentTemplateDto.java +++ /dev/null @@ -1,44 +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 io.brooklyn.camp.dto; - -import io.brooklyn.camp.rest.util.DtoFactory; -import io.brooklyn.camp.spi.ApplicationComponentTemplate; - -public class ApplicationComponentTemplateDto extends ResourceDto { - - // defined as a constant so can be used in Swagger REST API annotations - public static final String CLASS_NAME = "io.brooklyn.camp.dto.ApplicationComponentTemplateDto"; - static { assert CLASS_NAME.equals(ApplicationComponentTemplateDto.class.getCanonicalName()); } - - protected ApplicationComponentTemplateDto() {} - protected ApplicationComponentTemplateDto(DtoFactory dtoFactory, ApplicationComponentTemplate x) { - super(dtoFactory, x); - // TODO set addl ACT fields - } - - // TODO add addl ACT fields - - // --- building --- - - public static ApplicationComponentTemplateDto newInstance(DtoFactory dtoFactory, ApplicationComponentTemplate x) { - return new ApplicationComponentTemplateDto(dtoFactory, x); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/dto/AssemblyDto.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/AssemblyDto.java b/camp/camp-server/src/main/java/io/brooklyn/camp/dto/AssemblyDto.java deleted file mode 100644 index 9f36ce6..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/AssemblyDto.java +++ /dev/null @@ -1,77 +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 io.brooklyn.camp.dto; - -import io.brooklyn.camp.rest.util.DtoFactory; -import io.brooklyn.camp.spi.ApplicationComponent; -import io.brooklyn.camp.spi.Assembly; -import io.brooklyn.camp.spi.Link; -import io.brooklyn.camp.spi.PlatformComponent; - -import java.util.ArrayList; -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; - -public class AssemblyDto extends ResourceDto { - - // defined as a constant so can be used in Swagger REST API annotations - public static final String CLASS_NAME = "io.brooklyn.camp.dto.AssemblyDto"; - static { assert CLASS_NAME.equals(AssemblyDto.class.getCanonicalName()); } - - protected AssemblyDto() {} - protected AssemblyDto(DtoFactory dtoFactory, Assembly x) { - super(dtoFactory, x); - - platformComponents = new ArrayList<LinkDto>(); - for (Link<PlatformComponent> t: x.getPlatformComponents().links()) { - platformComponents.add(LinkDto.newInstance(dtoFactory, PlatformComponent.class, t)); - } - - applicationComponents = new ArrayList<LinkDto>(); - for (Link<ApplicationComponent> t: x.getApplicationComponents().links()) { - applicationComponents.add(LinkDto.newInstance(dtoFactory, ApplicationComponent.class, t)); - } - } - - private List<LinkDto> platformComponents; - private List<LinkDto> applicationComponents; - - // TODO addl AssemblyTemplate fields -// "parameterDefinitionUri": URI, -// "pdpUri" : URI ? - - @JsonInclude(Include.NON_EMPTY) - public List<LinkDto> getPlatformComponents() { - return platformComponents; - } - - @JsonInclude(Include.NON_EMPTY) - public List<LinkDto> getApplicationComponents() { - return applicationComponents; - } - - // --- building --- - - public static AssemblyDto newInstance(DtoFactory dtoFactory, Assembly x) { - return new AssemblyDto(dtoFactory, x); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/dto/AssemblyTemplateDto.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/AssemblyTemplateDto.java b/camp/camp-server/src/main/java/io/brooklyn/camp/dto/AssemblyTemplateDto.java deleted file mode 100644 index 3aca985..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/AssemblyTemplateDto.java +++ /dev/null @@ -1,72 +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 io.brooklyn.camp.dto; - -import java.util.ArrayList; -import java.util.List; - -import io.brooklyn.camp.rest.util.DtoFactory; -import io.brooklyn.camp.spi.ApplicationComponentTemplate; -import io.brooklyn.camp.spi.AssemblyTemplate; -import io.brooklyn.camp.spi.Link; -import io.brooklyn.camp.spi.PlatformComponentTemplate; - -public class AssemblyTemplateDto extends ResourceDto { - - // defined as a constant so can be used in Swagger REST API annotations - public static final String CLASS_NAME = "io.brooklyn.camp.dto.AssemblyTemplateDto"; - static { assert CLASS_NAME.equals(AssemblyTemplateDto.class.getCanonicalName()); } - - protected AssemblyTemplateDto() {} - protected AssemblyTemplateDto(DtoFactory dtoFactory, AssemblyTemplate x) { - super(dtoFactory, x); - - platformComponentTemplates = new ArrayList<LinkDto>(); - for (Link<PlatformComponentTemplate> t: x.getPlatformComponentTemplates().links()) { - platformComponentTemplates.add(LinkDto.newInstance(dtoFactory, PlatformComponentTemplate.class, t)); - } - - applicationComponentTemplates = new ArrayList<LinkDto>(); - for (Link<ApplicationComponentTemplate> t: x.getApplicationComponentTemplates().links()) { - applicationComponentTemplates.add(LinkDto.newInstance(dtoFactory, ApplicationComponentTemplate.class, t)); - } - } - - private List<LinkDto> platformComponentTemplates; - private List<LinkDto> applicationComponentTemplates; - - // TODO addl AssemblyTemplate fields -// "parameterDefinitionUri": URI, -// "pdpUri" : URI ? - - public List<LinkDto> getPlatformComponentTemplates() { - return platformComponentTemplates; - } - - public List<LinkDto> getApplicationComponentTemplates() { - return applicationComponentTemplates; - } - - // --- building --- - - public static AssemblyTemplateDto newInstance(DtoFactory dtoFactory, AssemblyTemplate x) { - return new AssemblyTemplateDto(dtoFactory, x); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/dto/DtoBase.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/DtoBase.java b/camp/camp-server/src/main/java/io/brooklyn/camp/dto/DtoBase.java deleted file mode 100644 index f846eee..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/DtoBase.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 io.brooklyn.camp.dto; - -import org.apache.commons.lang3.builder.EqualsBuilder; -import org.apache.commons.lang3.builder.HashCodeBuilder; -import org.apache.commons.lang3.builder.ToStringBuilder; - -public class DtoBase { - - @Override public String toString() { return ToStringBuilder.reflectionToString(this); } - @Override public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } - @Override public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/dto/DtoCustomAttributes.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/DtoCustomAttributes.java b/camp/camp-server/src/main/java/io/brooklyn/camp/dto/DtoCustomAttributes.java deleted file mode 100644 index 38b9d94..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/DtoCustomAttributes.java +++ /dev/null @@ -1,66 +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 io.brooklyn.camp.dto; - -import java.util.Map; - -import brooklyn.util.collections.MutableMap; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.google.common.collect.ImmutableMap; - -public class DtoCustomAttributes extends DtoBase { - - private Map<String,Object> customAttributes = new MutableMap<String, Object>(); - - protected DtoCustomAttributes() {} - - public DtoCustomAttributes(Map<String,?> customAttributes) { - this.customAttributes = customAttributes==null ? ImmutableMap.<String, Object>of() : ImmutableMap.copyOf(customAttributes); - } - - @JsonIgnore - public Map<String, Object> getCustomAttributes() { - return customAttributes; - } - - // --- json --- - - @JsonInclude(Include.NON_EMPTY) - @JsonAnyGetter - private Map<String,Object> any() { - return customAttributes; - } - @JsonAnySetter - private void set(String name, Object value) { - customAttributes.put(name, value); - } - - // --- building --- - - protected void newInstanceCustomAttributes(Map<String,?> customAttributes) { - if (customAttributes!=null) - this.customAttributes.putAll(customAttributes); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/dto/LinkDto.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/LinkDto.java b/camp/camp-server/src/main/java/io/brooklyn/camp/dto/LinkDto.java deleted file mode 100644 index e6dc964..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/LinkDto.java +++ /dev/null @@ -1,72 +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 io.brooklyn.camp.dto; - -import io.brooklyn.camp.rest.util.DtoFactory; -import io.brooklyn.camp.spi.AbstractResource; -import io.brooklyn.camp.spi.Link; - -import java.util.Map; - -public class LinkDto extends DtoCustomAttributes { - - // defined as a constant so can be used in Swagger REST API annotations - public static final String CLASS_NAME = "io.brooklyn.camp.dto.LinkDto"; - static { assert CLASS_NAME.equals(LinkDto.class.getCanonicalName()); } - - private String href; - private String targetName; - - protected LinkDto() {} - - public String getHref() { - return href; - } - - public String getTargetName() { - return targetName; - } - - // --- building --- - - public static LinkDto newInstance(DtoFactory dtoFactory, Class<? extends AbstractResource> targetType, Link<?> x) { - return new LinkDto().newInstanceInitialization(dtoFactory, targetType, x); - } - - protected LinkDto newInstanceInitialization(DtoFactory dtoFactory, Class<? extends AbstractResource> targetType, Link<?> x) { - targetName = x.getName(); - - href = dtoFactory.uri(targetType, x.getId()); - return this; - } - - public static LinkDto newInstance(String href, String targetName) { - LinkDto x = new LinkDto(); - x.href = href; - x.targetName = targetName; - return x; - } - - public static LinkDto newInstance(String href, String targetName, Map<String,?> customAttributes) { - LinkDto x = newInstance(href, targetName); - x.newInstanceCustomAttributes(customAttributes); - return x; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/dto/PlatformComponentDto.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/PlatformComponentDto.java b/camp/camp-server/src/main/java/io/brooklyn/camp/dto/PlatformComponentDto.java deleted file mode 100644 index d9d1c85..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/PlatformComponentDto.java +++ /dev/null @@ -1,82 +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 io.brooklyn.camp.dto; - -import java.util.ArrayList; -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; - -import io.brooklyn.camp.rest.util.DtoFactory; -import io.brooklyn.camp.spi.ApplicationComponent; -import io.brooklyn.camp.spi.Link; -import io.brooklyn.camp.spi.PlatformComponent; - -public class PlatformComponentDto extends ResourceDto { - - // defined as a constant so can be used in Swagger REST API annotations - public static final String CLASS_NAME = "io.brooklyn.camp.dto.PlatformComponentDto"; - static { assert CLASS_NAME.equals(PlatformComponentDto.class.getCanonicalName()); } - - protected PlatformComponentDto() {} - protected PlatformComponentDto(DtoFactory dtoFactory, PlatformComponent x) { - super(dtoFactory, x); - setExternalManagementUri(x.getExternalManagementUri()); - platformComponents = new ArrayList<LinkDto>(); - for (Link<PlatformComponent> t: x.getPlatformComponents().links()) { - platformComponents.add(LinkDto.newInstance(dtoFactory, PlatformComponent.class, t)); - } - - applicationComponents = new ArrayList<LinkDto>(); - for (Link<ApplicationComponent> t: x.getApplicationComponents().links()) { - applicationComponents.add(LinkDto.newInstance(dtoFactory, ApplicationComponent.class, t)); - } - } - - private List<LinkDto> platformComponents; - private List<LinkDto> applicationComponents; - - private String externalManagementUri; - - @JsonInclude(Include.NON_EMPTY) - public List<LinkDto> getPlatformComponents() { - return platformComponents; - } - - @JsonInclude(Include.NON_EMPTY) - public List<LinkDto> getApplicationComponents() { - return applicationComponents; - } - - @JsonInclude(Include.NON_EMPTY) - public String getExternalManagementUri() { - return externalManagementUri; - } - private void setExternalManagementUri(String externalManagementUri) { - this.externalManagementUri = externalManagementUri; - } - - // --- building --- - - public static PlatformComponentDto newInstance(DtoFactory dtoFactory, PlatformComponent x) { - return new PlatformComponentDto(dtoFactory, x); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/dto/PlatformComponentTemplateDto.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/PlatformComponentTemplateDto.java b/camp/camp-server/src/main/java/io/brooklyn/camp/dto/PlatformComponentTemplateDto.java deleted file mode 100644 index 252e9f6..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/PlatformComponentTemplateDto.java +++ /dev/null @@ -1,44 +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 io.brooklyn.camp.dto; - -import io.brooklyn.camp.rest.util.DtoFactory; -import io.brooklyn.camp.spi.PlatformComponentTemplate; - -public class PlatformComponentTemplateDto extends ResourceDto { - - // defined as a constant so can be used in Swagger REST API annotations - public static final String CLASS_NAME = "io.brooklyn.camp.dto.PlatformComponentTemplateDto"; - static { assert CLASS_NAME.equals(PlatformComponentTemplateDto.class.getCanonicalName()); } - - protected PlatformComponentTemplateDto() {} - protected PlatformComponentTemplateDto(DtoFactory dtoFactory, PlatformComponentTemplate x) { - super(dtoFactory, x); - // TODO set addl PCT fields - } - - // TODO add addl PCT fields - - // --- building --- - - public static PlatformComponentTemplateDto newInstance(DtoFactory dtoFactory, PlatformComponentTemplate x) { - return new PlatformComponentTemplateDto(dtoFactory, x); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/dto/PlatformDto.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/PlatformDto.java b/camp/camp-server/src/main/java/io/brooklyn/camp/dto/PlatformDto.java deleted file mode 100644 index 0daf3ac..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/PlatformDto.java +++ /dev/null @@ -1,131 +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 io.brooklyn.camp.dto; - -import io.brooklyn.camp.rest.resource.ApidocRestResource; -import io.brooklyn.camp.rest.util.DtoFactory; -import io.brooklyn.camp.spi.ApplicationComponent; -import io.brooklyn.camp.spi.ApplicationComponentTemplate; -import io.brooklyn.camp.spi.Assembly; -import io.brooklyn.camp.spi.AssemblyTemplate; -import io.brooklyn.camp.spi.Link; -import io.brooklyn.camp.spi.PlatformComponent; -import io.brooklyn.camp.spi.PlatformComponentTemplate; -import io.brooklyn.camp.spi.PlatformRootSummary; - -import java.util.ArrayList; -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; - -public class PlatformDto extends ResourceDto { - - // defined as a constant so can be used in Swagger REST API annotations - public static final String CLASS_NAME = "io.brooklyn.camp.dto.PlatformDto"; - static { assert CLASS_NAME.equals(PlatformDto.class.getCanonicalName()); } - - protected PlatformDto() {} - protected PlatformDto(DtoFactory dtoFactory, PlatformRootSummary x) { - super(dtoFactory, x); - platformComponentTemplates = new ArrayList<LinkDto>(); - for (Link<PlatformComponentTemplate> t: dtoFactory.getPlatform().platformComponentTemplates().links()) { - platformComponentTemplates.add(LinkDto.newInstance(dtoFactory, PlatformComponentTemplate.class, t)); - } - - applicationComponentTemplates = new ArrayList<LinkDto>(); - for (Link<ApplicationComponentTemplate> t: dtoFactory.getPlatform().applicationComponentTemplates().links()) { - applicationComponentTemplates.add(LinkDto.newInstance(dtoFactory, ApplicationComponentTemplate.class, t)); - } - - assemblyTemplates = new ArrayList<LinkDto>(); - for (Link<AssemblyTemplate> t: dtoFactory.getPlatform().assemblyTemplates().links()) { - assemblyTemplates.add(LinkDto.newInstance(dtoFactory, AssemblyTemplate.class, t)); - } - - platformComponents = new ArrayList<LinkDto>(); - for (Link<PlatformComponent> t: dtoFactory.getPlatform().platformComponents().links()) { - platformComponents.add(LinkDto.newInstance(dtoFactory, PlatformComponent.class, t)); - } - - applicationComponents = new ArrayList<LinkDto>(); - for (Link<ApplicationComponent> t: dtoFactory.getPlatform().applicationComponents().links()) { - applicationComponents.add(LinkDto.newInstance(dtoFactory, ApplicationComponent.class, t)); - } - - assemblies = new ArrayList<LinkDto>(); - for (Link<Assembly> t: dtoFactory.getPlatform().assemblies().links()) { - assemblies.add(LinkDto.newInstance(dtoFactory, Assembly.class, t)); - } - - // TODO set custom fields - - apidoc = LinkDto.newInstance( - dtoFactory.getUriFactory().uriOfRestResource(ApidocRestResource.class), - "API documentation"); - } - - // TODO add custom fields - private List<LinkDto> assemblyTemplates; - private List<LinkDto> platformComponentTemplates; - private List<LinkDto> applicationComponentTemplates; - private List<LinkDto> assemblies; - private List<LinkDto> platformComponents; - private List<LinkDto> applicationComponents; - - // non-CAMP, but useful - private LinkDto apidoc; - - public List<LinkDto> getAssemblyTemplates() { - return assemblyTemplates; - } - - public List<LinkDto> getPlatformComponentTemplates() { - return platformComponentTemplates; - } - - public List<LinkDto> getApplicationComponentTemplates() { - return applicationComponentTemplates; - } - - public List<LinkDto> getAssemblies() { - return assemblies; - } - - @JsonInclude(Include.NON_EMPTY) - public List<LinkDto> getPlatformComponents() { - return platformComponents; - } - - @JsonInclude(Include.NON_EMPTY) - public List<LinkDto> getApplicationComponents() { - return applicationComponents; - } - - public LinkDto getApidoc() { - return apidoc; - } - - // --- building --- - - public static PlatformDto newInstance(DtoFactory dtoFactory, PlatformRootSummary x) { - return new PlatformDto(dtoFactory, x); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ResourceDto.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ResourceDto.java b/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ResourceDto.java deleted file mode 100644 index 5383cf5..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/dto/ResourceDto.java +++ /dev/null @@ -1,112 +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 io.brooklyn.camp.dto; - -import io.brooklyn.camp.commontypes.RepresentationSkew; -import io.brooklyn.camp.rest.util.DtoFactory; -import io.brooklyn.camp.spi.AbstractResource; - -import java.util.Date; -import java.util.List; - -import brooklyn.util.time.Time; - -import com.fasterxml.jackson.annotation.JsonGetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.databind.util.ISO8601Utils; - -public class ResourceDto extends DtoCustomAttributes { - - protected ResourceDto() {} - protected ResourceDto(DtoFactory dtoFactory, AbstractResource x) { - type = x.getType(); - name = x.getName(); - - description = x.getDescription(); - setCreated(x.getCreated()); - tags = x.getTags(); - representationSkew = x.getRepresentationSkew(); - - if (x.getCustomAttributes()!=null && !x.getCustomAttributes().isEmpty()) - newInstanceCustomAttributes(x.getCustomAttributes()); - - uri = dtoFactory.uri(x); - } - - private String uri; - private String type; - - private String name; - private String description; - private Date created; - private List<String> tags; - private RepresentationSkew representationSkew; - - public String getUri() { - return uri; - } - - public String getName() { - return name; - } - - @JsonInclude(Include.NON_NULL) - public String getDescription() { - return description; - } - - @JsonGetter("created") - public String getCreatedAsString() { - return created==null ? null : ISO8601Utils.format(created); - } - - @JsonSetter - private void setCreated(Date created) { - this.created = Time.dropMilliseconds(created); - } - - @JsonIgnore - public Date getCreated() { - return created; - } - - @JsonInclude(Include.NON_EMPTY) - public List<String> getTags() { - return tags; - } - - public String getType() { - return type; - } - - @JsonInclude(Include.NON_NULL) - public RepresentationSkew getRepresentationSkew() { - return representationSkew; - } - - // --- building --- - - public static ResourceDto newInstance(DtoFactory dtoFactory, AbstractResource x) { - return new ResourceDto(dtoFactory, x); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/AbstractCampRestResource.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/AbstractCampRestResource.java b/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/AbstractCampRestResource.java deleted file mode 100644 index dcc5c14..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/AbstractCampRestResource.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 io.brooklyn.camp.rest.resource; - -import io.brooklyn.camp.CampPlatform; -import io.brooklyn.camp.rest.util.CampRestContext; -import io.brooklyn.camp.rest.util.DtoFactory; -import io.brooklyn.camp.rest.util.WebResourceUtils; -import io.brooklyn.camp.spi.AbstractResource; -import io.brooklyn.camp.spi.collection.ResourceLookup; - -import javax.servlet.ServletContext; -import javax.ws.rs.core.Context; - -public abstract class AbstractCampRestResource { - - // can be injected by jersey when not injected manually - // (seems there is no way to make this optional so note it _must_ be injected; if needed - // see notes on workarounds for test frameworks in original AbstractBrooklynRestResource) - @Context ServletContext servletContext; - - private CampRestContext campRestContext; - - public synchronized CampRestContext context() { - if (campRestContext!=null) return campRestContext; - campRestContext = new CampRestContext(servletContext); - return campRestContext; - } - - public CampPlatform camp() { return context().camp(); } - public DtoFactory dto() { return context().dto(); } - - public static <T extends AbstractResource> T lookup(ResourceLookup<T> list, String id) { - T result = list.get(id); - if (result==null) - throw WebResourceUtils.notFound("No such element: %s", id); - return result; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/ApidocRestResource.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/ApidocRestResource.java b/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/ApidocRestResource.java deleted file mode 100644 index 98d73c5..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/ApidocRestResource.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 io.brooklyn.camp.rest.resource; - -import javax.ws.rs.Path; - -import org.apache.brooklyn.rest.apidoc.Apidoc; - -@Path(ApidocRestResource.API_URI_PATH) -@Apidoc("Web API Documentation") -public class ApidocRestResource extends org.apache.brooklyn.rest.apidoc.ApidocResource { - - public static final String API_URI_PATH = PlatformRestResource.CAMP_URI_PATH + "/apidoc"; - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/ApplicationComponentRestResource.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/ApplicationComponentRestResource.java b/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/ApplicationComponentRestResource.java deleted file mode 100644 index e2f26e5..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/ApplicationComponentRestResource.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 io.brooklyn.camp.rest.resource; - -import io.brooklyn.camp.dto.ApplicationComponentDto; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; - -import org.apache.brooklyn.rest.apidoc.Apidoc; - -import com.wordnik.swagger.core.ApiOperation; -import com.wordnik.swagger.core.ApiParam; - -@Path(ApplicationComponentRestResource.URI_PATH) -@Apidoc("Application Component resources") -@Produces("application/json") -public class ApplicationComponentRestResource extends AbstractCampRestResource { - - public static final String URI_PATH = PlatformRestResource.CAMP_URI_PATH + "/application-components"; - - @Path("/{id}") - @ApiOperation(value = "Get a specific application component", - responseClass = ApplicationComponentDto.CLASS_NAME) - @GET - public ApplicationComponentDto get( - @ApiParam(value = "ID of item being retrieved", required = true) - @PathParam("id") String id) { - return dto().adapt(lookup(camp().applicationComponents(), id)); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/ApplicationComponentTemplateRestResource.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/ApplicationComponentTemplateRestResource.java b/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/ApplicationComponentTemplateRestResource.java deleted file mode 100644 index 992a579..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/ApplicationComponentTemplateRestResource.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 io.brooklyn.camp.rest.resource; - -import io.brooklyn.camp.dto.ApplicationComponentTemplateDto; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; - -import org.apache.brooklyn.rest.apidoc.Apidoc; - -import com.wordnik.swagger.core.ApiOperation; -import com.wordnik.swagger.core.ApiParam; - -@Path(ApplicationComponentTemplateRestResource.URI_PATH) -@Apidoc("Application Component Template resources") -@Produces("application/json") -public class ApplicationComponentTemplateRestResource extends AbstractCampRestResource { - - public static final String URI_PATH = PlatformRestResource.CAMP_URI_PATH + "/application-component-templates"; - - @Path("/{id}") - @ApiOperation(value = "Get a specific application component template", - responseClass = ApplicationComponentTemplateDto.CLASS_NAME) - @GET - public ApplicationComponentTemplateDto get( - @ApiParam(value = "ID of item being retrieved", required = true) - @PathParam("id") String id) { - return dto().adapt(lookup(camp().applicationComponentTemplates(), id)); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/AssemblyRestResource.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/AssemblyRestResource.java b/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/AssemblyRestResource.java deleted file mode 100644 index 721abea..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/AssemblyRestResource.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 io.brooklyn.camp.rest.resource; - -import io.brooklyn.camp.dto.AssemblyDto; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; - -import org.apache.brooklyn.rest.apidoc.Apidoc; - -import com.wordnik.swagger.core.ApiOperation; -import com.wordnik.swagger.core.ApiParam; - -@Path(AssemblyRestResource.URI_PATH) -@Apidoc("Assembly resources") -@Produces("application/json") -public class AssemblyRestResource extends AbstractCampRestResource { - -// private static final Logger log = LoggerFactory.getLogger(AssemblyRestResource.class); - - public static final String URI_PATH = PlatformRestResource.CAMP_URI_PATH + "/assemblies"; - - @Path("/{id}") - @ApiOperation(value = "Get a specific assembly", - responseClass = AssemblyDto.CLASS_NAME) - @GET - public AssemblyDto get( - @ApiParam(value = "ID of item being retrieved", required = true) - @PathParam("id") String id) { - return dto().adapt(lookup(camp().assemblies(), id)); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/AssemblyTemplateRestResource.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/AssemblyTemplateRestResource.java b/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/AssemblyTemplateRestResource.java deleted file mode 100644 index 104295c..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/AssemblyTemplateRestResource.java +++ /dev/null @@ -1,88 +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 io.brooklyn.camp.rest.resource; - -import io.brooklyn.camp.dto.AssemblyTemplateDto; -import io.brooklyn.camp.spi.Assembly; -import io.brooklyn.camp.spi.AssemblyTemplate; - -import java.net.URI; - -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.core.Context; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.apache.brooklyn.rest.apidoc.Apidoc; -import brooklyn.util.exceptions.Exceptions; - -import com.wordnik.swagger.core.ApiOperation; -import com.wordnik.swagger.core.ApiParam; - -@Path(AssemblyTemplateRestResource.URI_PATH) -@Apidoc("Assembly Template resources") -@Produces("application/json") -public class AssemblyTemplateRestResource extends AbstractCampRestResource { - - private static final Logger log = LoggerFactory.getLogger(AssemblyTemplateRestResource.class); - - public static final String URI_PATH = PlatformRestResource.CAMP_URI_PATH + "/assembly-templates"; - - @Path("/{id}") - @ApiOperation(value = "Get a specific assembly template", - responseClass = AssemblyTemplateDto.CLASS_NAME) - @GET - public AssemblyTemplateDto get( - @ApiParam(value = "ID of item being retrieved", required = true) - @PathParam("id") String id) { - return dto().adapt(lookup(camp().assemblyTemplates(), id)); - } - - @Path("/{id}") - @ApiOperation(value = "Instantiate a specific assembly template" - // TODO AssemblyDto, or location thereto? -// , responseClass = AssemblyTemplateDto.CLASS_NAME - ) - @POST - public Response post( - @Context UriInfo info, - @ApiParam(value = "ID of item being retrieved", required = true) - @PathParam("id") String id) { - try { - log.info("CAMP REST instantiating AT "+id); - AssemblyTemplate at = lookup(camp().assemblyTemplates(), id); - Assembly assembly = at.getInstantiator().newInstance().instantiate(at, camp()); - // see http://stackoverflow.com/questions/13702481/javax-response-prepends-method-path-when-setting-location-header-path-on-status - // for why we have to return absolute path - URI assemblyUri = info.getBaseUriBuilder().path( dto().adapt(assembly).getUri() ).build(); - return Response.created(assemblyUri).build(); - } catch (Exception e) { - log.error("Unable to create AT "+id+": "+e); - throw Exceptions.propagate(e); - } - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/PlatformComponentRestResource.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/PlatformComponentRestResource.java b/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/PlatformComponentRestResource.java deleted file mode 100644 index a2718f6..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/PlatformComponentRestResource.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 io.brooklyn.camp.rest.resource; - -import io.brooklyn.camp.dto.PlatformComponentDto; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; - -import org.apache.brooklyn.rest.apidoc.Apidoc; - -import com.wordnik.swagger.core.ApiOperation; -import com.wordnik.swagger.core.ApiParam; - -@Path(PlatformComponentRestResource.URI_PATH) -@Apidoc("Platform Component resources") -@Produces("application/json") -public class PlatformComponentRestResource extends AbstractCampRestResource { - - public static final String URI_PATH = PlatformRestResource.CAMP_URI_PATH + "/platform-components"; - - @Path("/{id}") - @ApiOperation(value = "Get a specific platform component", - responseClass = PlatformComponentDto.CLASS_NAME) - @GET - public PlatformComponentDto get( - @ApiParam(value = "ID of item being retrieved", required = true) - @PathParam("id") String id) { - return dto().adapt(lookup(camp().platformComponents(), id)); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/PlatformComponentTemplateRestResource.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/PlatformComponentTemplateRestResource.java b/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/PlatformComponentTemplateRestResource.java deleted file mode 100644 index 9d2112d..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/PlatformComponentTemplateRestResource.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 io.brooklyn.camp.rest.resource; - -import io.brooklyn.camp.dto.PlatformComponentTemplateDto; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; - -import org.apache.brooklyn.rest.apidoc.Apidoc; - -import com.wordnik.swagger.core.ApiOperation; -import com.wordnik.swagger.core.ApiParam; - -@Path(PlatformComponentTemplateRestResource.URI_PATH) -@Apidoc("Platform Component Template resources") -@Produces("application/json") -public class PlatformComponentTemplateRestResource extends AbstractCampRestResource { - - public static final String URI_PATH = PlatformRestResource.CAMP_URI_PATH + "/platform-component-templates"; - - @Path("/{id}") - @ApiOperation(value = "Get a specific platform component template", - responseClass = PlatformComponentTemplateDto.CLASS_NAME) - @GET - public PlatformComponentTemplateDto get( - @ApiParam(value = "ID of item being retrieved", required = true) - @PathParam("id") String id) { - return dto().adapt(lookup(camp().platformComponentTemplates(), id)); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/PlatformRestResource.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/PlatformRestResource.java b/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/PlatformRestResource.java deleted file mode 100644 index edf4bc5..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/resource/PlatformRestResource.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 io.brooklyn.camp.rest.resource; - -import io.brooklyn.camp.dto.PlatformDto; -import io.brooklyn.camp.rest.util.WebResourceUtils; -import io.brooklyn.camp.spi.AssemblyTemplate; - -import java.io.InputStream; -import java.io.StringReader; - -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.apache.brooklyn.rest.apidoc.Apidoc; - -import com.wordnik.swagger.core.ApiOperation; - -//import io.brooklyn.camp.rest.apidoc.Apidoc; - -@Path(PlatformRestResource.CAMP_URI_PATH) -@Apidoc("Platform (root)") -@Produces("application/json") -public class PlatformRestResource extends AbstractCampRestResource { - - private static final Logger log = LoggerFactory.getLogger(PlatformRestResource.class); - - public static final String CAMP_URI_PATH = "/camp/v11"; - - @ApiOperation(value = "Return the Platform (root) resource", - responseClass = PlatformDto.CLASS_NAME) - @GET - public PlatformDto get() { - return dto().adapt(camp().root()); - } - - @POST - @Consumes({MediaType.APPLICATION_JSON}) - public Response postJson(@Context UriInfo info, String json) { - return postYaml(info, json); - } - - @POST - @Consumes({"application/x-yaml"}) - public Response postYaml(@Context UriInfo info, String yaml) { - log.debug("YAML pdp:\n"+yaml); - AssemblyTemplate template = camp().pdp().registerDeploymentPlan(new StringReader(yaml)); - return created(info, template); - } - - @POST - @Consumes({"application/x-tar", "application/x-tgz", "application/x-zip"}) - public Response postArchive(@Context UriInfo info, InputStream archiveInput) { - log.debug("ARCHIVE pdp"); - AssemblyTemplate template = camp().pdp().registerPdpFromArchive(archiveInput); - return created(info, template); - } - - protected Response created(UriInfo info, AssemblyTemplate template) { - return WebResourceUtils.created(info, dto().adapt(template).getUri()); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/CampJsons.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/CampJsons.java b/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/CampJsons.java deleted file mode 100644 index 1cb39bd..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/CampJsons.java +++ /dev/null @@ -1,39 +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 io.brooklyn.camp.rest.util; - -import brooklyn.util.exceptions.Exceptions; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; - -public class CampJsons { - - public static String prettyJson(Object o) { - try { - ObjectMapper mapper = new ObjectMapper(); - mapper.enable(SerializationFeature.INDENT_OUTPUT); - return mapper.writeValueAsString(o); - } catch (JsonProcessingException e) { - throw Exceptions.propagate(e); - } - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/CampRestContext.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/CampRestContext.java b/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/CampRestContext.java deleted file mode 100644 index 817a621..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/CampRestContext.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 io.brooklyn.camp.rest.util; - -import javax.servlet.ServletContext; - -import com.google.common.base.Preconditions; - -import io.brooklyn.camp.CampPlatform; -import io.brooklyn.camp.CampServer; - -public class CampRestContext { - - private final ServletContext servletContext; - private CampPlatform platform; - private DtoFactory dto; - - public CampRestContext(ServletContext servletContext) { - this.servletContext = servletContext; - } - - public synchronized CampPlatform camp() { - if (platform!=null) return platform; - platform = (CampPlatform) servletContext.getAttribute(CampServer.CAMP_PLATFORM_ATTRIBUTE); - return Preconditions.checkNotNull(platform, "CAMP platform instance not available from ServletContext"); - } - - public DtoFactory dto() { - if (dto!=null) return dto; - dto = (DtoFactory) servletContext.getAttribute(CampServer.DTO_FACTORY); - return Preconditions.checkNotNull(dto, "CAMP DTO factory instance not available from ServletContext"); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/CampRestGuavas.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/CampRestGuavas.java b/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/CampRestGuavas.java deleted file mode 100644 index ac475d9..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/CampRestGuavas.java +++ /dev/null @@ -1,32 +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 io.brooklyn.camp.rest.util; - -import io.brooklyn.camp.spi.AbstractResource; - -import com.google.common.base.Function; - -public class CampRestGuavas { - - public static final Function<AbstractResource,String> IDENTITY_OF_REST_RESOURCE = - new Function<AbstractResource,String>() { - public String apply(AbstractResource input) { return input.getId(); } - }; - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d782f34/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/DtoFactory.java ---------------------------------------------------------------------- diff --git a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/DtoFactory.java b/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/DtoFactory.java deleted file mode 100644 index ccb00b9..0000000 --- a/camp/camp-server/src/main/java/io/brooklyn/camp/rest/util/DtoFactory.java +++ /dev/null @@ -1,176 +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 io.brooklyn.camp.rest.util; - -import io.brooklyn.camp.CampPlatform; -import io.brooklyn.camp.dto.ApplicationComponentDto; -import io.brooklyn.camp.dto.ApplicationComponentTemplateDto; -import io.brooklyn.camp.dto.AssemblyDto; -import io.brooklyn.camp.dto.AssemblyTemplateDto; -import io.brooklyn.camp.dto.PlatformComponentDto; -import io.brooklyn.camp.dto.PlatformComponentTemplateDto; -import io.brooklyn.camp.dto.PlatformDto; -import io.brooklyn.camp.rest.resource.AbstractCampRestResource; -import io.brooklyn.camp.rest.resource.ApplicationComponentRestResource; -import io.brooklyn.camp.rest.resource.ApplicationComponentTemplateRestResource; -import io.brooklyn.camp.rest.resource.AssemblyRestResource; -import io.brooklyn.camp.rest.resource.AssemblyTemplateRestResource; -import io.brooklyn.camp.rest.resource.PlatformComponentRestResource; -import io.brooklyn.camp.rest.resource.PlatformComponentTemplateRestResource; -import io.brooklyn.camp.rest.resource.PlatformRestResource; -import io.brooklyn.camp.spi.AbstractResource; -import io.brooklyn.camp.spi.ApplicationComponent; -import io.brooklyn.camp.spi.ApplicationComponentTemplate; -import io.brooklyn.camp.spi.Assembly; -import io.brooklyn.camp.spi.AssemblyTemplate; -import io.brooklyn.camp.spi.PlatformComponent; -import io.brooklyn.camp.spi.PlatformComponentTemplate; -import io.brooklyn.camp.spi.PlatformRootSummary; - -import java.util.Map; - -import javax.ws.rs.Path; - -import brooklyn.util.collections.MutableMap; -import brooklyn.util.net.Urls; - -import com.google.common.base.Function; -import com.google.common.base.Preconditions; - -public class DtoFactory { - - private CampPlatform platform; - private String uriBase; - - private UriFactory uriFactory; - - public DtoFactory(CampPlatform campPlatform, String uriBase) { - this.platform = campPlatform; - this.uriBase = uriBase; - - uriFactory = new UriFactory(); - uriFactory.registerIdentifiableRestResource(PlatformRootSummary.class, PlatformRestResource.class); - uriFactory.registerIdentifiableRestResource(AssemblyTemplate.class, AssemblyTemplateRestResource.class); - uriFactory.registerIdentifiableRestResource(PlatformComponentTemplate.class, PlatformComponentTemplateRestResource.class); - uriFactory.registerIdentifiableRestResource(ApplicationComponentTemplate.class, ApplicationComponentTemplateRestResource.class); - uriFactory.registerIdentifiableRestResource(Assembly.class, AssemblyRestResource.class); - uriFactory.registerIdentifiableRestResource(PlatformComponent.class, PlatformComponentRestResource.class); - uriFactory.registerIdentifiableRestResource(ApplicationComponent.class, ApplicationComponentRestResource.class); - } - - public CampPlatform getPlatform() { - return platform; - } - - public UriFactory getUriFactory() { - return uriFactory; - } - - public String uri(AbstractResource x) { - return getUriFactory().uri(x); - } - - public String uri(Class<? extends AbstractResource> targetType, String id) { - return getUriFactory().uri(targetType, id); - } - - public AssemblyTemplateDto adapt(AssemblyTemplate assemblyTemplate) { - return AssemblyTemplateDto.newInstance(this, assemblyTemplate); - } - public PlatformComponentTemplateDto adapt(PlatformComponentTemplate platformComponentTemplate) { - return PlatformComponentTemplateDto.newInstance(this, platformComponentTemplate); - } - public ApplicationComponentTemplateDto adapt(ApplicationComponentTemplate applicationComponentTemplate) { - return ApplicationComponentTemplateDto.newInstance(this, applicationComponentTemplate); - } - - public AssemblyDto adapt(Assembly assembly) { - return AssemblyDto.newInstance(this, assembly); - } - public PlatformComponentDto adapt(PlatformComponent platformComponent) { - return PlatformComponentDto.newInstance(this, platformComponent); - } - public ApplicationComponentDto adapt(ApplicationComponent applicationComponent) { - return ApplicationComponentDto.newInstance(this, applicationComponent); - } - - public PlatformDto adapt(PlatformRootSummary root) { - return PlatformDto.newInstance(this, root); - } - - public class UriFactory { - /** registry of generating a URI given an object */ - Map<Class<?>,Function<Object,String>> registryResource = new MutableMap<Class<?>, Function<Object,String>>(); - /** registry of generating a URI given an ID */ - Map<Class<?>,Function<String,String>> registryId = new MutableMap<Class<?>, Function<String,String>>(); - - /** registers a function which generates a URI given a type; note that this method cannot be used for links */ - @SuppressWarnings("unchecked") - public synchronized <T> void registerResourceUriFunction(Class<T> type, Function<T,String> fnUri) { - registryResource.put(type, (Function<Object, String>) fnUri); - } - - /** registers a type to generate a URI which concatenates the given base with the - * result of the given function to generate an ID against an object of the given type */ - public synchronized <T> void registerIdentityFunction(Class<T> type, final String resourceTypeUriBase, final Function<T,String> fnIdentity) { - final Function<String,String> fnUriFromId = new Function<String,String>() { - public String apply(String id) { - return Urls.mergePaths(resourceTypeUriBase, id); - } - }; - registryId.put(type, (Function<String, String>) fnUriFromId); - registerResourceUriFunction(type, new Function<T,String>() { - public String apply(T input) { - return fnUriFromId.apply(fnIdentity.apply(input)); - } - }); - } - - /** registers a CAMP Resource type against a RestResource, generating the URI - * by concatenating the @Path annotation on the RestResource with the ID of the CAMP resource */ - @SuppressWarnings({ "unchecked", "rawtypes" }) - public synchronized <T extends AbstractResource> void registerIdentifiableRestResource(Class<T> type, Class<? extends AbstractCampRestResource> restResource) { - registerIdentityFunction(type, - uriOfRestResource(restResource), - (Function) CampRestGuavas.IDENTITY_OF_REST_RESOURCE); - } - - public String uri(Class<? extends AbstractResource> targetType, String id) { - return Preconditions.checkNotNull(registryId.get(targetType), - "No REST ID converter registered for %s (id %s)", targetType, id) - .apply(id); - } - - public String uri(AbstractResource x) { - return Preconditions.checkNotNull(registryResource.get(x.getClass()), - "No REST converter registered for %s (%s)", x.getClass(), x) - .apply(x); - } - - public String uriOfRestResource(Class<?> restResourceClass) { - return Urls.mergePaths(uriBase, - Preconditions.checkNotNull(restResourceClass.getAnnotation(Path.class), - "No @Path on type %s", restResourceClass) - .value()); - } - - - } - -}
