Skip to content

Commit 2281b55

Browse files
Add additional parameters to tweak schema serialization
1 parent c6d7be0 commit 2281b55

File tree

3 files changed

+62
-3
lines changed

3 files changed

+62
-3
lines changed

src/main/java/io/frictionlessdata/datapackage/resource/AbstractResource.java

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ public abstract class AbstractResource<T> extends JSONBase implements Resource<T
6767
@JsonIgnore
6868
boolean serializeToFile = true;
6969

70+
@JsonIgnore
71+
boolean serializeSchemaToFile = true;
72+
73+
@JsonIgnore
74+
boolean serializeFullSchema = false;
75+
7076
@JsonIgnore
7177
String serializationFormat;
7278

@@ -82,7 +88,7 @@ public abstract class AbstractResource<T> extends JSONBase implements Resource<T
8288

8389
@JsonProperty(JSON_KEY_SCHEMA)
8490
public Object getSchemaForJson() {
85-
if (originalReferences.containsKey(JSON_KEY_SCHEMA)) {
91+
if (originalReferences.containsKey(JSON_KEY_SCHEMA) && !this.shouldSerializeFullSchema()) {
8692
return originalReferences.get(JSON_KEY_SCHEMA);
8793
}
8894
if (null != schema) {
@@ -593,7 +599,9 @@ public String getPathForWritingDialect() {
593599
*/
594600
private String getPathForWritingSchemaOrDialect(String key, Object objectWithRes, FileReference reference) {
595601
// write out schema file only if not null or URL
596-
if (null == objectWithRes) {
602+
if (!this.shouldSerializeSchemaToFile()) {
603+
return null;
604+
} else if (null == objectWithRes) {
597605
return null;
598606
} else if ((reference instanceof URLFileReference)){
599607
return null;
@@ -691,11 +699,33 @@ public boolean shouldSerializeToFile() {
691699
return serializeToFile;
692700
}
693701

702+
@Override
703+
@JsonIgnore
704+
public boolean shouldSerializeSchemaToFile() {
705+
return serializeSchemaToFile;
706+
}
707+
708+
@Override
709+
@JsonIgnore
710+
public boolean shouldSerializeFullSchema() {
711+
return serializeFullSchema;
712+
}
713+
694714
@Override
695715
public void setShouldSerializeToFile(boolean serializeToFile) {
696716
this.serializeToFile = serializeToFile;
697717
}
698718

719+
@Override
720+
public void setShouldSerializeSchemaToFile(boolean serializeSchemaToFile) {
721+
this.serializeSchemaToFile = serializeSchemaToFile;
722+
}
723+
724+
@Override
725+
public void setShouldSerializeFullSchema(boolean serializeFullSchema) {
726+
this.serializeFullSchema = serializeFullSchema;
727+
}
728+
699729
@Override
700730
public void setSerializationFormat(String format) {
701731
if ((format.equals(TableDataSource.Format.FORMAT_JSON.getLabel()))

src/main/java/io/frictionlessdata/datapackage/resource/Resource.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,19 @@ public interface Resource<T> extends BaseInterface {
329329
boolean shouldSerializeToFile();
330330

331331
@JsonIgnore
332-
void setShouldSerializeToFile(boolean serializeToFile);
332+
void setShouldSerializeToFile(boolean serializeSchemaToFile);
333+
334+
@JsonIgnore
335+
boolean shouldSerializeSchemaToFile();
336+
337+
@JsonIgnore
338+
boolean shouldSerializeFullSchema();
339+
340+
@JsonIgnore
341+
void setShouldSerializeSchemaToFile(boolean serializeSchemaToFile);
342+
343+
@JsonIgnore
344+
void setShouldSerializeFullSchema(boolean serializeSchemaToFile);
333345

334346
/**
335347
* Sets the format (either CSV or JSON) for serializing the Resource content to File.

src/test/java/io/frictionlessdata/datapackage/resource/NonTabularResourceTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,10 +462,27 @@ public boolean shouldSerializeToFile() {
462462
return true;
463463
}
464464

465+
@Override
466+
public boolean shouldSerializeSchemaToFile() {
467+
return true;
468+
}
469+
470+
@Override
471+
public boolean shouldSerializeFullSchema() {
472+
return false;
473+
}
474+
465475
@Override
466476
public void setShouldSerializeToFile(boolean b) {
467477
}
468478

479+
@Override
480+
public void setShouldSerializeSchemaToFile(boolean b) {
481+
}
482+
483+
@Override
484+
public void setShouldSerializeFullSchema(boolean b) {}
485+
469486
@Override
470487
public void setSerializationFormat(String s) {
471488
throw new UnsupportedOperationException("Not supported on non-tabular Resources");

0 commit comments

Comments
 (0)