/** * Copyright 2013 Red Hat, Inc. and/or its affiliates. * * Licensed under the Eclipse Public License version 1.0, available at * http://www.eclipse.org/legal/epl-v10.html */ package org.jboss.forge.addon.angularjs; import java.io.FileNotFoundException; import javax.ws.rs.Path; import org.jboss.forge.addon.parser.java.resources.JavaResource; import org.jboss.forge.addon.parser.java.resources.JavaResourceVisitor; import org.jboss.forge.addon.resource.visit.VisitContext; import org.jboss.forge.roaster.model.JavaClass; import org.jboss.forge.roaster.model.source.JavaSource; /** * A {@link JavaResourceVisitor} that inspects {@link JavaResource}s and verifies whether they are JAX-RS Resources that * employ the same conventions as the ones generated by the Forge REST plugin. */ class ResourcePathVisitor extends JavaResourceVisitor { private String entityName; private String path = null; private boolean found = false; public ResourcePathVisitor(String entityName) { this.entityName = entityName; } @Override public void visit(VisitContext context, JavaResource javaResource) { if (!found) { try { JavaSource<?> javaSource = javaResource.getJavaType(); if (javaSource instanceof JavaClass) { JavaClass<?> javaClass = (JavaClass<?>) javaSource; if (javaClass.getName().equals(entityName + "Endpoint") && javaClass.hasAnnotation(Path.class)) { this.path = javaClass.getAnnotation(Path.class).getStringValue(); found = true; } } } catch (FileNotFoundException e) { throw new RuntimeException(e); } } } public String getPath() { return path; } }