Search in sources :

Example 16 with Path

use of org.apache.tapestry5.annotations.Path in project tapestry-5 by apache.

the class DefaultOpenApiTypeDescriber method describe.

@Override
public void describe(JSONObject description, Parameter parameter) {
    describeType(description, parameter.getType());
    // According to the OpenAPI 3 documentation, path parameters are always required.
    final RequestParameter requestParameter = parameter.getAnnotation(RequestParameter.class);
    if (requestParameter == null || requestParameter != null && !requestParameter.allowBlank()) {
        description.put("required", true);
    }
}
Also used : RequestParameter(org.apache.tapestry5.annotations.RequestParameter)

Example 17 with Path

use of org.apache.tapestry5.annotations.Path in project tapestry-5 by apache.

the class ExceptionReportWriterImpl method writeReport.

@Override
public void writeReport(final PrintWriter writer, ExceptionAnalysis analysis) {
    writer.printf("EXCEPTION STACK:%n%n");
    // Figure out what all the property names are so that we can set the width of the column that lists
    // property names.
    Flow<String> propertyNames = F.flow(analysis.getExceptionInfos()).mapcat(EXCEPTION_INFO_TO_PROPERTY_NAMES).append("Exception", "Message");
    PropertyWriter pw = newPropertyWriter(writer, propertyNames);
    boolean first = true;
    for (ExceptionInfo info : analysis.getExceptionInfos()) {
        if (first) {
            writer.println();
            first = false;
        }
        pw.write("Exception", info.getClassName());
        pw.write("Message", info.getMessage());
        for (String name : info.getPropertyNames()) {
            pw.write(name, info.getProperty(name));
        }
        if (!info.getStackTrace().isEmpty()) {
            writer.printf("%n  Stack trace:%n%n");
            for (StackTraceElement e : info.getStackTrace()) {
                writer.printf("  - %s%n", e.toString());
            }
        }
        writer.println();
    }
    Request request = requestGlobals.getRequest();
    if (request != null) {
        // New PropertyWriter based on the lengths of parameter names and header names, and a sample of
        // the literal keys.
        pw = newPropertyWriter(writer, F.flow(request.getParameterNames()).concat(request.getHeaderNames()).append("serverName", "removeHost"));
        writer.printf("REQUEST:%n%nBasic Information:%n%n");
        List<String> flags = CollectionFactory.newList();
        if (request.isXHR()) {
            flags.add("XHR");
        }
        if (request.isRequestedSessionIdValid()) {
            flags.add("requestedSessionIdValid");
        }
        if (request.isSecure()) {
            flags.add("secure");
        }
        pw.write("contextPath", contextPath);
        if (!flags.isEmpty()) {
            pw.write("flags", InternalUtils.joinSorted(flags));
        }
        pw.write("method", request.getMethod());
        pw.write("path", request.getPath());
        pw.write("locale", request.getLocale());
        pw.write("serverName", request.getServerName());
        pw.write("remoteHost", request.getRemoteHost());
        writer.printf("%nHeaders:%n%n");
        for (String name : request.getHeaderNames()) {
            pw.write(name, request.getHeader(name));
        }
        if (!request.getParameterNames().isEmpty()) {
            writer.printf("%nParameters:%n");
            for (String name : request.getParameterNames()) {
                // TODO: Support multi-value parameters
                pw.write(name, request.getParameters(name));
            }
        }
        Session session = request.getSession(false);
        if (session != null) {
            pw = newPropertyWriter(writer, session.getAttributeNames());
            writer.printf("%nSESSION:%n%n");
            for (String name : session.getAttributeNames()) {
                pw.write(name, session.getAttribute(name));
            }
        }
    }
    writer.printf("%nSYSTEM INFORMATION:");
    Runtime runtime = Runtime.getRuntime();
    writer.printf("%n%nMemory:%n  %,15d bytes free%n  %,15d bytes total%n  %,15d bytes max%n", runtime.freeMemory(), runtime.totalMemory(), runtime.maxMemory());
    Thread[] threads = TapestryInternalUtils.getAllThreads();
    int maxThreadNameLength = 0;
    for (Thread t : threads) {
        maxThreadNameLength = Math.max(maxThreadNameLength, t.getName().length());
    }
    String format = "%n%s %" + maxThreadNameLength + "s %s";
    writer.printf("%n%,d Threads:", threads.length);
    for (Thread t : threads) {
        writer.printf(format, Thread.currentThread() == t ? "*" : " ", t.getName(), t.getState().name());
        if (t.isDaemon()) {
            writer.write(", daemon");
        }
        if (!t.isAlive()) {
            writer.write(", NOT alive");
        }
        if (t.isInterrupted()) {
            writer.write(", interrupted");
        }
        if (t.getPriority() != Thread.NORM_PRIORITY) {
            writer.printf(", priority %d", t.getPriority());
        }
    }
    // Finish the final line.
    writer.println();
}
Also used : Request(org.apache.tapestry5.http.services.Request) ExceptionInfo(org.apache.tapestry5.ioc.services.ExceptionInfo) Session(org.apache.tapestry5.http.services.Session)

Example 18 with Path

use of org.apache.tapestry5.annotations.Path in project tapestry-5 by apache.

the class ClasspathAssetRequestHandler method handleAssetRequest.

