All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.appslandia.plum.defaults.DefaultDebugController Maven / Gradle / Ivy

// The MIT License (MIT)
// Copyright © 2015 AppsLandia. All rights reserved.

// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:

// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.

// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

package com.appslandia.plum.defaults;

import java.io.PrintWriter;
import java.net.InetAddress;
import java.nio.charset.StandardCharsets;
import java.util.TreeSet;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.inject.Inject;
import javax.servlet.FilterRegistration;
import javax.servlet.ServletRegistration;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.appslandia.common.base.DeployEnv;
import com.appslandia.common.base.TextBuilder;
import com.appslandia.common.base.ToStringBuilder;
import com.appslandia.common.cdi.AnyLiteral;
import com.appslandia.common.utils.CollectionUtils;
import com.appslandia.common.utils.MimeTypes;
import com.appslandia.plum.base.ActionResult;
import com.appslandia.plum.base.AppConfig;
import com.appslandia.plum.base.Controller;
import com.appslandia.plum.base.HttpGet;
import com.appslandia.plum.results.TextResult;

/**
 *
 * @author Loc Ha
 *
 */
@ApplicationScoped
@Controller("debug")
public class DefaultDebugController {

	@Inject
	protected BeanManager beanManager;

	@Inject
	protected AppConfig appConfig;

	@HttpGet
	public ActionResult deployEnv() {
		return new TextResult(DeployEnv.getCurrent().getName(), MimeTypes.TEXT_PLAIN);
	}

	@HttpGet
	public ActionResult isEnableDebug() {
		return new TextResult(Boolean.toString(this.appConfig.isEnableDebug()), MimeTypes.TEXT_PLAIN);
	}

	@HttpGet
	public ActionResult beanInfo() {
		TextBuilder sb = new TextBuilder();

		TreeSet> sortedBeans = new TreeSet<>((b1, b2) -> b1.getBeanClass().getName().compareTo(b2.getBeanClass().getName()));
		sortedBeans.addAll(this.beanManager.getBeans(Object.class, AnyLiteral.IMPL));

		for (Bean bean : sortedBeans) {
			sb.append(bean.getBeanClass()).append(", scope=").append(bean.getScope().getSimpleName()).append(", qualifiers=")
					.append(CollectionUtils.toElements(bean.getQualifiers()));
			sb.appendln();
		}
		return new TextResult(sb.toString(), MimeTypes.TEXT_PLAIN);
	}

	@HttpGet
	public void servletInfo(HttpServletRequest request, HttpServletResponse response) throws Exception {
		response.setContentType(MimeTypes.TEXT_PLAIN);
		response.setCharacterEncoding(StandardCharsets.UTF_8.name());

		PrintWriter out = response.getWriter();

		for (ServletRegistration registration : request.getServletContext().getServletRegistrations().values()) {
			out.append("servletName=").append(registration.getName()).append(", servletClass=").append(registration.getClassName()).append(", urlPatterns=")
					.append(CollectionUtils.toElements(registration.getMappings()));
			out.println();
		}
		out.println();

		for (FilterRegistration registration : request.getServletContext().getFilterRegistrations().values()) {
			out.append("filterName=").append(registration.getName()).append(", filterClass=").append(registration.getClassName()).append(", urlPatterns=")
					.append(CollectionUtils.toElements(registration.getUrlPatternMappings())).append(", servletNames=")
					.append(CollectionUtils.toElements(registration.getServletNameMappings()));
			out.println();
		}
		out.flush();
	}

	@HttpGet
	public void hostInfo(HttpServletRequest request, HttpServletResponse response) throws Exception {
		response.setContentType(MimeTypes.TEXT_PLAIN);
		response.setCharacterEncoding(StandardCharsets.UTF_8.name());

		PrintWriter out = response.getWriter();

		try {
			out.append("InetAddress.getLocalHost(): ").append(InetAddress.getLocalHost().toString());
			out.println();
		} catch (Exception ex) {
			out.append("InetAddress.getLocalHost(): ").append(ex.getMessage());
			out.println();
		}
		out.println();

		out.append("request.getServerName(): ").append(request.getServerName());
		out.println();
		out.append("request.getServerPort(): ").append(String.valueOf(request.getServerPort()));
		out.println();
		out.append("request.getLocalName(): ").append(request.getLocalName());
		out.println();
		out.append("request.getLocalPort(): ").append(String.valueOf(request.getLocalPort()));
		out.println();
		out.append("request.getRemoteHost(): ").append(request.getRemoteHost());
		out.println();
		out.append("request.getRemotePort(): ").append(String.valueOf(request.getRemotePort()));
		out.println();
		out.append("request.getRemoteAddr(): ").append(request.getRemoteAddr());
		out.println();

		out.println();
		out.append("request.getHeaders(): ").append(new ToStringBuilder().toStringHeaders(request));
		out.flush();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy