You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by mm...@apache.org on 2005/01/25 19:56:37 UTC
svn commit: r126410 - in incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181: model processor/apt
Author: mmerz
Date: Tue Jan 25 10:56:36 2005
New Revision: 126410
URL: http://svn.apache.org/viewcvs?view=rev&rev=126410
Log:
Moved object model validation into Jsr181TypeMetadataImpl.
Modified:
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadata.java
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadataImpl.java
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/processor/apt/WsmAnnotationProcessor.java
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadata.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadata.java?view=diff&rev=126410&p1=incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadata.java&r1=126409&p2=incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadata.java&r2=126410
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadata.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadata.java Tue Jan 25 10:56:36 2005
@@ -25,8 +25,10 @@
import javax.jws.HandlerChain;
import javax.jws.WebService;
+
import javax.jws.security.SecurityIdentity;
import javax.jws.security.SecurityRoles;
+
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPMessageHandler;
import javax.jws.soap.SOAPMessageHandlers;
@@ -35,6 +37,8 @@
import org.apache.xmlbeans.XmlException;
+import org.apache.beehive.wsm.jsr181.model.java.JavaTypeInfo;
+
/**
* @author Daryoush
*/
@@ -94,5 +98,5 @@
String getClassName();
void setClassName(String className);
- void merge(Jsr181TypeMetadata objectModel) throws Exception;
+ void merge(JavaTypeInfo jt) throws Exception;
}
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadataImpl.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadataImpl.java?view=diff&rev=126410&p1=incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadataImpl.java&r1=126409&p2=incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadataImpl.java&r2=126410
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadataImpl.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/model/Jsr181TypeMetadataImpl.java Tue Jan 25 10:56:36 2005
@@ -821,7 +821,6 @@
* only the @WebService.endpointInterface and @WebService.serviceName are
* relevant.
* @throws Exception
- */
public void merge(Jsr181TypeMetadata objectModel) throws Exception {
// check if this has endpointInterface --> error
@@ -844,7 +843,71 @@
setClassName(objectModel.getClassName());
}
+ */
+ /**
+ * @param jt SIB type info.
+ * @throws Exception
+ */
+ public void merge(JavaTypeInfo jt) throws Exception {
+
+ // check if this has endpointInterface --> error
+ String myEndpointInterface = getWsEndpointInterface();
+ if (null != myEndpointInterface && 0 < myEndpointInterface.length())
+ throw new ValidationException("service endpoint interface can't reference another service endpoint interface: " + myEndpointInterface);
+
+ // check if objectModel doesn't reference this endpointInterface --> error
+ Jsr181TypeMetadata sibObjectModel = new Jsr181TypeMetadataImpl(jt);
+ String omEndpointInterface = sibObjectModel.getWsEndpointInterface();
+ if (null == omEndpointInterface || 0 >= omEndpointInterface.length() || ! omEndpointInterface.equals(getClassName()))
+ throw new Exception("Internal error: object model for " + sibObjectModel.getClassName() + " does not reference endpoint interface "+ omEndpointInterface);
+
+ // check if objectModel.wsWsdlLocation != null --> error
+ if (null != sibObjectModel.getWsWsdlLocation() && 0 < sibObjectModel.getWsWsdlLocation().length()) {
+ throw new Exception("implementation bean must not reference a service endpoint interface and a WSDL location at the same time");
+ }
+
+ setWsServiceName(sibObjectModel.getWsServiceName());
+ setWsEndpointInterface(sibObjectModel.getWsEndpointInterface());
+
+ setClassName(sibObjectModel.getClassName());
+
+ // check if jt implements the contract
+ validateContract(jt);
+ }
+
+ /**
+ * @param jt SIB type info.
+ * @throws ValidationException
+ */
+ protected void validateContract(JavaTypeInfo jt) throws ValidationException {
+
+ // get all implemented methods
+ Collection<Jsr181MethodMetadata> implementedMethods = new HashSet<Jsr181MethodMetadata>();
+ for (JavaMethodInfo jm : jt.getMethods()) {
+ try {
+ implementedMethods.add(new Jsr181MethodMetadataImpl(jm));
+ }
+ catch (Throwable t) {
+ throw new ValidationException("invalid method declaration found: " + jt.getName() + ": " + jm.getMethodName());
+ }
+ }
+
+ // check if we implement all required methods
+ for (Jsr181MethodMetadata declaredMethod : getMethods()) {
+ boolean implementationFound = false;
+ for (Jsr181MethodMetadata implementedMethod : implementedMethods) {
+ if (implementedMethod.equals(declaredMethod)) {
+ implementationFound = true;
+ break;
+ }
+ }
+ if (! implementationFound) {
+ throw new ValidationException("method not implemented by " + jt.getName() + ": " + declaredMethod);
+ }
+ }
+ }
+
/**
* Encapsulates the encoding of the pathname for object models.
* @param
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/processor/apt/WsmAnnotationProcessor.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/processor/apt/WsmAnnotationProcessor.java?view=diff&rev=126410&p1=incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/processor/apt/WsmAnnotationProcessor.java&r1=126409&p2=incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/processor/apt/WsmAnnotationProcessor.java&r2=126410
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/processor/apt/WsmAnnotationProcessor.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/jsr181/processor/apt/WsmAnnotationProcessor.java Tue Jan 25 10:56:36 2005
@@ -18,37 +18,22 @@
* $Header:$
*/
-import java.io.File;
-import java.io.IOException;
-
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
import java.util.Set;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
-
import com.sun.mirror.apt.AnnotationProcessorEnvironment;
import com.sun.mirror.apt.Filer;
import com.sun.mirror.apt.Messager;
-import com.sun.mirror.declaration.AnnotationMirror;
import com.sun.mirror.declaration.AnnotationTypeDeclaration;
import com.sun.mirror.declaration.ClassDeclaration;
-import com.sun.mirror.declaration.ConstructorDeclaration;
import com.sun.mirror.declaration.Declaration;
import com.sun.mirror.declaration.InterfaceDeclaration;
-import com.sun.mirror.declaration.MethodDeclaration;
-import com.sun.mirror.declaration.ParameterDeclaration;
import com.sun.mirror.declaration.TypeDeclaration;
-import org.apache.beehive.wsm.jsr181.model.Jsr181MethodMetadata;
-import org.apache.beehive.wsm.jsr181.model.Jsr181MethodMetadataImpl;
+import javax.jws.WebService;
+
import org.apache.beehive.wsm.jsr181.model.Jsr181TypeMetadata;
import org.apache.beehive.wsm.jsr181.model.Jsr181TypeMetadataImpl;
@@ -94,8 +79,7 @@
}
WebService wsAnnotation = _decl.getAnnotation(WebService.class);
if (null == wsAnnotation) {
- messager.printWarning(_decl.getPosition(), "@WebService annotation missing; unable to process: " + ((TypeDeclaration) _decl).getQualifiedName());
- return;
+ messager.printError(_decl.getPosition(), "@WebService annotation missing; unable to process: " + ((TypeDeclaration) _decl).getQualifiedName());
}
// store declaration so we don't handle it multiple times
@@ -116,15 +100,7 @@
om = getEndpointInterfaceObjectModel(endpointInterface);
// merge abstract and concrete object models
- Jsr181TypeMetadata com = new Jsr181TypeMetadataImpl(new MirrorTypeInfo(classDecl));
- if (null == com) {
- messager.printError(classDecl.getPosition(), "cannot load object model for service implementation bean: " + classDecl.getQualifiedName());
- return;
- }
- om.merge(com);
-
- // validate concrete object model against the contract (service endpoint interface)
- validate(om, classDecl);
+ om.merge(new MirrorTypeInfo(classDecl));
}
// create object model from scratch
@@ -199,40 +175,5 @@
}
return om;
- }
-
- /**
- * todo: should this go into Jsr181TypeMetadataImpl
- */
- protected void validate(Jsr181TypeMetadata objectModel, ClassDeclaration classDecl) {
-
- // check if we have a service endpoint interface
- String endpointInterface = objectModel.getWsEndpointInterface();
- if (null == endpointInterface && 0 >= endpointInterface.length()) {
- return;
- }
-
- Collection<Jsr181MethodMetadata> implementedMethods =
- new HashSet<Jsr181MethodMetadata>();
- for (MethodDeclaration impl : classDecl.getMethods()) {
- try {
- implementedMethods.add(new Jsr181MethodMetadataImpl(new MirrorMethodInfo(impl)));
- }
- catch (Throwable t) {
- _env.getMessager().printError(classDecl.getPosition(), "Invalid method declaration found: " + classDecl.getSimpleName() + ": " + impl);
- }
- }
- for (Jsr181MethodMetadata methodDecl : objectModel.getMethods()) {
- boolean foundImpl = false;
- for (Jsr181MethodMetadata methodImpl : implementedMethods) {
- if (methodImpl.equals(methodDecl)) {
- foundImpl = true;
- break;
- }
- }
- if (! foundImpl) {
- _env.getMessager().printError(classDecl.getPosition(), "Method not implemented by " + classDecl.getSimpleName() + ": " + methodDecl);
- }
- }
}
}