@Override public ModelMetricsListSchemaV3 fillFromImpl(ModelMetricsList mml) { // TODO: this is failing in PojoUtils with an IllegalAccessException. Why? Different class // loaders? // PojoUtils.copyProperties(this, m, PojoUtils.FieldNaming.CONSISTENT); // Shouldn't need to do this manually. . . this.model = (mml._model == null ? null : new KeyV3.ModelKeyV3(mml._model._key)); this.frame = (mml._frame == null ? null : new KeyV3.FrameKeyV3(mml._frame._key)); this.predictions_frame = (mml._predictions_name == null ? null : new KeyV3.FrameKeyV3(Key.<Frame>make(mml._predictions_name))); this.reconstruction_error = mml._reconstruction_error; this.reconstruction_error_per_feature = mml._reconstruction_error_per_feature; this.deep_features_hidden_layer = mml._deep_features_hidden_layer; this.reconstruct_train = mml._reconstruct_train; this.project_archetypes = mml._project_archetypes; this.reverse_transform = mml._reverse_transform; this.leaf_node_assignment = mml._leaf_node_assignment; if (null != mml._model_metrics) { this.model_metrics = new ModelMetricsBase[mml._model_metrics.length]; for (int i = 0; i < model_metrics.length; i++) { ModelMetrics mm = mml._model_metrics[i]; this.model_metrics[i] = (ModelMetricsBase) Schema.schema(3, mm.getClass()).fillFromImpl(mm); } } else { this.model_metrics = new ModelMetricsBase[0]; } return this; }
@SuppressWarnings("unused") // called through reflection by RequestServer public JobsV3 fetch(int version, JobsV3 s) { Key key = s.job_id.key(); Value val = DKV.get(key); if (null == val) throw new IllegalArgumentException("Job is missing"); Iced ice = val.get(); if (!(ice instanceof Job)) throw new IllegalArgumentException("Must be a Job not a " + ice.getClass()); Job j = (Job) ice; s.jobs = new JobV3[1]; // s.fillFromImpl(jobs); try { s.jobs[0] = (JobV3) Schema.schema(version, j).fillFromImpl(j); } // no special schema for this job subclass, so fall back to JobV3 catch (H2ONotFoundArgumentException e) { s.jobs[0] = new JobV3().fillFromImpl(j); } return s; }
/** * Impl class for a collection of jobs; only used in the API to make it easier to cons up the jobs * array via the magic of PojoUtils.copyProperties. */ @SuppressWarnings("unused") // called through reflection by RequestServer public JobsV3 list(int version, JobsV3 s) { Job[] jobs = Job.jobs(); // Jobs j = new Jobs(); // j._jobs = Job.jobs(); // PojoUtils.copyProperties(s, j, PojoUtils.FieldNaming.ORIGIN_HAS_UNDERSCORES); s.jobs = new JobV3[jobs.length]; int i = 0; for (Job j : jobs) { try { s.jobs[i] = (JobV3) Schema.schema(version, j).fillFromImpl(j); } // no special schema for this job subclass, so fall back to JobV3 catch (H2ONotFoundArgumentException e) { s.jobs[i] = new JobV3().fillFromImpl(j); } i++; // Java does the increment before the function call which throws?! } return s; }