diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
index e973ce6329e05b6fd9062eafd0944862ae94308a..8c2c073737bae7e38661717e3ec8a80e3acd5c2f 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
@@ -2844,8 +2844,15 @@ public class DefaultCodegen implements CodegenConfig {
             codegenParameter.vendorExtensions.putAll(parameter.getExtensions());
         }
 
-        if (parameter.getSchema() != null) {
-            Schema parameterSchema = ModelUtils.unaliasSchema(this.openAPI, parameter.getSchema());
+        if (parameter.getSchema() != null || parameter.getContent() != null) {
+            Schema parameterSchema = null;
+            if (parameter.getSchema() != null) {
+                parameterSchema = ModelUtils.unaliasSchema(this.openAPI, parameter.getSchema());
+            } else if (parameter.getContent().values().stream().findFirst().isPresent()) {
+                MediaType mediaType = parameter.getContent().values().stream().findFirst().get();
+                parameterSchema = ModelUtils.getReferencedSchema(openAPI, mediaType.getSchema());
+            }
+            
             if (parameterSchema == null) {
                 LOGGER.warn("warning!  Schema not found for parameter \"" + parameter.getName() + "\", using String");
                 parameterSchema = new StringSchema().description("//TODO automatically added by openapi-generator due to missing type definition.");
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java
index efdf43561c9ff6817c5a1d58bb0bdd3f6181052c..b90f440cb00949ae512c5c4adfa15262c57ddee2 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java
@@ -37,8 +37,11 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.regex.Matcher;
 import java.util.stream.Collectors;
 
+import java.util.regex.Pattern;
+
 
 public class ModelUtils {
     private static final Logger LOGGER = LoggerFactory.getLogger(ModelUtils.class);
@@ -227,6 +230,7 @@ public class ModelUtils {
         }
     }
 
+    
     private static void visitSchema(OpenAPI openAPI, Schema schema, String mimeType, List<String> visitedSchemas, OpenAPISchemaVisitor visitor) {
         visitor.visit(schema, mimeType);
         if (schema.get$ref() != null) {
@@ -287,9 +291,8 @@ public class ModelUtils {
     }
 
     public static String getSimpleRef(String ref) {
-        if (ref.startsWith("#/components/")) {
-            ref = ref.substring(ref.lastIndexOf("/") + 1);
-        } else if (ref.startsWith("#/definitions/")) {
+        Pattern refPattern = Pattern.compile("((\\./)?.*)?#/(components|definitions)/.*");
+        if (refPattern.matcher(ref).matches()) {
             ref = ref.substring(ref.lastIndexOf("/") + 1);
         } else {
             LOGGER.warn("Failed to get the schema name: {}", ref);