private void writeServiceLocator(Locator locator) { writer.writeStartElement("locator"); writeCommon(locator); writeServiceRef(locator.getService()); locator.parameters().forEach(this::writeParameter); writer.writeEndElement(); }
private String getUrlSegment(Locator locator) { Optional<Parameter> parameter = locator.parameters().findFirst(); String segment = names.getLowerJoined(locator.getName(), ""); if (parameter.isPresent()) { segment = String.format("{%s:%s}", segment, names.getLowerJoined(parameter.get().getName(), "")); } return segment; }
private void generateLocator(Locator locator) { if (locator.getParameters().isEmpty()) { generateParameterlessLocator(locator); } else { generateParameterizedLocator(locator); } }
private void generateParameterlessLocator(Locator locator) { // Calculate the Java name of the service located by the given locator: JavaClassName interfaceName = jaxrsNames.getInterfaceName(locator.getService()); // Generate the imports: javaBuffer.addImport(Path.class); javaBuffer.addImport(PathParam.class); javaBuffer.addImport(interfaceName); // Generate the locator method: generateDoc(locator); javaBuffer.addLine( "@Path(\"%s\")", jaxrsNames.getActionPath(locator.getName()) ); javaBuffer.addLine( "%s get%sResource();", interfaceName.getSimpleName(), javaNames.getJavaClassStyleName(locator.getName()) ); javaBuffer.addLine(); }
paths.add(current); int size = current.size(); Service service = current.get(size - 1).getService(); service.locators().forEach(locator -> { List<Locator> next = new ArrayList<>(current); int size = path.size(); if (size > 0) { Service service = path.get(size -1).getService(); service.methods() .filter(method -> method.getBase() == null)
private void analyzeServiceLocator(JavaMethod javaMethod, Service service) { // Create the locator: Locator locator = new Locator(); analyzeName(javaMethod, locator); analyzeAnnotations(javaMethod, locator); analyzeDocumentation(javaMethod, locator); // Analyze the parameters: javaMethod.getParameters().forEach(x -> analyzeLocatorParameter(x, locator)); // Get the referenced service: assignServiceReference(javaMethod.getReturns(), locator::setService); // Add the parameter to the method: service.addLocator(locator); }
private void analyzeLocatorParameter(JavaParameter javaParameter, Locator locator) { // Create the parameter: Parameter parameter = new Parameter(); analyzeName(javaParameter, parameter); analyzeAnnotations(javaParameter, parameter); analyzeDocumentation(javaParameter, parameter); // Get the type: assignTypeReference(javaParameter.getJavaClass(), parameter::setType); // Add the parameter to the locator: locator.addParameter(parameter); }
private void generateParameterizedLocator(Locator locator) { // Calculate the Java name of the service located by the given locator: JavaClassName interfaceName = jaxrsNames.getInterfaceName(locator.getService()); // Generate the imports: javaBuffer.addImport(Path.class); javaBuffer.addImport(PathParam.class); javaBuffer.addImport(interfaceName); // Generate the locator method: generateDoc(locator); javaBuffer.addLine("@Path(\"{id}\")"); javaBuffer.addLine( "%s get%sResource(@PathParam(\"id\") String id);", interfaceName.getSimpleName(), javaNames.getJavaClassStyleName(locator.getName()) ); javaBuffer.addLine(); }
private void documentRequest(Point point) { Method method = point.getMethod(); Service service = method.getDeclaringService(); StringBuilder buffer = new StringBuilder(); buffer.append(String.format("* <<%s,%s>> ", getId(service, method), getHttpMethod(method))); point.path().forEach(locator -> { buffer.append("/"); String link = String.format("<<%s,%s>>", getId(locator.getService()), getUrlSegment(locator)); buffer.append(link); }); if (method.isAction()) { buffer.append("/"); String link = String.format("<<%s,%s>>", getId(service), getUrlSegment(method)); buffer.append(link); } docBuffer.addLine(buffer.toString()); }
private void writeServiceLocator(Locator locator) { writer.writeStartObject(); writeCommon(locator); writeServiceRef(locator.getService()); writer.writeStartArray("parameters"); locator.parameters().forEach(this::writeParameter); writer.writeEnd(); writer.writeEnd(); }