@Override public String convertUnwrappedObject(Object unwrapped) throws TemplateModelException { if (unwrapped instanceof Accessor) { return convert((Accessor) unwrapped); } else if (unwrapped instanceof ImplicitChildElement) { return convert((ImplicitChildElement) unwrapped); } else { return super.convertUnwrappedObject(unwrapped); } }
public JavaClientValidator(Set<String> serverSideTypesToUse, Map<String, String> packageConversions) { this.serverSideTypesToUse = serverSideTypesToUse; this.clientConversion = new ClientClassnameForMethod(packageConversions); }
@Override public String convert(TypeDeclaration declaration) throws TemplateModelException { AdapterType adapterType = AdapterUtil.findAdapterType(declaration); if (adapterType != null) { return convert(adapterType.getAdaptingType()); } if (declaration instanceof ClassDeclaration) { DecoratedTypeMirror superType = (DecoratedTypeMirror) TypeMirrorDecorator.decorate(((ClassDeclaration) declaration).getSuperclass()); if (superType != null && superType.isInstanceOf(JAXBElement.class.getName())) { //for client conversions, we're going to generalize subclasses of JAXBElement to JAXBElement return convert(superType); } } String convertedPackage = convertPackage(declaration.getPackage()); ClientName specifiedName = isUseClientNameConversions() ? declaration.getAnnotation(ClientName.class) : null; String simpleName = specifiedName == null ? declaration.getSimpleName() : specifiedName.value(); return convertedPackage + getPackageSeparator() + simpleName; } }
@Override public String convert(TypeMirror typeMirror) throws TemplateModelException { boolean isArray = typeMirror instanceof ArrayType; String conversion = super.convert(typeMirror); //if we're using converting to a java 5+ client code, take into account the type arguments. if ((isJdk15()) && (typeMirror instanceof DeclaredType)) { DeclaredType declaredType = (DeclaredType) typeMirror; Collection<TypeMirror> actualTypeArguments = declaredType.getActualTypeArguments(); if (actualTypeArguments.size() > 0) { StringBuilder typeArgs = new StringBuilder("<"); Iterator<TypeMirror> it = actualTypeArguments.iterator(); while (it.hasNext()) { TypeMirror mirror = it.next(); typeArgs.append(convert(mirror)); if (it.hasNext()) { typeArgs.append(", "); } } typeArgs.append(">"); conversion += typeArgs; } } if (isArray) { conversion += "[]"; } return conversion; }
ClientClassnameForMethod classnameFor = new ClientClassnameForMethod(conversions); ComponentTypeForMethod componentTypeFor = new ComponentTypeForMethod(conversions); CollectionTypeForMethod collectionTypeFor = new CollectionTypeForMethod(conversions); String faultClass = classnameFor.convert(webFault); boolean implicit = webFault.isImplicitSchemaElement(); String faultBean = implicit ? getBeanName(classnameFor, webFault.getImplicitFaultBeanQualifiedName()) : classnameFor.convert(webFault.getExplicitFaultBean()); generatedTypeList.add(classnameFor.convert(typeDefinition)); classnameFor.setJdk15(true); componentTypeFor.setJdk15(true); collectionTypeFor.setJdk15(true);
ClientClassnameForMethod classnameFor = new ClientClassnameForMethod(conversions); ComponentTypeForMethod componentTypeFor = new ComponentTypeForMethod(conversions); CollectionTypeForMethod collectionTypeFor = new CollectionTypeForMethod(conversions); String faultClass = classnameFor.convert(webFault); boolean implicit = webFault.isImplicitSchemaElement(); String faultBean = implicit ? getBeanName(classnameFor, webFault.getImplicitFaultBeanQualifiedName()) : classnameFor.convert(webFault.getExplicitFaultBeanType()); generatedTypeList.add(classnameFor.convert(typeDefinition)); classnameFor.setJdk15(true); componentTypeFor.setJdk15(true); collectionTypeFor.setJdk15(true);
/** * Get the bean name for a specified string. * * @param conversion The conversion to use. * @param preconvert The pre-converted fqn. * @return The converted fqn. */ protected String getBeanName(ClientClassnameForMethod conversion, String preconvert) { String pckg = conversion.convert(preconvert.substring(0, preconvert.lastIndexOf('.'))); String simpleName = preconvert.substring(preconvert.lastIndexOf('.') + 1); return pckg + "." + simpleName; }
/** * Get the bean name for a specified string. * * @param conversion The conversion to use. * @param preconvert The pre-converted fqn. * @return The converted fqn. */ protected String getBeanName(ClientClassnameForMethod conversion, String preconvert) { String pckg = conversion.convert(preconvert.substring(0, preconvert.lastIndexOf('.'))); String simpleName = preconvert.substring(preconvert.lastIndexOf('.') + 1); return pckg + "." + simpleName; }
@Override public String convert(Accessor accessor) throws TemplateModelException { if (accessor.isXmlIDREF()) { return "String"; } return super.convert(accessor); }
@Override public String convert(Accessor accessor) throws TemplateModelException { if (accessor.isXmlIDREF()) { return "string"; } return super.convert(accessor); }
@Override public String convert(Accessor accessor) throws TemplateModelException { if (accessor.isXmlIDREF()) { return "string";//C# doesn't support strict object reference resolution via IDREF. The best we can do is (de)serialize the ID. } return super.convert(accessor); }
@Override public String convert(Accessor accessor) throws TemplateModelException { if (accessor.isXmlIDREF()) { return "String"; } return super.convert(accessor); }
@Override public String convert(TypeDeclaration declaration) throws TemplateModelException { if (classConversions.containsKey(declaration.getQualifiedName())) { return classConversions.get(declaration.getQualifiedName()); } return super.convert(declaration); } }
@Override public String convert(TypeDeclaration declaration) throws TemplateModelException { String fqn = declaration.getQualifiedName(); if (classConversions.containsKey(fqn)) { return classConversions.get(fqn); } else if (isCollection(declaration)) { return "xmlNode"; } return super.convert(declaration); }
@Override public String convert(TypeDeclaration declaration) { if (classConversions.containsKey(declaration.getQualifiedName())) { return classConversions.get(declaration.getQualifiedName()); } return declaration instanceof EnumDeclaration ? String.class.getName() : super.convert(declaration); } }
@Override public String convert(TypeDeclaration declaration) throws TemplateModelException { String fqn = declaration.getQualifiedName(); if (classConversions.containsKey(fqn)) { return classConversions.get(fqn); } else if (isCollection(declaration)) { return "global::System.Collections.ArrayList"; } return super.convert(declaration); }
@Override public String convert(TypeMirror typeMirror) throws TemplateModelException { if (typeMirror instanceof DeclaredType) { DeclaredType declaredType = ((DeclaredType) typeMirror); String fqn = declaredType.getDeclaration().getQualifiedName(); if (classConversions.containsKey(fqn)) { return classConversions.get(fqn); } } if (typeMirror instanceof EnumType) { return String.class.getName(); } return super.convert(typeMirror); }
@Override public String convert(Accessor accessor) throws TemplateModelException { if (accessor.isXmlIDREF()) { return "xmlChar"; } else if (accessor.isXmlList()) { return "xmlChar"; } return super.convert(accessor); }
@Override public ValidationResult validateRootElement(RootElementDeclaration elType) { ValidationResult result = super.validateRootElement(elType); if (!serverSideTypesToUse.isEmpty()) { try { if (!elType.getQualifiedName().equals(clientConversion.convert(elType))) { result.addError(elType, "If you're using server-side types in your client library, you can't convert the name of " + elType.getQualifiedName() + " to " + clientConversion.convert(elType) + "."); } } catch (TemplateModelException e) { throw new IllegalStateException(e); } } return result; } }
@Override public ValidationResult validateSimpleType(SimpleTypeDefinition simpleType) { ValidationResult result = super.validateSimpleType(simpleType); if (!serverSideTypesToUse.isEmpty()) { try { if (!simpleType.getQualifiedName().equals(clientConversion.convert(simpleType))) { result.addError(simpleType, "If you're using server-side types in your client library, you can't convert the name of " + simpleType.getQualifiedName() + " to " + clientConversion.convert(simpleType) + "."); } } catch (TemplateModelException e) { throw new IllegalStateException(e); } } return result; }