public boolean handleAssetRequest(Request request, Response response, String extraPath) throws IOException {
    ChecksumPath path = new ChecksumPath(streamer, baseFolder, extraPath);
    final boolean handled;
    if (classpathAssetProtectionRule.block(path.resourcePath) && !path.resourcePath.equals(ChecksumPath.NON_EXISTING_RESOURCE)) {
        if (LOGGER.isWarnEnabled()) {
            LOGGER.warn("Blocked request for classpath asset '" + path.resourcePath + "'. Contribute a new ClasspathAssetProtectionRule if you need this asset to be publicly accessible.");
        }
        handled = false;
    } else {
        Resource resource = assetSource.resourceForPath(path.resourcePath);
        handled = path.stream(resource);
    }
    return handled;
}
Also used : Resource(org.apache.tapestry5.commons.Resource)

Example 19 with Path

use of org.apache.tapestry5.annotations.Path in project tapestry-5 by apache.

the class ComponentEventLinkEncoderImplTest method page_requires_whitelist_and_client_on_whitelist.

@Test
public void page_requires_whitelist_and_client_on_whitelist() throws Exception {
    ComponentClassResolver resolver = mockComponentClassResolver();
    Request request = mockRequest(false);
    LocalizationSetter ls = mockLocalizationSetter();
    MetaDataLocator metaDataLocator = mockMetaDataLocator();
    ClientWhitelist whitelist = newMock(ClientWhitelist.class);
    String path = "/foo/Bar";
    train_getPath(request, path);
    train_setLocaleFromLocaleName(ls, "foo", false);
    train_isPageName(resolver, "foo/Bar", true);
    train_canonicalizePageName(resolver, "foo/Bar", "foo/bar");
    expect(metaDataLocator.findMeta(MetaDataConstants.WHITELIST_ONLY_PAGE, "foo/bar", boolean.class)).andReturn(true);
    expect(whitelist.isClientRequestOnWhitelist()).andReturn(true);
    replay();
    ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, null, null, null, null, true, null, "", metaDataLocator, whitelist);
    PageRenderRequestParameters parameters = linkEncoder.decodePageRenderRequest(request);
    assertEquals(parameters.getLogicalPageName(), "foo/bar");
    assertEquals(parameters.getActivationContext().getCount(), 0);
    assertFalse(parameters.isLoopback());
    verify();
}
Also used : ClientWhitelist(org.apache.tapestry5.services.security.ClientWhitelist) PageRenderRequestParameters(org.apache.tapestry5.services.PageRenderRequestParameters) ComponentClassResolver(org.apache.tapestry5.services.ComponentClassResolver) Request(org.apache.tapestry5.http.services.Request) LocalizationSetter(org.apache.tapestry5.services.LocalizationSetter) MetaDataLocator(org.apache.tapestry5.services.MetaDataLocator) Test(org.testng.annotations.Test)

Example 20 with Path

use of org.apache.tapestry5.annotations.Path in project tapestry-5 by apache.

the class ComponentEventLinkEncoderImplTest method no_extra_context.

private void no_extra_context(boolean finalSlash) throws Exception {
    ComponentClassResolver resolver = mockComponentClassResolver();
    Request request = mockRequest(false);
    LocalizationSetter ls = mockLocalizationSetter();
    MetaDataLocator metaDataLocator = neverWhitelistProtected();
    String path = "/foo/Bar" + (finalSlash ? "/" : "");
    train_getPath(request, path);
    train_setLocaleFromLocaleName(ls, "foo", false);
    train_isPageName(resolver, "foo/Bar", true);
    train_canonicalizePageName(resolver, "foo/Bar", "foo/bar");
    replay();
    ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, null, null, null, null, true, null, "", metaDataLocator, null);
    PageRenderRequestParameters parameters = linkEncoder.decodePageRenderRequest(request);
    assertEquals(parameters.getLogicalPageName(), "foo/bar");
    assertEquals(parameters.getActivationContext().getCount(), 0);
    assertFalse(parameters.isLoopback());
    verify();
}
Also used : PageRenderRequestParameters(org.apache.tapestry5.services.PageRenderRequestParameters) ComponentClassResolver(org.apache.tapestry5.services.ComponentClassResolver) Request(org.apache.tapestry5.http.services.Request) LocalizationSetter(org.apache.tapestry5.services.LocalizationSetter) MetaDataLocator(org.apache.tapestry5.services.MetaDataLocator)

Aggregations

Test (org.testng.annotations.Test)22 Request (org.apache.tapestry5.http.services.Request)14 Context (org.apache.tapestry5.http.services.Context)9 Resource (org.apache.tapestry5.commons.Resource)8 Path (io.fabric8.annotations.Path)6 IOException (java.io.IOException)6 URL (java.net.URL)6 HttpServletResponse (javax.servlet.http.HttpServletResponse)6 RequestFilter (org.apache.tapestry5.http.services.RequestFilter)5 RequestHandler (org.apache.tapestry5.http.services.RequestHandler)5 Response (org.apache.tapestry5.http.services.Response)5 ComponentClassResolver (org.apache.tapestry5.services.ComponentClassResolver)5 LocalizationSetter (org.apache.tapestry5.services.LocalizationSetter)5 MetaDataLocator (org.apache.tapestry5.services.MetaDataLocator)5 PageRenderRequestParameters (org.apache.tapestry5.services.PageRenderRequestParameters)5 Configuration (io.fabric8.annotations.Configuration)4 Endpoint (io.fabric8.annotations.Endpoint)4 External (io.fabric8.annotations.External)4 PortName (io.fabric8.annotations.PortName)4 Protocol (io.fabric8.annotations.Protocol)4